@modus-ai/modus 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +100 -42
  2. package/dist/cli/index.js +2 -2
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/config.d.ts.map +1 -1
  5. package/dist/commands/config.js +9 -8
  6. package/dist/commands/config.js.map +1 -1
  7. package/dist/commands/global.js +1 -1
  8. package/dist/commands/global.js.map +1 -1
  9. package/dist/commands/init.d.ts.map +1 -1
  10. package/dist/commands/init.js +37 -7
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/status.js +2 -2
  13. package/dist/generators/claude.d.ts.map +1 -1
  14. package/dist/generators/claude.js +1 -37
  15. package/dist/generators/claude.js.map +1 -1
  16. package/dist/generators/codebuddy.d.ts.map +1 -1
  17. package/dist/generators/codebuddy.js +3 -1
  18. package/dist/generators/codebuddy.js.map +1 -1
  19. package/dist/generators/codex.d.ts +10 -0
  20. package/dist/generators/codex.d.ts.map +1 -0
  21. package/dist/generators/codex.js +178 -0
  22. package/dist/generators/codex.js.map +1 -0
  23. package/dist/generators/copilot.d.ts.map +1 -1
  24. package/dist/generators/copilot.js +0 -1
  25. package/dist/generators/copilot.js.map +1 -1
  26. package/dist/generators/cursor.d.ts.map +1 -1
  27. package/dist/generators/cursor.js +36 -7
  28. package/dist/generators/cursor.js.map +1 -1
  29. package/dist/generators/custom.d.ts +55 -0
  30. package/dist/generators/custom.d.ts.map +1 -0
  31. package/dist/generators/custom.js +166 -0
  32. package/dist/generators/custom.js.map +1 -0
  33. package/dist/generators/index.d.ts +1 -0
  34. package/dist/generators/index.d.ts.map +1 -1
  35. package/dist/generators/index.js +10 -0
  36. package/dist/generators/index.js.map +1 -1
  37. package/dist/utils/config.d.ts +38 -1
  38. package/dist/utils/config.d.ts.map +1 -1
  39. package/dist/utils/config.js +10 -2
  40. package/dist/utils/config.js.map +1 -1
  41. package/dist/utils/file-system.d.ts.map +1 -1
  42. package/dist/utils/file-system.js +2 -1
  43. package/dist/utils/file-system.js.map +1 -1
  44. package/package.json +1 -1
  45. package/schemas/harness-schema.yaml +178 -53
  46. package/schemas/knowledge-schema.yaml +111 -1
  47. package/templates/agents/modus-analyst.md +1 -1
  48. package/templates/behavior-guard.md +165 -0
  49. package/templates/commands/auto.md +61 -25
  50. package/templates/commands/commit.md +63 -0
  51. package/templates/commands/harness.md +97 -30
  52. package/templates/commands/init.md +43 -10
  53. package/templates/commands/modus.md +55 -28
  54. package/templates/commands/plan.md +60 -18
  55. package/templates/commands/spec.md +69 -25
  56. package/templates/commands/upgrade.md +54 -0
  57. package/templates/commands/vibe.md +56 -6
  58. package/templates/knowledge-catalog.md +74 -32
  59. package/templates/skills/modus-agents/analyst/SKILL.md +18 -3
  60. package/templates/skills/modus-agents/deployer/SKILL.md +114 -62
  61. package/templates/skills/modus-agents/designer/SKILL.md +104 -92
  62. package/templates/skills/modus-agents/developer/SKILL.md +107 -66
  63. package/templates/skills/modus-agents/perf-auditor/SKILL.md +98 -61
  64. package/templates/skills/modus-agents/reviewer/SKILL.md +61 -11
  65. package/templates/skills/modus-agents/security-auditor/SKILL.md +111 -67
  66. package/templates/skills/modus-agents/skill-creator/SKILL.md +30 -12
  67. package/templates/skills/modus-agents/tester/SKILL.md +100 -54
  68. package/templates/skills/modus-auto/SKILL.md +581 -109
  69. package/templates/skills/modus-design-brief/SKILL.md +45 -19
  70. package/templates/skills/modus-harness/SKILL.md +150 -85
  71. package/templates/skills/modus-init/SKILL.md +1145 -319
  72. package/templates/skills/modus-plan/SKILL.md +125 -48
  73. package/templates/skills/modus-platform/SKILL.md +271 -0
  74. package/templates/skills/modus-spec/SKILL.md +175 -331
  75. package/templates/skills/modus-vibe/SKILL.md +256 -55
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: modus-vibe
3
- description: Use this skill when executing /modus:vibe command for context-aware vibe coding. Intelligently loads relevant business Skills, auto-syncs stale knowledge, and applies rule-driven AskUserQuestion before coding so AI works as a knowledgeable project member. Trigger on /modus:vibe command or when user wants to code with business context.
3
+ description: >
4
+ Use this skill when executing /modus:vibe command for context-aware vibe coding.
5
+ Intelligently loads relevant business Skills, auto-syncs stale knowledge, and applies
6
+ rule-driven clarification before coding so AI works as a knowledgeable project member.
7
+ Trigger on: /modus:vibe, vibe coding, 开始编码, 帮我实现, 帮我开发, 写代码,
8
+ 修复这个, 添加功能, 改一下代码, 实现需求, context-aware coding with business knowledge.
9
+ Supports --codex flag for non-interactive batch mode on Codex platform.
4
10
  allowed-tools: Read, Write, Glob, Bash
5
11
  disable: false
6
12
  ---
@@ -13,16 +19,43 @@ disable: false
13
19
 
14
20
  ## 职责
15
21
 
16
- 氛围编程入口。在编码前通过**三级渐进加载**获取相关业务上下文,让 AI 以「懂业务的资深开发者」身份工作。相比传统 vibe 模式,增加了三大智能机制:
22
+ 氛围编程入口。在编码前通过**三级渐进加载**获取相关业务上下文,让 AI 以「懂业务的资深开发者」身份工作。包含四大智能机制:
17
23
 
18
24
  1. **智能分析引擎**:自动判断涉及哪些域(置信度 ≥ 85% 时无需用户确认)、任务复杂度(Simple/Medium/Complex)、歧义风险
19
25
  2. **Skill 前置同步**:加载前静默检查知识是否过时,按需更新后再加载,用户仅看到一行状态提示
20
26
  3. **Skill 后置写回**:编码结束后自动将新发现的知识写入 Skill 文件,形成知识积累闭环
27
+ 4. **会话连续性感知**:自动识别是否延续上次会话,相同域无需重复加载(借鉴 Cursor Vibe Coding)
28
+
29
+ > **业界参考**:本模式核心理念源自 [Cursor Vibe Coding](https://cursor.sh)(Andrej Karpathy 提出),强调零打断流动(Zero-Interrupt Flow)、文件优先感知(File-First Context)、增量迭代(Incremental Iteration)。相比原始 vibe coding,本 Skill 在其基础上增加了企业级业务上下文注入和知识闭环机制。
21
30
 
22
31
  ---
23
32
 
24
33
  ## 执行流程
25
34
 
35
+ ### 参数解析与 --help 拦截(优先执行,Step 0 之前)
36
+
37
+ **首先**检测用户输入中的参数标志,设置后续步骤的行为开关:
38
+
39
+ ```
40
+ --help → 直接跳到文末「命令参考」章节,输出帮助内容,结束执行(不进行后续步骤)
41
+ --quick → QUICK_MODE=true(跳过 Step 3 域确认和 Step 4 规则提问)
42
+ --domain X → FORCED_DOMAIN=X(Step 3 跳过自动匹配,直接使用指定域)
43
+ --enhance X → ENHANCE_DOMAIN=X(Step 3 前先增量更新该域 Skill)
44
+ --file X → FOCUS_FILE=X(Step 3 从该文件推断域,而非 prompt 匹配)
45
+ --no-design → SKIP_DESIGN=true(跳过 Step 6 Design Brief)
46
+ --story X → STORY_ID=X(Step 9 日志写入 modus/stories/{X}/vibe-log.md)
47
+ --dry-run → DRY_RUN=true(Step 7 只输出设计,不生成代码)
48
+ --watch → WATCH_MODE=true(Step 10 启用文件监听,实验性)
49
+ --codex → CODEX_MODE=true(禁用交互提问,全批量推断输出)
50
+ --no-skill → NO_SKILL=true(跳过 Step 3~5 所有 Skill 加载)
51
+ --verbose → VERBOSE=true(输出详细日志:置信度、token 用量)
52
+ --project X → PROJECT=X(多项目 workspace 时指定目标项目)
53
+ ```
54
+
55
+ > **Codex 环境自动检测**:若无法判断平台,当用户消息不包含问号且 prompt 明确时,推断为 Codex 环境,自动启用 CODEX_MODE。
56
+
57
+ ---
58
+
26
59
  ### Step 0:读取项目宪法(硬性约束)
27
60
 
28
61
  读取 `modus/config.yaml`(若存在),提取 `constitution` 字段:
@@ -59,17 +92,33 @@ A. 现在运行快速初始化(约 2-5 分钟)?
59
92
  B. 继续使用降级模式(无业务上下文,结果质量可能降低)?
60
93
  ```
61
94
 
95
+ > Codex 模式(CODEX_MODE=true):自动选择 B,输出 `[降级模式:无知识库,以代码推断为准]`,不等待用户输入。
96
+
62
97
  - 选 A → 执行 `/modus:init` 流程,完成后继续
63
- - 选 B → 跳过 Step 2-3,直接进入 Step 4(歧义检测仍然执行)
98
+ - 选 B → 跳过 Step 2-4,直接进入 Step 5(设计 Brief 仍执行)
99
+
100
+ **Step 1 尾部:会话连续性检测(Cursor Vibe Coding 借鉴)**
101
+
102
+ 读取 `modus/sessions/vibe-log.md` 最近 3 条记录(若存在):
103
+ - 若本次 prompt 涉及的域与上次记录的域相同 → 标注 `[续接上次会话: {上次摘要}]`,Step 4 中可跳过已加载的 Skill
104
+ - 若无匹配 → 静默继续
105
+
106
+ 若 `--verbose`,输出:`[会话检测: {匹配/不匹配} | 上次: {日期} {域}]`
64
107
 
65
108
  ---
66
109
 
67
110
  ### Step 2:智能分析引擎
68
111
 
112
+ > **若 NO_SKILL=true**:跳过此步,直接进入 Step 5。
113
+
69
114
  基于用户 prompt 和 knowledge-catalog 内容,推导以下三个维度,**不需要读取完整 SKILL.md**:
70
115
 
71
116
  #### 2A:域匹配与置信度
72
117
 
118
+ 若 FORCED_DOMAIN 已设置,直接使用,跳过匹配计算。
119
+
120
+ 若 FOCUS_FILE 已设置,先读取该文件,从包路径、类名中推断域,再进行匹配。
121
+
73
122
  对每个 catalog 中的业务域,计算匹配置信度:
74
123
 
75
124
  ```
@@ -80,8 +129,10 @@ B. 继续使用降级模式(无业务上下文,结果质量可能降低)
80
129
  ```
81
130
 
82
131
  **输出规则:**
83
- - 置信度 ≥ 85% 的**单个域**:自动选中,无需用户确认。在 Step 3 输出前标注 `[自动匹配: {domain} 域]`
84
- - 多个域或最高置信度 < 85%:展示候选列表,等待用户确认(可直接回车接受建议)
132
+
133
+ - 置信度 85% 的**单个域**:自动选中,无需用户确认
134
+ - Codex 模式(CODEX_MODE=true):阈值降低至 70%,更激进地自动推断
135
+ - 多个域或最高置信度未达阈值:展示候选列表(Codex 模式下自动选最高分)
85
136
 
86
137
  ```
87
138
  根据你的需求,我匹配到以下业务域:
@@ -89,59 +140,67 @@ B. 继续使用降级模式(无业务上下文,结果质量可能降低)
89
140
  ✓ order(订单域)— 订单创建、状态流转 [verified] 置信度 92% → 自动加载
90
141
  ? payment(支付域)— 支付发起、回调 [proven] 置信度 60% → 是否也需要?
91
142
 
92
- 直接回车确认 order 域,或告诉我调整。
143
+ 直接回车确认,或告诉我调整。
93
144
  ```
94
145
 
146
+ 若 `--verbose`,输出每个域的完整置信度评分详情。
147
+
95
148
  #### 2B:任务复杂度评估
96
149
 
97
150
  | 复杂度 | 判定条件 | 后续影响 |
98
151
  |--------|---------|---------|
99
- | `Simple` | 单域 / 有明确接口名和功能描述 / 无跨域依赖 / 改动范围可预估为单文件 | Design Brief 精简为 3 节 |
152
+ | `Simple` | 单域 / 有明确接口名和功能描述 / 无跨域依赖 / 可预估为单文件改动 | Design Brief 精简为 3 节 |
100
153
  | `Medium` | 跨域依赖 / 涉及状态机或事务 / 需求描述有一处明显歧义 | Design Brief 完整 9 节 |
101
154
  | `Complex` | 多域 + 多处歧义 / 涉及 Pitfall 命中 / prompt 含「大概/可能/随便/看着来/都行」等模糊词 | Design Brief 完整 9 节 + 风险标注 |
102
155
 
103
156
  #### 2C:输出分析摘要
104
157
 
105
- 完成 2A / 2B 后,在内联上下文中记录(不输出给用户):
158
+ 完成 2A / 2B 后,在内联上下文中记录(不输出给用户,除非 --verbose):
106
159
 
107
160
  ```
108
161
  [ANALYSIS]
109
162
  domain: {domain} confidence: {%}
110
163
  complexity: Simple | Medium | Complex
111
- ambiguity_rules_hit: [R1, R3, ...] ← 命中的规则 ID,见 Step 4
164
+ ambiguity_rules_hit: [R1, R3, ...]
112
165
  ```
113
166
 
114
167
  ---
115
168
 
116
169
  ### Step 3:条件性 Skill 前置同步(轻感知)
117
170
 
171
+ > **若 QUICK_MODE=true 或 NO_SKILL=true**:跳过此步。
172
+
173
+ **若 ENHANCE_DOMAIN 已设置**:优先对该域触发增量更新(无论是否满足以下条件)。
174
+
118
175
  对 Step 2 确认的每个业务域,执行以下检查:
119
176
 
120
177
  #### 触发更新的条件(满足任一即触发)
121
178
 
122
- - `maturity = stale`(已被 skill-creator 标记为过期)
179
+ - `maturity = stale`(已被标记为过期)
123
180
  - catalog 中 `last_referenced` 超过 90 天
124
- - 调用 `modus-skill-creator` 模式 B 的 hash 检查发现 key_files 有变化
181
+ - hash 检查发现 key_files 有变化
125
182
 
126
183
  #### 执行方式
127
184
 
128
185
  ```
129
- 触发更新 → 静默调用 modus-skill-creator 模式 B(增量更新)
186
+ 触发更新 → 静默执行增量 Skill 更新
130
187
  → 更新完成后输出单行状态:
131
188
  [已同步 {domain} 域知识]
132
189
 
133
190
  无需更新 → 直接进入 Step 4,不输出任何提示
134
191
  ```
135
192
 
136
- **注意:** 整个同步过程对用户完全透明,无需确认,不中断流程。若同步耗时较长(超过 3 秒),追加进度提示 `[同步中...]`。
193
+ Codex 模式:所有同步静默执行,不输出状态行(减少干扰)。
137
194
 
138
195
  ---
139
196
 
140
- ### Step 4:规则驱动 AskUserQuestion
197
+ ### Step 4:规则驱动澄清问题
198
+
199
+ > **若 QUICK_MODE=true 或 CODEX_MODE=true**:跳过此步,直接进入 Step 5。输出 `[Codex 模式:跳过交互确认,自动推断所有决策]`。
141
200
 
142
201
  #### 歧义规则清单
143
202
 
144
- 根据 Step 2C 中记录的 `ambiguity_rules_hit`,判断是否需要提问。
203
+ 根据 Step 2C 中记录的 `ambiguity_rules_hit`,判断是否需要提问:
145
204
 
146
205
  | 规则 ID | 触发条件 | 问题类型 |
147
206
  |---------|---------|---------|
@@ -162,39 +221,58 @@ ambiguity_rules_hit: [R1, R3, ...] ← 命中的规则 ID,见 Step 4
162
221
  命中 ≥ 3 条规则 → 优先选择最高影响的 2 条规则提问(R5 > R1 > R3 > R4 > R2)
163
222
  ```
164
223
 
165
- **提问格式(命中时):**
224
+ 等待用户回答后,输出一句话确认摘要:`好的,理解了:{核心决策点 1-2 句话}。开始实现。`
166
225
 
167
- ```
168
- 编码前需确认几点:
226
+ ---
169
227
 
170
- 1. [{问题类型}] {具体问题}
171
- 2. [{问题类型}] {具体问题} ← 最多 2 个
228
+ ### Step 5:Level 2 加载——读匹配 Skill(~3000 tokens/个)
172
229
 
173
- 回答后我立即开始实现。
174
- ```
230
+ > **若 NO_SKILL=true**:跳过此步。
175
231
 
176
- 等待用户回答后,输出一句话确认摘要:
232
+ 读取用户确认的业务域对应的完整 Skill 文件:
177
233
 
234
+ **路径规则(v3.1 Single Source of Truth):**
178
235
  ```
179
- 好的,理解了:{核心决策点 1-2 句话}。开始实现。
236
+ modus/knowledge/biz-{domain}/SKILL.md
180
237
  ```
181
238
 
182
- ---
183
-
184
- ### Step 5:Level 2 加载——读匹配 Skill(~3000 tokens/个)
239
+ 例如:`modus/knowledge/biz-order/SKILL.md`、`modus/knowledge/biz-payment/SKILL.md`
185
240
 
186
- 读取用户确认的业务域对应的完整 SKILL.md 文件,将其内容作为背景知识。
241
+ > **注意**:`.codebuddy/skills/modus-biz-{domain}/SKILL.md` 为旧路径引用桩,已废弃,请勿使用。
187
242
 
188
- **注意事项:**
243
+ **加载注意事项:**
189
244
  - 只加载确认相关的域,不相关的域 Skill **不读取**(节省 token)
190
245
  - 若 Skill 的 `maturity` 为 `draft`,提示:「该 Skill 较新,若与代码有出入,以代码为准」
246
+ - 若 Step 1 检测到**续接上次会话**且域相同,可跳过重新加载,直接使用上次上下文
191
247
  - 在 Skill 中重点关注 `[pitfall]`、`[model]`、`[guideline]` 条目,以及 `关键文件索引`
192
248
 
249
+ 若 `--verbose`,输出:`[已加载 {domain} Skill | {token 数} tokens | maturity: {状态}]`
250
+
251
+ ---
252
+
253
+ ### Step 5.5:文件优先感知(Cursor Vibe Coding 借鉴)
254
+
255
+ > **若 SKIP_DESIGN=true**:跳过此步。
256
+
257
+ 在生成 Design Brief 之前,扫描感知当前代码现状:
258
+
259
+ **若 FOCUS_FILE 已设置**:读取该文件全文,以其实际代码结构作为设计的优先参考,而非仅凭 Skill 描述。
260
+
261
+ **普通模式**:从 Step 5 加载的 Skill `关键文件索引` 中,**按需读取** 1-2 个与本次需求最相关的实际代码文件(如主 Manager 类、核心 Mapper),感知:
262
+ - 当前方法签名(避免生成冲突的接口)
263
+ - 已有的命名风格(保持一致)
264
+ - 可复用的基础设施(避免重复造轮子)
265
+
266
+ 输出单行提示:`[已感知代码现状: {file1}, {file2}]`
267
+
193
268
  ---
194
269
 
195
270
  ### Step 6:自适应内联设计方案(Design Brief CoT)
196
271
 
197
- **触发:** 每次编码任务前强制执行,不可跳过。
272
+ > **若 SKIP_DESIGN=true 或 --no-design**:跳过此步,输出 `[--no-design: 跳过设计,直接编码]`,进入 Step 7。
273
+ > **若 DRY_RUN=true**:执行此步,但 Step 7 停止(只输出设计,不生成代码)。
274
+
275
+ **触发:** 每次编码任务前强制执行,不可省略(除非 --no-design)。
198
276
  **产出:** 内联于当前 LLM 上下文,**不写入任何文件**。
199
277
 
200
278
  根据 Step 2B 评估的复杂度,输出不同深度的设计方案:
@@ -207,8 +285,8 @@ ambiguity_rules_hit: [R1, R3, ...] ← 命中的规则 ID,见 Step 4
207
285
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
208
286
 
209
287
  ## 实现蓝图
210
- Data: {Mapper 类/方法}
211
- Service: {Manager/Service 类/方法}
288
+ Data: {Mapper 类/方法}(路径: modus/knowledge/biz-{domain}/SKILL.md → 关键文件索引)
289
+ Service: {Manager/Service 类/方法,标注 @Transactional 位置}
212
290
  API: {Facade/Controller 类/方法}
213
291
 
214
292
  ## 禁止事项
@@ -219,36 +297,51 @@ API: {Facade/Controller 类/方法}
219
297
  |-------|---------|---------|
220
298
  | {需求} | {类/方法} | {测试/联调} |
221
299
 
300
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
301
+ [End of Design Brief — 开始编码]
222
302
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
223
303
  ```
224
304
 
225
305
  #### Medium/Complex 模式(完整 9 节)
226
306
 
227
- 调用 `modus-design-brief` Skill,传入:
228
- - `mode: vibe`(内联输出模式,不落盘)
229
- - `complexity: Medium | Complex`
230
- - `analysis_doc: 用户 prompt + Step 4 确认的意图摘要`
231
- - `business_skills: Step 5 已加载的 Skill 内容`
232
- - `constitution: Step 0 读取的 constitution 字段`
233
-
234
- **Complex 模式额外要求:**
235
- - 节 6(边界条件)必须完整展开所有失败路径
236
- - 节 9(需求追踪矩阵)每行追加 `⚠️` 标注已命中的 Pitfall
237
-
238
307
  ```
239
308
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
240
309
  [Design Brief — {Simple|Medium|Complex} | 域: {domain1}, {domain2}]
241
310
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
242
311
 
243
312
  ## 1. 基本信息
313
+ 模式: vibe | 涉及域: {domain1}, {domain2} | 复杂度: {level}
314
+
244
315
  ## 2. 业务意图摘要
316
+ {来自 Step 4 确认的意图,或自动推断}
317
+
245
318
  ## 3. 实体与数据模型
319
+ {基于 Skill [model] 条目和用户意图推导,字段带类型}
320
+
246
321
  ## 4. API / 接口合同
322
+ {方法签名,带完整包路径}
323
+
247
324
  ## 5. 实现蓝图
325
+ Data: {具体 Mapper 类/方法}
326
+ Service: {具体 Manager/Service 类/方法,标注 @Transactional 位置}
327
+ API: {Facade/Controller 类/方法}
328
+
248
329
  ## 6. 边界条件与异常处理
330
+ {覆盖关键失败路径,含错误码}
331
+ {Complex 模式:展开所有失败路径,每条附错误码}
332
+
249
333
  ## 7. 代码生成提示
334
+ {来自 Skill 关键文件索引的可复用类 + 命名规范示例}
335
+ {Step 6 感知到的现有代码结构}
336
+
250
337
  ## 8. 禁止事项与已知坑
338
+ {constitution hard_rules + Skill [pitfall]}
339
+ {Complex 模式:每条附 pitfall 来源和影响范围}
340
+
251
341
  ## 9. 需求-任务追踪矩阵
342
+ | 需求点 | 对应实现 | 校验方式 | 风险 |
343
+ |---|---|---|---|
344
+ | {需求} | {类/方法} | {测试/联调} | {⚠️ pitfall(Complex 模式)} |
252
345
 
253
346
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
254
347
  [End of Design Brief — 开始编码]
@@ -259,15 +352,21 @@ API: {Facade/Controller 类/方法}
259
352
 
260
353
  ### Step 7:执行编码任务(Level 3 按需加载)
261
354
 
262
- 基于 Step 6 内联设计方案和澄清后的意图,执行用户的编码请求:
355
+ > **若 DRY_RUN=true**:输出 `[--dry-run: 已生成 Design Brief,不输出代码。如需实现,去掉 --dry-run 重新运行。]`,结束执行。
356
+
357
+ 基于 Step 6 内联设计方案,执行用户的编码请求:
263
358
 
264
- - 以设计方案中「实现蓝图」为编码路线图
265
- - 严格遵守「禁止事项」——这是 constitution hard_rules 和 Skill [pitfall] 的汇总
266
- - 引用「代码生成提示」中的现有类路径,不凭空创造类名
267
- - **Level 3 加载:** 需要具体代码实现时,按需读取 Skill `关键文件索引` 指向的实际代码文件(而非预先全量读取)
359
+ - 以设计方案中「实现蓝图」(节 5)为编码路线图
360
+ - 严格遵守「禁止事项」(节 8)——这是 constitution hard_rules 和 Skill [pitfall] 的汇总
361
+ - 引用「代码生成提示」(节 7)中的现有类路径,不凭空创造类名
362
+ - **Level 3 加载**:需要具体代码实现时,按需读取 Skill `关键文件索引` 指向的实际代码文件(而非预先全量读取)
363
+ - **编辑优先(Cursor 原则)**:优先修改已有文件,而非创建新文件;改动范围最小化
364
+ - **增量输出(Cursor 原则)**:大改动时分批输出,每批代码可独立编译通过
268
365
  - 对不确定的业务规则,优先参考 Skill 中的规则描述
269
366
  - 如发现 Skill 中记录有误或过时,记录到内部缓冲区,在 Step 8 处理
270
367
 
368
+ Codex 模式下,每个文件生成前输出分隔符:`=== 生成文件: {path} ===`
369
+
271
370
  ---
272
371
 
273
372
  ### Step 8:Skill 后置自动写回
@@ -284,7 +383,7 @@ API: {Facade/Controller 类/方法}
284
383
  #### 执行方式
285
384
 
286
385
  ```
287
- 有新知识 → 静默调用 modus-skill-creator 模式 C(知识提取写入)
386
+ 有新知识 → 写入 modus/knowledge/biz-{domain}/SKILL.md(v3.1 路径)
288
387
  → 写入完成后输出单行提示:
289
388
  [已更新 {domain} 域知识: 新增 [pitfall] {摘要} / 更正 [model] {字段名}]
290
389
 
@@ -295,12 +394,16 @@ API: {Facade/Controller 类/方法}
295
394
  - 只写入有明确代码证据的知识,不写推测性内容
296
395
  - 每次写回最多 3 条新条目,避免批量污染
297
396
  - 更正已有条目时,保留原条目并追加修订记录(不覆盖历史)
397
+ - Codex 模式:写回操作不输出提示
298
398
 
299
399
  ---
300
400
 
301
401
  ### Step 9:写入 Session 日志
302
402
 
303
- 编码完成后,将本次会话**追加**(append-only,禁止覆盖原有内容)到 `modus/sessions/vibe-log.md`:
403
+ 编码完成后,将本次会话**追加**(append-only,禁止覆盖原有内容)到日志文件:
404
+
405
+ - 若 STORY_ID 已设置:写入 `modus/stories/{STORY_ID}/vibe-log.md`
406
+ - 否则:写入 `modus/sessions/vibe-log.md`
304
407
 
305
408
  ```markdown
306
409
  ## {YYYY-MM-DD HH:mm} — {需求一句话摘要}
@@ -309,6 +412,7 @@ API: {Facade/Controller 类/方法}
309
412
  - **复杂度:** Simple | Medium | Complex
310
413
  - **修改文件:** {变更文件列表,最多 5 个}
311
414
  - **知识写回:** {本次写回条目摘要,无则填「无」}
415
+ - **platform:** cursor | codex(CODEX_MODE=true 时填 codex)
312
416
 
313
417
  ---
314
418
  ```
@@ -317,11 +421,28 @@ API: {Facade/Controller 类/方法}
317
421
 
318
422
  ---
319
423
 
424
+ ### Step 10:文件监听模式(实验性,--watch)
425
+
426
+ > **仅当 WATCH_MODE=true 时执行。**
427
+
428
+ ```
429
+ [--watch 模式已启动]
430
+ 监听中... 检测到文件变化时自动触发新一轮 vibe 编码。
431
+ 按 Ctrl+C 退出监听。
432
+ ```
433
+
434
+ 每次文件保存触发时,以修改文件为 `--file` 参数,自动执行 Step 5.5 → Step 7,跳过 Step 2-4。
435
+
436
+ ---
437
+
320
438
  ## 氛围编程原则
321
439
 
322
440
  - **智能优先,减少打断**:域匹配明确时自动确认,无需强制等用户输入;任务清晰时跳过提问
323
- - **先设计再编码**:Step 6 内联设计方案是编码的前置必要步骤,不可省略
324
- - **知识闭环**:每次 vibe 编码都是一次知识更新机会,通过 Step 3 前置同步 + Step 8 后置写回,知识库随项目演进自动积累
441
+ - **先设计再编码**:Step 6 内联设计方案是编码的前置必要步骤,不可省略(除非 --no-design)
442
+ - **知识闭环**:每次 vibe 编码都是一次知识更新机会,Step 3 前置同步 + Step 8 后置写回,知识库随项目演进自动积累
443
+ - **文件优先感知**:编码前先感知现有代码结构,避免生成冲突的接口或重复的类名(Cursor Vibe 原则)
444
+ - **编辑优先**:优先修改已有文件,改动最小化,每批代码可独立编译(Cursor Vibe 原则)
445
+ - **会话连续**:利用 vibe-log.md 实现跨会话上下文传递,相同域不重复加载(Cursor Vibe 原则)
325
446
  - **有据可依**:引用的实体、字段、接口名必须来自 Skill 或已有代码
326
447
  - **宪法优先**:constitution.hard_rules 是不可违反的底线,优先于一切
327
448
  - **按需加载**:不预先读取所有 Skill,降低 token 消耗
@@ -335,6 +456,86 @@ API: {Facade/Controller 类/方法}
335
456
 
336
457
  1. 跳过 Step 2-3(无 catalog 可分析)
337
458
  2. Step 4 仅执行 R2(模糊词检测)和 R4(缺少决策参数检测)
338
- 3. Step 6 固定使用 Medium 模式(无法判断复杂度)
339
- 4. Step 8 跳过写回(无 Skill 文件可写入)
340
- 5. 在回复开头标注:`[降级模式:无业务上下文,建议先运行 /modus:init]`
459
+ 3. Step 5 跳过(无 Skill 可加载)
460
+ 4. Step 6 固定使用 Medium 模式(无法判断复杂度)
461
+ 5. Step 8 跳过写回(无 Skill 文件可写入)
462
+ 6. 在回复开头标注:`[降级模式:无业务上下文,建议先运行 /modus:init]`
463
+
464
+ ---
465
+
466
+ ## Codex 平台适配说明
467
+
468
+ Codex 平台与 Cursor 的核心差异及适配方式:
469
+
470
+ | 特性 | Cursor | Codex | 本 Skill 适配方式 |
471
+ |------|--------|-------|-----------------|
472
+ | 交互提问 | 支持多轮对话 | 单次批量输出 | `--codex` 禁用所有 AskUserQuestion |
473
+ | 域匹配确认 | 等待用户确认 | 自动推断 | Codex 模式阈值降至 70%,自动选最高分 |
474
+ | 进度展示 | IDE 内联显示 | 纯文本输出 | 每 Step 输出清晰分隔符 |
475
+ | 触发方式 | `/modus:vibe` 命令 | 自然语言描述 | description 字段覆盖中英文触发词 |
476
+
477
+ **在 Codex 平台使用示例(自然语言触发,无需命令格式):**
478
+ ```
479
+ 帮我实现歌曲同步状态查询接口 --codex
480
+ 修复专辑发行时的 NPE 问题 --codex --domain album
481
+ 给版权审核模块新增批量审批功能 --codex --story 1234567
482
+ ```
483
+
484
+ **完整 --codex 行为清单:**
485
+ - Step 0:正常执行(constitution 始终加载)
486
+ - Step 1:知识库不存在时自动选 B 降级
487
+ - Step 2:域匹配阈值降至 70%,自动选最高置信度域
488
+ - Step 3:静默同步,不输出状态行
489
+ - Step 4:**完全跳过**,改为输出 `[Codex 模式:自动推断 → 域={domain}, 复杂度={level}]`
490
+ - Step 5~6:正常执行,每 Step 前输出 `=== Step {N}: {名称} ===`
491
+ - Step 7:每个文件前输出 `=== 生成文件: {path} ===`
492
+ - Step 8:写回静默执行,不输出提示
493
+ - Step 9:日志追加 `platform: codex`
494
+
495
+ ---
496
+
497
+ ## 命令参考(--help 输出内容)
498
+
499
+ ```
500
+ /modus:vibe — 智能氛围编程
501
+
502
+ 用途:
503
+ 在编码前自动加载相关业务知识上下文,让 AI 以「懂业务的资深开发者」身份工作。
504
+ 融合 Cursor Vibe Coding 的零打断流动理念,支持置信度域匹配、自动 Skill 同步、
505
+ 知识闭环写回、Codex 平台批量模式。
506
+
507
+ 用法:
508
+ /modus:vibe [需求描述] [参数...]
509
+
510
+ 参数:
511
+ --help 显示此帮助信息,中止执行
512
+ --quick 快速模式:跳过域匹配和 Skill 预加载,适合单文件简单改动
513
+ --domain <name> 直接指定业务域(如 --domain order),跳过自动匹配
514
+ --enhance <domain> 编码前先对指定域执行增量 Skill 更新(如 --enhance album)
515
+ --file <path> 聚焦单文件:从该文件推断域,只加载相关 Skill
516
+ --no-design 跳过 Design Brief 内联设计(极速模式,仅适合单行改动)
517
+ --story <id> 关联 TAPD Story ID,将编码日志写入 modus/stories/{id}/vibe-log.md
518
+ --dry-run 只输出 Design Brief,不生成实际代码(用于方案确认)
519
+ --watch 持续监听文件变化,触发 save-driven vibe coding(实验性)
520
+ --codex Codex 平台模式:禁用交互提问,全批量推断输出,自动推断所有决策
521
+ --no-skill 不加载任何业务 Skill(完全降级模式)
522
+ --verbose 输出详细日志(域匹配置信度、token 用量、会话检测结果)
523
+ --project <name> 多项目 workspace 时指定目标项目(覆盖自动路由)
524
+
525
+ 示例:
526
+ /modus:vibe 修复歌曲同步逻辑的 NPE 问题
527
+ /modus:vibe 新增批量审批接口 --domain audit --story 1234567
528
+ /modus:vibe 优化专辑发行流程 --enhance album --verbose
529
+ /modus:vibe 修改一行注释 --quick --no-design
530
+ /modus:vibe --dry-run 设计版权购买申请的查询接口
531
+ /modus:vibe 实现艺人等级更新 --codex --story 9876543
532
+
533
+ 业务知识路径(v3.1):
534
+ modus/knowledge/biz-{domain}/SKILL.md
535
+
536
+ 相关命令:
537
+ /modus:init 初始化/更新知识库(首次使用前建议先跑)
538
+ /modus:plan 生成功能规划文档(复杂需求建议先 plan 再 vibe)
539
+ /modus:spec 规范驱动开发(接口契约变更推荐使用)
540
+ /modus:auto 智能推荐最合适的命令模式
541
+ ```