|
1 | 1 | # DevCodex |
2 | 2 |
|
3 | | -> 把可执行的 AI 开发流程装进 Copilot / Claude Code / Codex / Gemini / **Grok** |
4 | | -> **用户级全局 adapter** + 工作区 `.devcodex` 运行态 · Hook 优先 · Instruction 回退 |
5 | | -
|
6 | 3 | [](LICENSE) |
7 | 4 |
|
8 | | -> **安装真相(请先读)** |
9 | | -> - **当前主路径**:从源码根 `npm install -g .` + `npm run global-adapters:apply`(未发版或要最新时用这个)。 |
10 | | -> - **npm 公开包** `npm install -g devcodex`:仅当你确认 registry 上的版本与本文档/源码一致时再使用;**不要**假设 npm 上一定是本仓库最新提交。 |
11 | | -> - 历史包名 `@vextjs/devcodex` 请卸载,避免 PATH 指到旧 CLI。 |
12 | | -
|
13 | | ---- |
14 | | - |
15 | | -## DevCodex 是什么? |
| 5 | +DevCodex 是面向 AI 编程宿主的工作流运行时和宿主适配包。它通过 npm 安装到用户环境,将同一套任务路由、Skill 加载、Hook / 指令适配、报告和记忆写入机制接入 Codex、Claude Code、GitHub Copilot、Gemini CLI 和 Grok。 |
16 | 6 |
|
17 | | -DevCodex 把五宿主的配置、Hooks、Skills 与指令投影写到各 AI 宿主的**用户级目录**;业务仓库里主要保留工作区运行态 **`.devcodex/`**。 |
| 7 | +安装完成后,DevCodex 在新会话中按用户请求的意图进入开发、修复、分析、审计等流程,并按需加载内置 Skill 或工作区 Skill。不同宿主的 Hook、指令和插件能力不完全相同;DevCodex 会按宿主能力使用可用的执行方式,并在能力不足时退回指令约束。 |
18 | 8 |
|
19 | | -它帮助 AI: |
| 9 | +DevCodex 不替代业务框架、GitHub CI、安全审计或人工评审。它也不接管 Codex、Claude Code 等宿主原有的个人 Skill、项目指令或配置文件。 |
20 | 10 |
|
21 | | -- 按意图走 `dev` / `fix` / `analyze` / `audit` 等流程 |
22 | | -- 在支持 Hooks 的宿主上拦截危险命令、做收口检查 |
23 | | -- 把报告与会话记忆落到工作区,而不是只留在聊天窗口 |
24 | | - |
25 | | -**不是**通用聊天机器人,也不是替代你的业务框架。 |
| 11 | +## DevCodex 是什么? |
26 | 12 |
|
27 | | ---- |
| 13 | +DevCodex 给五个宿主提供同一套开发工作流入口: |
28 | 14 |
|
29 | | -## 5 分钟开始 |
| 15 | +- Codex |
| 16 | +- Claude Code |
| 17 | +- GitHub Copilot |
| 18 | +- Gemini CLI |
| 19 | +- Grok |
30 | 20 |
|
31 | | -### 1. 环境 |
| 21 | +它主要处理四件事: |
32 | 22 |
|
33 | | -- **Node.js**:建议 `>=18`(维护者本地文档站另需 `^20.19 || >=22.12`,见下文) |
34 | | -- 装完或刷新 adapter 后,请在宿主里 **新开一轮会话** |
| 23 | +1. 按用户请求识别任务意图,例如开发、修复、分析、审计。 |
| 24 | +2. 按需加载 DevCodex 内置 Skill 或当前项目的工作区 Skill。 |
| 25 | +3. 在宿主支持时使用 Hook;宿主能力不足时使用指令约束作为回退。 |
| 26 | +4. 将关键过程写入当前项目的报告和记忆。 |
35 | 27 |
|
36 | | -### 2. 安装(推荐:源码全局) |
| 28 | +## 系统要求 |
37 | 29 |
|
38 | | -在 **本仓库源码根**(含 `package.json` / `skills/` 的目录): |
| 30 | +- Node.js `>=18` |
| 31 | +- npm |
| 32 | +- 至少一个受支持的 AI 编程宿主:Codex、Claude Code、GitHub Copilot、Gemini CLI 或 Grok |
39 | 33 |
|
40 | | -```bash |
41 | | -npm install -g . |
42 | | -npm run global-adapters:apply |
43 | | -devcodex --version |
44 | | -devcodex doctor |
45 | | -``` |
| 34 | +## 安装 Node.js |
46 | 35 |
|
47 | | -Windows + Volta 若仍指向旧包: |
| 36 | +先确认本机是否已有 Node.js 和 npm: |
48 | 37 |
|
49 | 38 | ```bash |
50 | | -npm uninstall -g @vextjs/devcodex |
51 | | -npm install -g . |
| 39 | +node -v |
| 40 | +npm -v |
52 | 41 | ``` |
53 | 42 |
|
54 | | -**仅当 npm 上版本可信时:** |
| 43 | +如果命令不存在,安装 Node.js LTS: |
55 | 44 |
|
56 | | -```bash |
57 | | -npm install -g devcodex |
58 | | -``` |
| 45 | +- Windows / macOS:从 [Node.js 官方下载页](https://nodejs.org/en/download)安装 LTS 版本。 |
| 46 | +- macOS / Linux:也可以使用 nvm、fnm、asdf 等版本管理器安装 LTS 版本。 |
59 | 47 |
|
60 | | -### 3. 打开业务项目 |
| 48 | +安装后重新打开终端,再确认: |
61 | 49 |
|
62 | 50 | ```bash |
63 | | -cd <你的业务仓库根> |
64 | | -devcodex init # 只初始化工作区 .devcodex,不写全局宿主 |
| 51 | +node -v |
| 52 | +npm -v |
65 | 53 | ``` |
66 | 54 |
|
67 | | -再在 Codex / Claude / Copilot / Gemini / Grok 中打开该目录对话。 |
| 55 | +如果 Node.js 版本低于 18,请先升级 Node.js。 |
68 | 56 |
|
69 | | -### 4. 验证技能是否加载(可选) |
| 57 | +## 安装 |
70 | 58 |
|
71 | | -对话发送: |
| 59 | +安装前请确认 npm registry 上的版本与本文档对应;如果 registry 上的版本不是当前文档对应版本,不要把下面命令当作当前版本安装。 |
72 | 60 |
|
73 | | -```text |
74 | | -验证技能加载 |
| 61 | +```bash |
| 62 | +npm install -g devcodex |
| 63 | +devcodex --version |
75 | 64 | ``` |
76 | 65 |
|
77 | | -期望用户可见固定句: |
| 66 | +安装完成后,重新打开 Codex、Claude Code、GitHub Copilot、Gemini CLI 或 Grok 的新会话。 |
78 | 67 |
|
79 | | -```text |
80 | | -SKILL-LOAD-VERIFY-OK |
| 68 | +## 更新 |
| 69 | + |
| 70 | +```bash |
| 71 | +npm update -g devcodex |
| 72 | +devcodex --version |
81 | 73 | ``` |
82 | 74 |
|
83 | | -**不会**强制正文出现 `【DevCodex 技能】…` 元行;过程看宿主时间线即可。 |
| 75 | +更新完成后,重新打开宿主的新会话。 |
84 | 76 |
|
85 | | -CLI: |
| 77 | +## 卸载 |
86 | 78 |
|
87 | 79 | ```bash |
88 | | -devcodex skill resolve skill-load-verify |
89 | | -npm run test:skill-route |
| 80 | +npm uninstall -g devcodex |
90 | 81 | ``` |
91 | 82 |
|
92 | | ---- |
| 83 | +## 生效方式 |
93 | 84 |
|
94 | | -## 安装与刷新(必读) |
| 85 | +安装或更新 DevCodex 后,npm 会在安装生命周期中刷新用户级宿主适配。已打开的宿主会话通常不会回读刚更新的配置,因此需要重新打开一个新会话。 |
95 | 86 |
|
96 | | -| 命令 | 作用 | |
97 | | -|------|------| |
98 | | -| `npm install -g .` | **源码全局安装**(未发版/最新主路径) | |
99 | | -| `npm run global-adapters:apply` | 用当前包根刷新**用户级五宿主**(改 hooks/MCP 后必跑) | |
100 | | -| `npm install -g devcodex` | 仅 registry 版本可信时使用 | |
101 | | -| `devcodex init` / `update` | **只**管当前工作区 `.devcodex`,**不**写全局宿主 | |
102 | | -| `devcodex status` / `doctor` | 诊断安装与宿主就绪 | |
| 87 | +DevCodex 内置 Skill 随安装包一起提供。普通使用者不需要手动配置内置 Skill;新会话开始后,DevCodex 会按请求意图自动选择需要的 Skill。 |
103 | 88 |
|
104 | | -规则:**改宿主配置 → `global-adapters apply`;改业务工作区 → `init`/`update`。** |
105 | | -`.devcodex` 始终在项目/工作区,不会装进 npm global prefix。 |
| 89 | +## 添加自己的 Skill |
106 | 90 |
|
107 | | -`apply` 时还可能合并写入 VS Code 用户级 `mcp.json`(memory/profile MCP,若路径存在)。 |
| 91 | +如果你希望为某个项目增加自己的流程、检查清单或团队约定,在这个项目根目录下创建工作区 Skill。 |
108 | 92 |
|
109 | | ---- |
110 | | - |
111 | | -## 常用 CLI |
| 93 | +这里的“项目根目录”就是你用 Codex、Claude Code、GitHub Copilot、Gemini CLI 或 Grok 打开的业务项目目录。 |
112 | 94 |
|
113 | | -```bash |
114 | | -devcodex doctor |
115 | | -devcodex status |
116 | | -devcodex global-adapters apply |
117 | | -devcodex skill plan <id...> |
118 | | -devcodex skill resolve <id...> |
119 | | -devcodex grok # Grok Full 入口(有边界) |
120 | | -devcodex profile plan|init |
| 95 | +```text |
| 96 | +<你的项目根目录>/ |
| 97 | + .devcodex/ |
| 98 | + workspace/ |
| 99 | + skills/ |
| 100 | + <id>/ |
| 101 | + SKILL.md |
| 102 | + intent.json |
121 | 103 | ``` |
122 | 104 |
|
123 | | -完整列表:`devcodex --help`。 |
124 | | - |
125 | | ---- |
126 | | - |
127 | | -## 工作区布局(简) |
| 105 | +例如: |
128 | 106 |
|
129 | 107 | ```text |
130 | | -<workspace>/ |
| 108 | +my-app/ |
131 | 109 | .devcodex/ |
132 | | - layout.json # workspace-namespace |
133 | | - workspace/ # 工作区 skills、DEVCODEX.md |
134 | | - <project>/ # profile / reports / .memory / requirements |
| 110 | + workspace/ |
| 111 | + skills/ |
| 112 | + release-check/ |
| 113 | + SKILL.md |
| 114 | + intent.json |
135 | 115 | ``` |
136 | 116 |
|
137 | | -| 类型 | 路径 | |
138 | | -|------|------| |
139 | | -| 工作区 skill(W 优先) | `.devcodex/workspace/skills/<id>/SKILL.md` | |
140 | | -| 全局 skill(hidden) | `~/.agents/devcodex/skills/<id>/`(菜单可能不显示,仍可加载) | |
141 | | - |
142 | | -**未发布源码候选**:渐进式 Skill 路由是五宿主唯一默认路由。它会在每轮建立 W + managed G 动态快照,再按 catalog → commit → stage 分页加载正文;全程使用宿主按需启动的本地 stdio MCP 子进程,不监听端口,也不需要服务端。多项目工作区尚未解析出目标时先等待 Profile plan 绑定真实项目,不会把工作区目录名当成项目创建运行态。新增或修改 `.devcodex/workspace/skills/<id>/SKILL.md` 会让旧快照失效,并在下一轮重新发现。宿主生产证据继续作为发布后的可观测性材料,不再控制源码路由模式,也不阻塞功能完成。 |
143 | | - |
144 | | -Codex/Claude 等宿主自己的 `AGENTS.md`、`CLAUDE.md`、原生个人/项目 Skill 仍由宿主负责发现。DevCodex 不扫描、复制、合并、覆盖或删除这些用户资产;同名也不视为 DevCodex 所有权。Codex 项目指令使用 `AGENTS.md`(不是 `codex.md`),Claude 项目指令使用精确文件名 `CLAUDE.md`,Skill 入口使用精确文件名 `SKILL.md`。 |
| 117 | +`SKILL.md`: |
145 | 118 |
|
| 119 | +```md |
146 | 120 | --- |
147 | | - |
148 | | -## 宿主能力(诚实上限) |
149 | | - |
150 | | -| 宿主 | 大致能力 | |
151 | | -|------|----------| |
152 | | -| Claude Code / Codex / Copilot CLI 等 | Hook 较完整时可硬拦危险命令、Stop 收口 | |
153 | | -| **Grok** | **Partial enforcement**:UserPromptSubmit 不能可靠注入完整入口块;`devcodex grok` 仍使用统一 local-stdio Skill 路由,但当前精确 variant direct evidence 为 UNVERIFIED,不据此声称与 Codex 的宿主观察能力等价 | |
154 | | -| 仅 Instruction 的 surface | 语义约束,不保证硬拦 | |
155 | | - |
156 | | -「adapter 已安装」≠「五宿主能力完全一致」。 |
157 | | - |
| 121 | +name: release-check |
| 122 | +description: > |
| 123 | + 当用户准备发布版本、检查 changelog、tag、npm publish 或 GitHub release 时使用。 |
158 | 124 | --- |
| 125 | +# release-check |
159 | 126 |
|
160 | | -## 语言策略(约定,非绝对保证) |
161 | | - |
162 | | -| 项 | 约定 | |
163 | | -|----|------| |
164 | | -| 对话回复 | **目标**跟随用户语言 | |
165 | | -| 工作区过程产物文件名 | 默认 **中文** 标准名(如 `00-需求概况.md`) | |
166 | | -| 完整多语言 i18n / 中英产物双文件名 | **本阶段未承诺** | |
167 | | - |
168 | | ---- |
| 127 | +## 步骤 |
| 128 | +1. 检查版本号、变更记录和发布分支。 |
| 129 | +2. 运行项目约定的测试与打包命令。 |
| 130 | +3. 输出发布前风险和下一步。 |
| 131 | +``` |
169 | 132 |
|
170 | | -## 你能感知到的默认行为 |
| 133 | +`intent.json`: |
| 134 | + |
| 135 | +```json |
| 136 | +{ |
| 137 | + "schemaVersion": "SkillIntentV1", |
| 138 | + "skillId": "release-check", |
| 139 | + "intents": [ |
| 140 | + { |
| 141 | + "id": "release", |
| 142 | + "label": "发布检查", |
| 143 | + "include": ["发布", "release", "tag", "npm"] |
| 144 | + } |
| 145 | + ], |
| 146 | + "examples": { |
| 147 | + "positive": ["帮我发版前检查", "准备 npm publish"], |
| 148 | + "negative": ["修复登录 bug", "解释这个函数"] |
| 149 | + }, |
| 150 | + "summary": "发布前检查版本、changelog、tag、测试、打包和发布风险。" |
| 151 | +} |
| 152 | +``` |
171 | 153 |
|
172 | | -- **确认优先**:大改动、发版、危险命令前应得到确认(Auto 另有白名单边界) |
173 | | -- **危险命令**:可被 Hook 拦截 |
174 | | -- **入口检查**:实质任务前尽量有 PC0~PC7(视宿主能力) |
175 | | -- **报告与记忆**:非闲聊任务写入工作区 |
| 154 | +新建或修改后,重新打开会话,或在后续请求中自然触发相关意图。 |
176 | 155 |
|
177 | | -Gate/探针编号是维护者资产,日常使用不必背。 |
| 156 | +## 与宿主原生 Skill 共存 |
178 | 157 |
|
179 | | ---- |
| 158 | +Codex、Claude Code 等宿主自己的项目指令、个人 Skill 和配置文件继续按宿主原有规则生效。 |
180 | 159 |
|
181 | | -## 技能加载 |
| 160 | +DevCodex 不扫描、复制、合并、覆盖或删除这些用户资产。即使名称相同,宿主原生 Skill 也不视为 DevCodex 所有。 |
182 | 161 |
|
183 | | -1. 最终回复 **不强制** 技能元行 |
184 | | -2. 过程侧可用「正在加载 `<id>` 技能」 |
185 | | -3. **不要** List `~/.grok/skills` 等主目录 skill 树(会暴露本机路径);只读单个已知 `SKILL.md` |
186 | | -4. 验证:对话「验证技能加载」或上文 CLI |
187 | | - |
188 | | ---- |
189 | | - |
190 | | -## 架构一览 |
| 162 | +如果希望五个宿主通过 DevCodex 使用同一套能力,写 DevCodex 工作区 Skill: |
191 | 163 |
|
192 | 164 | ```text |
193 | | -npm 全局包 / 源码 install -g |
194 | | - → 用户级:宿主 hooks / instructions / skills 投影 / VS Code mcp.json(apply) |
195 | | - → 工作区:.devcodex(profile、reports、memory、requirements、workspace skills) |
196 | | - → 运行时:hooks/_runtime/lifecycle.cjs + MCP memory/profile |
| 165 | +<你的项目根目录>/.devcodex/workspace/skills/<id>/SKILL.md |
197 | 166 | ``` |
198 | 167 |
|
199 | | ---- |
| 168 | +如果只希望某个宿主单独使用,继续使用该宿主自己的 Skill 或指令机制。 |
200 | 169 |
|
201 | 170 | ## 边界 |
202 | 171 |
|
203 | | -- 默认 **safety-only**:危险命令硬拦;流程项多为提醒,**strict** 才全面升级阻断 |
204 | | -- **不**替代业务 CI、安全审计与人工评审 |
205 | | -- Grok 等存在 **Partial** 上限 |
206 | | -- 敏感信息:以项目与你的要求为准;未禁止时不强制脱敏 |
207 | | - |
208 | | ---- |
209 | | - |
210 | | -## 文档与仓库边界 |
211 | | - |
212 | | -| 内容 | 位置 | |
213 | | -|------|------| |
214 | | -| **用户文档** | 本 README(公开仓主入口) | |
215 | | -| **维护者文档站** `website/` | **默认不进公开 Git 跟踪**、**不进 npm**;本机可保留完整拷贝(见 `website/README.md`) | |
216 | | -| 未发布变更 | `changelogs/unreleased.md` | |
217 | | -| 已发布说明 | `changelogs/releases/` | |
218 | | - |
219 | | ---- |
220 | | - |
221 | | -## 本地开发(贡献者) |
222 | | - |
223 | | -```bash |
224 | | -cd <devcodex-source-root> |
225 | | -npm install |
226 | | -npm run check:control-content |
227 | | -npm run test:stop-gate |
228 | | -npm run test:docs-surface-inventory |
229 | | -npm run test:skill-route |
230 | | -npm run global-adapters:apply |
231 | | -``` |
232 | | - |
233 | | -源码仓中的 instruction、prompt 与 Skill Markdown 唯一维护入口统一位于 `content/`。修改 canonical content 后先运行 `npm run check:control-content`;仓库兼容路径由 `npm run generate:control-content` 确定性投影,npm 打包则通过带锁和回执的 prepack/postpack 临时投影旧 delivery 路径。运行时和 npm 安装包继续读取 standalone delivery,不读取或携带 `content/`。 |
234 | | - |
235 | | -维护者文档站(需本机已有完整 `website/`): |
236 | | - |
237 | | -```bash |
238 | | -cd website && npm install && npm run dev |
239 | | -``` |
240 | | - |
241 | | -Node:`^20.19 || >=22.12`(仅文档站)。 |
| 172 | +- DevCodex 不替代业务框架、GitHub CI、安全审计或人工评审。 |
| 173 | +- 不同宿主的 Hook、指令和插件能力不同;同一工作流在不同宿主中的强制能力可能不同。 |
| 174 | +- DevCodex 不接管宿主原生 Skill、个人配置或项目指令文件。 |
| 175 | +- 工作区 Skill 只影响创建它的项目目录。 |
242 | 176 |
|
243 | 177 | --- |
244 | 178 |
|
245 | 179 | ## 许可证 |
246 | 180 |
|
247 | 181 | [AGPL-3.0](LICENSE) |
248 | | - |
249 | | ---- |
250 | | - |
251 | | -## 用户可见交付与链接兼容 |
252 | | - |
253 | | -用户可见交付物应带可定位路径(工作区相对路径优先);宿主证据不足时用 portable 链接,不假装全宿主可点。 |
254 | | -MCP 侧先用 `profile_context_plan` 生成有界计划,再由 `profile_load` 完成选定正文;记忆侧先用 `memory_status` 定位,再按需查询。完成状态以绑定的 `ContextReadReceiptV2` 为准,V1 receipt 只作兼容读取。工作流技能按意图 **invoke**(按需读取,非整库预载)。 |
255 | | -用户侧文档 review 聚合见 skill `audit-user-manual`。 |
256 | | -规范侧:`PromptLongGateListDriftProbe`(V75)。 |
257 | | - |
258 | | -## 维护者备注 |
259 | | - |
260 | | -- 公开仓:`website/*` 忽略,仅跟踪 `website/README.md` 指针。 |
261 | | -- 过程 ECR 等常在工作区 `.devcodex/`(运行态,默认不进本 npm 包)。 |
0 commit comments