@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.
- package/README.md +100 -42
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +9 -8
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/global.js +1 -1
- package/dist/commands/global.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +37 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.js +2 -2
- package/dist/generators/claude.d.ts.map +1 -1
- package/dist/generators/claude.js +1 -37
- package/dist/generators/claude.js.map +1 -1
- package/dist/generators/codebuddy.d.ts.map +1 -1
- package/dist/generators/codebuddy.js +3 -1
- package/dist/generators/codebuddy.js.map +1 -1
- package/dist/generators/codex.d.ts +10 -0
- package/dist/generators/codex.d.ts.map +1 -0
- package/dist/generators/codex.js +178 -0
- package/dist/generators/codex.js.map +1 -0
- package/dist/generators/copilot.d.ts.map +1 -1
- package/dist/generators/copilot.js +0 -1
- package/dist/generators/copilot.js.map +1 -1
- package/dist/generators/cursor.d.ts.map +1 -1
- package/dist/generators/cursor.js +36 -7
- package/dist/generators/cursor.js.map +1 -1
- package/dist/generators/custom.d.ts +55 -0
- package/dist/generators/custom.d.ts.map +1 -0
- package/dist/generators/custom.js +166 -0
- package/dist/generators/custom.js.map +1 -0
- package/dist/generators/index.d.ts +1 -0
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +10 -0
- package/dist/generators/index.js.map +1 -1
- package/dist/utils/config.d.ts +38 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +10 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +2 -1
- package/dist/utils/file-system.js.map +1 -1
- package/package.json +1 -1
- package/schemas/harness-schema.yaml +178 -53
- package/schemas/knowledge-schema.yaml +111 -1
- package/templates/agents/modus-analyst.md +1 -1
- package/templates/behavior-guard.md +165 -0
- package/templates/commands/auto.md +61 -25
- package/templates/commands/commit.md +63 -0
- package/templates/commands/harness.md +97 -30
- package/templates/commands/init.md +43 -10
- package/templates/commands/modus.md +55 -28
- package/templates/commands/plan.md +60 -18
- package/templates/commands/spec.md +69 -25
- package/templates/commands/upgrade.md +54 -0
- package/templates/commands/vibe.md +56 -6
- package/templates/knowledge-catalog.md +74 -32
- package/templates/skills/modus-agents/analyst/SKILL.md +18 -3
- package/templates/skills/modus-agents/deployer/SKILL.md +114 -62
- package/templates/skills/modus-agents/designer/SKILL.md +104 -92
- package/templates/skills/modus-agents/developer/SKILL.md +107 -66
- package/templates/skills/modus-agents/perf-auditor/SKILL.md +98 -61
- package/templates/skills/modus-agents/reviewer/SKILL.md +61 -11
- package/templates/skills/modus-agents/security-auditor/SKILL.md +111 -67
- package/templates/skills/modus-agents/skill-creator/SKILL.md +30 -12
- package/templates/skills/modus-agents/tester/SKILL.md +100 -54
- package/templates/skills/modus-auto/SKILL.md +581 -109
- package/templates/skills/modus-design-brief/SKILL.md +45 -19
- package/templates/skills/modus-harness/SKILL.md +150 -85
- package/templates/skills/modus-init/SKILL.md +1145 -319
- package/templates/skills/modus-plan/SKILL.md +125 -48
- package/templates/skills/modus-platform/SKILL.md +271 -0
- package/templates/skills/modus-spec/SKILL.md +175 -331
- package/templates/skills/modus-vibe/SKILL.md +256 -55
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: modus-vibe
|
|
3
|
-
description:
|
|
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
|
|
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-
|
|
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
|
-
|
|
84
|
-
-
|
|
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
|
-
|
|
143
|
+
直接回车确认,或告诉我调整。
|
|
93
144
|
```
|
|
94
145
|
|
|
146
|
+
若 `--verbose`,输出每个域的完整置信度评分详情。
|
|
147
|
+
|
|
95
148
|
#### 2B:任务复杂度评估
|
|
96
149
|
|
|
97
150
|
| 复杂度 | 判定条件 | 后续影响 |
|
|
98
151
|
|--------|---------|---------|
|
|
99
|
-
| `Simple` | 单域 / 有明确接口名和功能描述 / 无跨域依赖 /
|
|
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, ...]
|
|
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
|
|
179
|
+
- `maturity = stale`(已被标记为过期)
|
|
123
180
|
- catalog 中 `last_referenced` 超过 90 天
|
|
124
|
-
-
|
|
181
|
+
- hash 检查发现 key_files 有变化
|
|
125
182
|
|
|
126
183
|
#### 执行方式
|
|
127
184
|
|
|
128
185
|
```
|
|
129
|
-
触发更新 →
|
|
186
|
+
触发更新 → 静默执行增量 Skill 更新
|
|
130
187
|
→ 更新完成后输出单行状态:
|
|
131
188
|
[已同步 {domain} 域知识]
|
|
132
189
|
|
|
133
190
|
无需更新 → 直接进入 Step 4,不输出任何提示
|
|
134
191
|
```
|
|
135
192
|
|
|
136
|
-
|
|
193
|
+
Codex 模式:所有同步静默执行,不输出状态行(减少干扰)。
|
|
137
194
|
|
|
138
195
|
---
|
|
139
196
|
|
|
140
|
-
### Step 4
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
355
|
+
> **若 DRY_RUN=true**:输出 `[--dry-run: 已生成 Design Brief,不输出代码。如需实现,去掉 --dry-run 重新运行。]`,结束执行。
|
|
356
|
+
|
|
357
|
+
基于 Step 6 内联设计方案,执行用户的编码请求:
|
|
263
358
|
|
|
264
|
-
-
|
|
265
|
-
-
|
|
266
|
-
-
|
|
267
|
-
- **Level 3
|
|
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
|
-
有新知识 →
|
|
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
|
|
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
|
|
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
|
|
339
|
-
4. Step
|
|
340
|
-
5.
|
|
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
|
+
```
|