@modus-ai/modus 0.2.5 → 0.2.7
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 +62 -45
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +37 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/generators/claude.js +1 -1
- 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/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 +6 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -1
- package/schemas/harness-schema.yaml +178 -53
- package/templates/agents/modus-analyst.md +1 -1
- package/templates/commands/auto.md +61 -27
- package/templates/commands/harness.md +94 -34
- 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 +55 -5
- package/templates/knowledge-catalog.md +23 -10
- package/templates/skills/modus-agents/analyst/SKILL.md +11 -12
- package/templates/skills/modus-agents/developer/SKILL.md +14 -12
- package/templates/skills/modus-agents/reviewer/SKILL.md +50 -23
- package/templates/skills/modus-auto/SKILL.md +580 -123
- package/templates/skills/modus-design-brief/SKILL.md +17 -9
- package/templates/skills/modus-harness/SKILL.md +95 -96
- package/templates/skills/modus-init/SKILL.md +403 -188
- package/templates/skills/modus-plan/SKILL.md +16 -5
- package/templates/skills/modus-platform/SKILL.md +271 -0
- package/templates/skills/modus-vibe/SKILL.md +285 -187
|
@@ -1,24 +1,14 @@
|
|
|
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
|
-
supported_platforms:
|
|
7
|
-
claude:
|
|
8
|
-
status: full
|
|
9
|
-
notes: "全功能支持。三级渐进加载、防腐触发、Design Brief、知识写回均完整执行。"
|
|
10
|
-
codebuddy:
|
|
11
|
-
status: full
|
|
12
|
-
notes: "全功能支持,与 Claude 能力对等。"
|
|
13
|
-
cursor:
|
|
14
|
-
status: partial
|
|
15
|
-
notes: "核心 vibe 流程可用(Steps 1-7),但 Step 8 知识写回需手动触发(无 post-commit hook)。Cursor Agent 模式下无 Bash 工具,Step 7 中需要执行构建验证时改用 Read 检查文件。"
|
|
16
|
-
limitations:
|
|
17
|
-
- "Step 8 知识写回:Cursor 无 post-commit hook,需手动运行 /modus:commit 触发"
|
|
18
|
-
- "无 Bash:构建验证改为文件内容检查"
|
|
19
|
-
copilot:
|
|
20
|
-
status: minimal
|
|
21
|
-
notes: "vibe 流程退化为无上下文编码模式,知识体系不可用(无分域 Skill)。"
|
|
22
12
|
---
|
|
23
13
|
|
|
24
14
|
# modus-vibe(智能氛围编程)
|
|
@@ -29,19 +19,46 @@ supported_platforms:
|
|
|
29
19
|
|
|
30
20
|
## 职责
|
|
31
21
|
|
|
32
|
-
氛围编程入口。在编码前通过**三级渐进加载**获取相关业务上下文,让 AI
|
|
22
|
+
氛围编程入口。在编码前通过**三级渐进加载**获取相关业务上下文,让 AI 以「懂业务的资深开发者」身份工作。包含四大智能机制:
|
|
33
23
|
|
|
34
24
|
1. **智能分析引擎**:自动判断涉及哪些域(置信度 ≥ 85% 时无需用户确认)、任务复杂度(Simple/Medium/Complex)、歧义风险
|
|
35
25
|
2. **Skill 前置同步**:加载前静默检查知识是否过时,按需更新后再加载,用户仅看到一行状态提示
|
|
36
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 在其基础上增加了企业级业务上下文注入和知识闭环机制。
|
|
37
30
|
|
|
38
31
|
---
|
|
39
32
|
|
|
40
33
|
## 执行流程
|
|
41
34
|
|
|
42
|
-
### Step 0
|
|
35
|
+
### 参数解析与 --help 拦截(优先执行,Step 0 之前)
|
|
36
|
+
|
|
37
|
+
**首先**检测用户输入中的参数标志,设置后续步骤的行为开关:
|
|
43
38
|
|
|
44
|
-
|
|
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
|
+
|
|
59
|
+
### Step 0:读取项目宪法(硬性约束)
|
|
60
|
+
|
|
61
|
+
读取 `modus/config.yaml`(若存在),提取 `constitution` 字段:
|
|
45
62
|
|
|
46
63
|
```yaml
|
|
47
64
|
constitution:
|
|
@@ -52,27 +69,15 @@ constitution:
|
|
|
52
69
|
|
|
53
70
|
将 `hard_rules` 作为**最高优先级约束**,在整个编码过程中强制遵守,不因业务需要而妥协。
|
|
54
71
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
加载全局行为约束(Think Before Coding / Simplicity First / Surgical Changes / Goal-Driven Execution),作为本次 session 中所有编码行为的基准。优先级低于 `constitution.hard_rules`,高于 Skill 建议。
|
|
58
|
-
|
|
59
|
-
若两个文件均不存在,跳过此步,使用默认行为。
|
|
60
|
-
|
|
61
|
-
**检测 `[FROM_PLAN:]` 标记(modus-plan Build 触发时注入):**
|
|
62
|
-
|
|
63
|
-
若用户 prompt 或当前上下文中包含 `[FROM_PLAN: {plan_path}]` 标记,执行以下操作:
|
|
64
|
-
1. 读取 `{plan_path}` 文件,将其「实现 Todos」章节作为本次 vibe session 的**任务清单**
|
|
65
|
-
2. 将 plan.md「已知风险」章节注入 Step 6 Design Brief 的「禁止事项/注意事项」
|
|
66
|
-
3. 将 plan.md「关键约束」章节追加到 constitution(优先级低于 `constitution.hard_rules`)
|
|
67
|
-
4. 跳过 Step 4 的用户意图确认 AskQuestion(任务已在 plan.md 中明确),直接进入 Step 2 域匹配
|
|
72
|
+
若文件不存在或 `constitution` 为空,跳过此步。
|
|
68
73
|
|
|
69
74
|
---
|
|
70
75
|
|
|
71
|
-
### Step 1:Level 1
|
|
76
|
+
### Step 1:Level 1 加载——读知识目录(~200 tokens)
|
|
72
77
|
|
|
73
78
|
读取 `modus/knowledge-catalog.md`(全景目录索引):
|
|
74
79
|
- 了解当前项目有哪些可用的 Skill
|
|
75
|
-
- 识别各 Skill 的
|
|
80
|
+
- 识别各 Skill 的 maturity 状态、最近引用时间
|
|
76
81
|
- 为 Step 2 的智能分析做准备
|
|
77
82
|
|
|
78
83
|
**如果 `knowledge-catalog.md` 不存在:**
|
|
@@ -87,17 +92,33 @@ A. 现在运行快速初始化(约 2-5 分钟)?
|
|
|
87
92
|
B. 继续使用降级模式(无业务上下文,结果质量可能降低)?
|
|
88
93
|
```
|
|
89
94
|
|
|
90
|
-
|
|
91
|
-
|
|
95
|
+
> Codex 模式(CODEX_MODE=true):自动选择 B,输出 `[降级模式:无知识库,以代码推断为准]`,不等待用户输入。
|
|
96
|
+
|
|
97
|
+
- 选 A → 执行 `/modus:init` 流程,完成后继续
|
|
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`,输出:`[会话检测: {匹配/不匹配} | 上次: {日期} {域}]`
|
|
92
107
|
|
|
93
108
|
---
|
|
94
109
|
|
|
95
|
-
### Step 2
|
|
110
|
+
### Step 2:智能分析引擎
|
|
111
|
+
|
|
112
|
+
> **若 NO_SKILL=true**:跳过此步,直接进入 Step 5。
|
|
96
113
|
|
|
97
114
|
基于用户 prompt 和 knowledge-catalog 内容,推导以下三个维度,**不需要读取完整 SKILL.md**:
|
|
98
115
|
|
|
99
116
|
#### 2A:域匹配与置信度
|
|
100
117
|
|
|
118
|
+
若 FORCED_DOMAIN 已设置,直接使用,跳过匹配计算。
|
|
119
|
+
|
|
120
|
+
若 FOCUS_FILE 已设置,先读取该文件,从包路径、类名中推断域,再进行匹配。
|
|
121
|
+
|
|
101
122
|
对每个 catalog 中的业务域,计算匹配置信度:
|
|
102
123
|
|
|
103
124
|
```
|
|
@@ -108,99 +129,78 @@ B. 继续使用降级模式(无业务上下文,结果质量可能降低)
|
|
|
108
129
|
```
|
|
109
130
|
|
|
110
131
|
**输出规则:**
|
|
111
|
-
- 置信度 ≥ 85% 的**单个域**:自动选中并**输出一行可见日志**(不需要等待用户确认,继续下一步):
|
|
112
|
-
```
|
|
113
|
-
[已匹配 order 域 · 置信度 92%]
|
|
114
|
-
```
|
|
115
|
-
用户若看到匹配错误,在下一条输入中纠正即可,Agent 重新匹配。
|
|
116
|
-
- 多个域,或最高置信度 < 85%:展示候选列表,等待用户确认(可直接回车接受建议):
|
|
117
|
-
```
|
|
118
|
-
根据你的需求,以下域可能相关:
|
|
119
132
|
|
|
120
|
-
|
|
121
|
-
|
|
133
|
+
- 置信度 ≥ 85% 的**单个域**:自动选中,无需用户确认
|
|
134
|
+
- Codex 模式(CODEX_MODE=true):阈值降低至 70%,更激进地自动推断
|
|
135
|
+
- 多个域或最高置信度未达阈值:展示候选列表(Codex 模式下自动选最高分)
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
根据你的需求,我匹配到以下业务域:
|
|
139
|
+
|
|
140
|
+
✓ order(订单域)— 订单创建、状态流转 [verified] 置信度 92% → 自动加载
|
|
141
|
+
? payment(支付域)— 支付发起、回调 [proven] 置信度 60% → 是否也需要?
|
|
142
|
+
|
|
143
|
+
直接回车确认,或告诉我调整。
|
|
144
|
+
```
|
|
122
145
|
|
|
123
|
-
|
|
124
|
-
```
|
|
146
|
+
若 `--verbose`,输出每个域的完整置信度评分详情。
|
|
125
147
|
|
|
126
148
|
#### 2B:任务复杂度评估
|
|
127
149
|
|
|
128
150
|
| 复杂度 | 判定条件 | 后续影响 |
|
|
129
151
|
|--------|---------|---------|
|
|
130
|
-
| `Simple` | 单域 / 有明确接口名和功能描述 / 无跨域依赖 /
|
|
152
|
+
| `Simple` | 单域 / 有明确接口名和功能描述 / 无跨域依赖 / 可预估为单文件改动 | Design Brief 精简为 3 节 |
|
|
131
153
|
| `Medium` | 跨域依赖 / 涉及状态机或事务 / 需求描述有一处明显歧义 | Design Brief 完整 9 节 |
|
|
132
154
|
| `Complex` | 多域 + 多处歧义 / 涉及 Pitfall 命中 / prompt 含「大概/可能/随便/看着来/都行」等模糊词 | Design Brief 完整 9 节 + 风险标注 |
|
|
133
155
|
|
|
134
156
|
#### 2C:输出分析摘要
|
|
135
157
|
|
|
136
|
-
完成 2A / 2B
|
|
158
|
+
完成 2A / 2B 后,在内联上下文中记录(不输出给用户,除非 --verbose):
|
|
137
159
|
|
|
138
160
|
```
|
|
139
161
|
[ANALYSIS]
|
|
140
162
|
domain: {domain} confidence: {%}
|
|
141
163
|
complexity: Simple | Medium | Complex
|
|
142
|
-
ambiguity_rules_hit: [R1, R3, ...]
|
|
164
|
+
ambiguity_rules_hit: [R1, R3, ...]
|
|
143
165
|
```
|
|
144
166
|
|
|
145
167
|
---
|
|
146
168
|
|
|
147
|
-
### Step 3:条件性 Skill
|
|
169
|
+
### Step 3:条件性 Skill 前置同步(轻感知)
|
|
148
170
|
|
|
149
|
-
|
|
171
|
+
> **若 QUICK_MODE=true 或 NO_SKILL=true**:跳过此步。
|
|
150
172
|
|
|
151
|
-
|
|
152
|
-
- 条件 1/2:从 `modus/knowledge-catalog.md` 读取 `status` 和 `last_referenced`(catalog 轻量字段,~200 tokens 内)
|
|
153
|
-
- 条件 3:从 `.codebuddy/skills/modus-biz-{domain}/SKILL.md` **仅读 frontmatter**(YAML 头部,通常 < 30 行)读取 `stale_cascade` 字段
|
|
173
|
+
**若 ENHANCE_DOMAIN 已设置**:优先对该域触发增量更新(无论是否满足以下条件)。
|
|
154
174
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
- `status = stale`(已被防腐机制降级,禁止直接引用)
|
|
158
|
-
- catalog 中 `last_referenced` 超过 `stale_after_days`(Skill frontmatter 中配置,默认 90 天)
|
|
159
|
-
- **`stale_cascade = true`**(上游依赖域发生变更,本域知识需要验证——见依赖图传播规则)
|
|
160
|
-
|
|
161
|
-
**以上三条是 vibe 的触发依据。hash 检查是模式 B 内部的执行逻辑,不在此处重复计算。**
|
|
162
|
-
|
|
163
|
-
#### 依赖链传播规则(stale_cascade)
|
|
175
|
+
对 Step 2 确认的每个业务域,执行以下检查:
|
|
164
176
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
```
|
|
168
|
-
⚠️ [payment 域知识需验证] 上游 order 域已更新,payment 域的跨域调用规范可能受影响。
|
|
169
|
-
选项:
|
|
170
|
-
A. 立即验证(~2 min)— 执行 /modus:refresh payment,确认后继续
|
|
171
|
-
B. 谨慎继续 — 加载旧知识,编码时对跨域接口调用保持警惕
|
|
172
|
-
C. 忽略 — 本次任务不涉及跨域调用,直接继续
|
|
173
|
-
```
|
|
177
|
+
#### 触发更新的条件(满足任一即触发)
|
|
174
178
|
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
-
|
|
179
|
+
- `maturity = stale`(已被标记为过期)
|
|
180
|
+
- catalog 中 `last_referenced` 超过 90 天
|
|
181
|
+
- hash 检查发现 key_files 有变化
|
|
178
182
|
|
|
179
183
|
#### 执行方式
|
|
180
184
|
|
|
181
185
|
```
|
|
182
|
-
|
|
183
|
-
→
|
|
184
|
-
|
|
185
|
-
→ 模式 B hash 不一致:执行增量更新
|
|
186
|
-
→ 完成后输出单行状态:[已同步 {domain} 域知识]
|
|
187
|
-
|
|
188
|
-
触发联动验证(stale_cascade=true)
|
|
189
|
-
→ 展示上方三选项,等待用户选择
|
|
190
|
-
→ 选 A 时调用 modus-skill-creator 模式 B 并重置 stale_cascade: false
|
|
186
|
+
触发更新 → 静默执行增量 Skill 更新
|
|
187
|
+
→ 更新完成后输出单行状态:
|
|
188
|
+
[已同步 {domain} 域知识]
|
|
191
189
|
|
|
192
|
-
|
|
190
|
+
无需更新 → 直接进入 Step 4,不输出任何提示
|
|
193
191
|
```
|
|
194
192
|
|
|
195
|
-
|
|
193
|
+
Codex 模式:所有同步静默执行,不输出状态行(减少干扰)。
|
|
196
194
|
|
|
197
195
|
---
|
|
198
196
|
|
|
199
|
-
### Step 4
|
|
197
|
+
### Step 4:规则驱动澄清问题
|
|
198
|
+
|
|
199
|
+
> **若 QUICK_MODE=true 或 CODEX_MODE=true**:跳过此步,直接进入 Step 5。输出 `[Codex 模式:跳过交互确认,自动推断所有决策]`。
|
|
200
200
|
|
|
201
201
|
#### 歧义规则清单
|
|
202
202
|
|
|
203
|
-
根据 Step 2C 中记录的 `ambiguity_rules_hit
|
|
203
|
+
根据 Step 2C 中记录的 `ambiguity_rules_hit`,判断是否需要提问:
|
|
204
204
|
|
|
205
205
|
| 规则 ID | 触发条件 | 问题类型 |
|
|
206
206
|
|---------|---------|---------|
|
|
@@ -221,39 +221,58 @@ ambiguity_rules_hit: [R1, R3, ...] ← 命中的规则 ID,见 Step 4
|
|
|
221
221
|
命中 ≥ 3 条规则 → 优先选择最高影响的 2 条规则提问(R5 > R1 > R3 > R4 > R2)
|
|
222
222
|
```
|
|
223
223
|
|
|
224
|
-
|
|
224
|
+
等待用户回答后,输出一句话确认摘要:`好的,理解了:{核心决策点 1-2 句话}。开始实现。`
|
|
225
225
|
|
|
226
|
-
|
|
227
|
-
编码前需确认几点:
|
|
226
|
+
---
|
|
228
227
|
|
|
229
|
-
|
|
230
|
-
2. [{问题类型}] {具体问题} ← 最多 2 个
|
|
228
|
+
### Step 5:Level 2 加载——读匹配 Skill(~3000 tokens/个)
|
|
231
229
|
|
|
232
|
-
|
|
233
|
-
```
|
|
230
|
+
> **若 NO_SKILL=true**:跳过此步。
|
|
234
231
|
|
|
235
|
-
|
|
232
|
+
读取用户确认的业务域对应的完整 Skill 文件:
|
|
236
233
|
|
|
234
|
+
**路径规则(v3.1 Single Source of Truth):**
|
|
237
235
|
```
|
|
238
|
-
|
|
236
|
+
modus/knowledge/biz-{domain}/SKILL.md
|
|
239
237
|
```
|
|
240
238
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
### Step 5:Level 2 加载——读匹配 Skill(token 预算:~3,000/个,仅加载匹配域)
|
|
239
|
+
例如:`modus/knowledge/biz-order/SKILL.md`、`modus/knowledge/biz-payment/SKILL.md`
|
|
244
240
|
|
|
245
|
-
|
|
241
|
+
> **注意**:`.codebuddy/skills/modus-biz-{domain}/SKILL.md` 为旧路径引用桩,已废弃,请勿使用。
|
|
246
242
|
|
|
247
|
-
|
|
243
|
+
**加载注意事项:**
|
|
248
244
|
- 只加载确认相关的域,不相关的域 Skill **不读取**(节省 token)
|
|
249
|
-
- 若 Skill 的 `
|
|
245
|
+
- 若 Skill 的 `maturity` 为 `draft`,提示:「该 Skill 较新,若与代码有出入,以代码为准」
|
|
246
|
+
- 若 Step 1 检测到**续接上次会话**且域相同,可跳过重新加载,直接使用上次上下文
|
|
250
247
|
- 在 Skill 中重点关注 `[pitfall]`、`[model]`、`[guideline]` 条目,以及 `关键文件索引`
|
|
251
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
|
+
|
|
252
268
|
---
|
|
253
269
|
|
|
254
|
-
### Step 6:自适应内联设计方案(Design Brief CoT
|
|
270
|
+
### Step 6:自适应内联设计方案(Design Brief CoT)
|
|
271
|
+
|
|
272
|
+
> **若 SKIP_DESIGN=true 或 --no-design**:跳过此步,输出 `[--no-design: 跳过设计,直接编码]`,进入 Step 7。
|
|
273
|
+
> **若 DRY_RUN=true**:执行此步,但 Step 7 停止(只输出设计,不生成代码)。
|
|
255
274
|
|
|
256
|
-
**触发:**
|
|
275
|
+
**触发:** 每次编码任务前强制执行,不可省略(除非 --no-design)。
|
|
257
276
|
**产出:** 内联于当前 LLM 上下文,**不写入任何文件**。
|
|
258
277
|
|
|
259
278
|
根据 Step 2B 评估的复杂度,输出不同深度的设计方案:
|
|
@@ -266,8 +285,8 @@ ambiguity_rules_hit: [R1, R3, ...] ← 命中的规则 ID,见 Step 4
|
|
|
266
285
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
267
286
|
|
|
268
287
|
## 实现蓝图
|
|
269
|
-
Data: {Mapper 类/方法}
|
|
270
|
-
Service: {Manager/Service
|
|
288
|
+
Data: {Mapper 类/方法}(路径: modus/knowledge/biz-{domain}/SKILL.md → 关键文件索引)
|
|
289
|
+
Service: {Manager/Service 类/方法,标注 @Transactional 位置}
|
|
271
290
|
API: {Facade/Controller 类/方法}
|
|
272
291
|
|
|
273
292
|
## 禁止事项
|
|
@@ -278,36 +297,51 @@ API: {Facade/Controller 类/方法}
|
|
|
278
297
|
|-------|---------|---------|
|
|
279
298
|
| {需求} | {类/方法} | {测试/联调} |
|
|
280
299
|
|
|
300
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
301
|
+
[End of Design Brief — 开始编码]
|
|
281
302
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
282
303
|
```
|
|
283
304
|
|
|
284
305
|
#### Medium/Complex 模式(完整 9 节)
|
|
285
306
|
|
|
286
|
-
调用 `modus-design-brief` Skill,传入:
|
|
287
|
-
- `mode: vibe`(内联输出模式,不落盘)
|
|
288
|
-
- `complexity: Medium | Complex`
|
|
289
|
-
- `analysis_doc: 用户 prompt + Step 4 确认的意图摘要`
|
|
290
|
-
- `business_skills: Step 5 已加载的 Skill 内容`
|
|
291
|
-
- `constitution: Step 0 读取的 constitution 字段`
|
|
292
|
-
|
|
293
|
-
**Complex 模式额外要求:**
|
|
294
|
-
- 节 6(边界条件)必须完整展开所有失败路径
|
|
295
|
-
- 节 9(需求追踪矩阵)每行追加 `⚠️` 标注已命中的 Pitfall
|
|
296
|
-
|
|
297
307
|
```
|
|
298
308
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
299
309
|
[Design Brief — {Simple|Medium|Complex} | 域: {domain1}, {domain2}]
|
|
300
310
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
301
311
|
|
|
302
312
|
## 1. 基本信息
|
|
313
|
+
模式: vibe | 涉及域: {domain1}, {domain2} | 复杂度: {level}
|
|
314
|
+
|
|
303
315
|
## 2. 业务意图摘要
|
|
316
|
+
{来自 Step 4 确认的意图,或自动推断}
|
|
317
|
+
|
|
304
318
|
## 3. 实体与数据模型
|
|
319
|
+
{基于 Skill [model] 条目和用户意图推导,字段带类型}
|
|
320
|
+
|
|
305
321
|
## 4. API / 接口合同
|
|
322
|
+
{方法签名,带完整包路径}
|
|
323
|
+
|
|
306
324
|
## 5. 实现蓝图
|
|
325
|
+
Data: {具体 Mapper 类/方法}
|
|
326
|
+
Service: {具体 Manager/Service 类/方法,标注 @Transactional 位置}
|
|
327
|
+
API: {Facade/Controller 类/方法}
|
|
328
|
+
|
|
307
329
|
## 6. 边界条件与异常处理
|
|
330
|
+
{覆盖关键失败路径,含错误码}
|
|
331
|
+
{Complex 模式:展开所有失败路径,每条附错误码}
|
|
332
|
+
|
|
308
333
|
## 7. 代码生成提示
|
|
334
|
+
{来自 Skill 关键文件索引的可复用类 + 命名规范示例}
|
|
335
|
+
{Step 6 感知到的现有代码结构}
|
|
336
|
+
|
|
309
337
|
## 8. 禁止事项与已知坑
|
|
338
|
+
{constitution hard_rules + Skill [pitfall]}
|
|
339
|
+
{Complex 模式:每条附 pitfall 来源和影响范围}
|
|
340
|
+
|
|
310
341
|
## 9. 需求-任务追踪矩阵
|
|
342
|
+
| 需求点 | 对应实现 | 校验方式 | 风险 |
|
|
343
|
+
|---|---|---|---|
|
|
344
|
+
| {需求} | {类/方法} | {测试/联调} | {⚠️ pitfall(Complex 模式)} |
|
|
311
345
|
|
|
312
346
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
313
347
|
[End of Design Brief — 开始编码]
|
|
@@ -316,31 +350,22 @@ API: {Facade/Controller 类/方法}
|
|
|
316
350
|
|
|
317
351
|
---
|
|
318
352
|
|
|
319
|
-
### Step 7:执行编码任务(Level 3
|
|
353
|
+
### Step 7:执行编码任务(Level 3 按需加载)
|
|
320
354
|
|
|
321
|
-
|
|
355
|
+
> **若 DRY_RUN=true**:输出 `[--dry-run: 已生成 Design Brief,不输出代码。如需实现,去掉 --dry-run 重新运行。]`,结束执行。
|
|
322
356
|
|
|
323
|
-
|
|
324
|
-
任务目标:{一句话,说明本次编码要实现什么}
|
|
325
|
-
完成标准:
|
|
326
|
-
· 功能验证:{可运行的验证命令或手动验证步骤,如 mvn test -Dtest=OrderServiceTest}
|
|
327
|
-
· 影响范围:{仅修改以下文件/类,不涉及其他}
|
|
328
|
-
· 未在范围内的改动,即使发现问题也只标注不修改
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
> **设计理由(Karpathy Goal-Driven Execution):** "Give it success criteria and watch it go." 在开工前声明可验证的完成标准,而不是靠感觉判断"完成了"。用户也能据此快速确认 Agent 理解了意图。
|
|
332
|
-
|
|
333
|
-
---
|
|
334
|
-
|
|
335
|
-
基于 Step 6 内联设计方案和澄清后的意图,执行用户的编码请求:
|
|
357
|
+
基于 Step 6 内联设计方案,执行用户的编码请求:
|
|
336
358
|
|
|
337
|
-
-
|
|
338
|
-
-
|
|
339
|
-
-
|
|
340
|
-
- **Level 3
|
|
359
|
+
- 以设计方案中「实现蓝图」(节 5)为编码路线图
|
|
360
|
+
- 严格遵守「禁止事项」(节 8)——这是 constitution hard_rules 和 Skill [pitfall] 的汇总
|
|
361
|
+
- 引用「代码生成提示」(节 7)中的现有类路径,不凭空创造类名
|
|
362
|
+
- **Level 3 加载**:需要具体代码实现时,按需读取 Skill `关键文件索引` 指向的实际代码文件(而非预先全量读取)
|
|
363
|
+
- **编辑优先(Cursor 原则)**:优先修改已有文件,而非创建新文件;改动范围最小化
|
|
364
|
+
- **增量输出(Cursor 原则)**:大改动时分批输出,每批代码可独立编译通过
|
|
341
365
|
- 对不确定的业务规则,优先参考 Skill 中的规则描述
|
|
342
366
|
- 如发现 Skill 中记录有误或过时,记录到内部缓冲区,在 Step 8 处理
|
|
343
|
-
|
|
367
|
+
|
|
368
|
+
Codex 模式下,每个文件生成前输出分隔符:`=== 生成文件: {path} ===`
|
|
344
369
|
|
|
345
370
|
---
|
|
346
371
|
|
|
@@ -357,51 +382,28 @@ API: {Facade/Controller 类/方法}
|
|
|
357
382
|
|
|
358
383
|
#### 执行方式
|
|
359
384
|
|
|
360
|
-
**不在 session 结束时直接写入 Skill 文件,改为缓冲到待沉淀队列:**
|
|
361
|
-
|
|
362
|
-
```
|
|
363
|
-
有新知识 → 追加到 modus/sessions/pending-knowledge.yaml(append-only):
|
|
364
|
-
- domain: {domain}
|
|
365
|
-
type: pitfall | guideline | model | decision
|
|
366
|
-
content: {知识内容}
|
|
367
|
-
evidence: {代码文件路径}
|
|
368
|
-
session: {session-id}
|
|
369
|
-
timestamp: {ISO8601}
|
|
370
|
-
→ 输出单行提示:
|
|
371
|
-
[缓冲 {N} 条新知识 → 将在 git commit 时沉淀到 Skill]
|
|
372
|
-
|
|
373
|
-
无新知识 → 静默跳过
|
|
374
385
|
```
|
|
386
|
+
有新知识 → 写入 modus/knowledge/biz-{domain}/SKILL.md(v3.1 路径)
|
|
387
|
+
→ 写入完成后输出单行提示:
|
|
388
|
+
[已更新 {domain} 域知识: 新增 [pitfall] {摘要} / 更正 [model] {字段名}]
|
|
375
389
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
```bash
|
|
379
|
-
# 用户运行 /modus:commit 替代 git commit,自动执行:
|
|
380
|
-
# 1. 读取 pending-knowledge.yaml 中未沉淀的条目
|
|
381
|
-
# 2. 调用 modus-skill-creator 模式 C 批量写入 Skill
|
|
382
|
-
# 3. 清空已沉淀条目,保留未沉淀的(如 Skill 不存在的域)
|
|
383
|
-
# 4. 执行 git commit
|
|
390
|
+
无新知识 → 静默跳过,不输出任何提示
|
|
384
391
|
```
|
|
385
392
|
|
|
386
|
-
|
|
387
|
-
-
|
|
388
|
-
-
|
|
389
|
-
-
|
|
390
|
-
|
|
391
|
-
**写回原则(不变):**
|
|
392
|
-
- 只写有明确代码证据的知识,不写推测性内容
|
|
393
|
-
- 每次写回最多 5 条新条目(跨 session 累积的可以更多)
|
|
394
|
-
- 更正已有条目时,保留原条目并追加修订记录
|
|
395
|
-
|
|
396
|
-
**`usage_count` 更新时机(vibe 模式):**
|
|
397
|
-
|
|
398
|
-
`/modus:commit` 执行成功(git commit exit code = 0)且知识已写入 Skill 后,对本次 vibe session 涉及的每个业务域执行 `usage_count += 1`。由 `/modus:commit` 命令负责执行此更新,不在 vibe session 内部执行。
|
|
393
|
+
**写回原则:**
|
|
394
|
+
- 只写入有明确代码证据的知识,不写推测性内容
|
|
395
|
+
- 每次写回最多 3 条新条目,避免批量污染
|
|
396
|
+
- 更正已有条目时,保留原条目并追加修订记录(不覆盖历史)
|
|
397
|
+
- Codex 模式:写回操作不输出提示
|
|
399
398
|
|
|
400
399
|
---
|
|
401
400
|
|
|
402
401
|
### Step 9:写入 Session 日志
|
|
403
402
|
|
|
404
|
-
编码完成后,将本次会话**追加**(append-only
|
|
403
|
+
编码完成后,将本次会话**追加**(append-only,禁止覆盖原有内容)到日志文件:
|
|
404
|
+
|
|
405
|
+
- 若 STORY_ID 已设置:写入 `modus/stories/{STORY_ID}/vibe-log.md`
|
|
406
|
+
- 否则:写入 `modus/sessions/vibe-log.md`
|
|
405
407
|
|
|
406
408
|
```markdown
|
|
407
409
|
## {YYYY-MM-DD HH:mm} — {需求一句话摘要}
|
|
@@ -410,6 +412,7 @@ API: {Facade/Controller 类/方法}
|
|
|
410
412
|
- **复杂度:** Simple | Medium | Complex
|
|
411
413
|
- **修改文件:** {变更文件列表,最多 5 个}
|
|
412
414
|
- **知识写回:** {本次写回条目摘要,无则填「无」}
|
|
415
|
+
- **platform:** cursor | codex(CODEX_MODE=true 时填 codex)
|
|
413
416
|
|
|
414
417
|
---
|
|
415
418
|
```
|
|
@@ -418,15 +421,32 @@ API: {Facade/Controller 类/方法}
|
|
|
418
421
|
|
|
419
422
|
---
|
|
420
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
|
+
|
|
421
438
|
## 氛围编程原则
|
|
422
439
|
|
|
423
|
-
-
|
|
424
|
-
- **先设计再编码**:Step 6
|
|
425
|
-
-
|
|
440
|
+
- **智能优先,减少打断**:域匹配明确时自动确认,无需强制等用户输入;任务清晰时跳过提问
|
|
441
|
+
- **先设计再编码**:Step 6 内联设计方案是编码的前置必要步骤,不可省略(除非 --no-design)
|
|
442
|
+
- **知识闭环**:每次 vibe 编码都是一次知识更新机会,Step 3 前置同步 + Step 8 后置写回,知识库随项目演进自动积累
|
|
443
|
+
- **文件优先感知**:编码前先感知现有代码结构,避免生成冲突的接口或重复的类名(Cursor Vibe 原则)
|
|
444
|
+
- **编辑优先**:优先修改已有文件,改动最小化,每批代码可独立编译(Cursor Vibe 原则)
|
|
445
|
+
- **会话连续**:利用 vibe-log.md 实现跨会话上下文传递,相同域不重复加载(Cursor Vibe 原则)
|
|
426
446
|
- **有据可依**:引用的实体、字段、接口名必须来自 Skill 或已有代码
|
|
427
447
|
- **宪法优先**:constitution.hard_rules 是不可违反的底线,优先于一切
|
|
428
448
|
- **按需加载**:不预先读取所有 Skill,降低 token 消耗
|
|
429
|
-
-
|
|
449
|
+
- **主动补全**:发现明显缺失(如缺少参数校验、日志)时主动补充
|
|
430
450
|
|
|
431
451
|
---
|
|
432
452
|
|
|
@@ -436,8 +456,86 @@ API: {Facade/Controller 类/方法}
|
|
|
436
456
|
|
|
437
457
|
1. 跳过 Step 2-3(无 catalog 可分析)
|
|
438
458
|
2. Step 4 仅执行 R2(模糊词检测)和 R4(缺少决策参数检测)
|
|
439
|
-
3. Step
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
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
|
+
```
|