@modus-ai/modus 0.1.7 → 0.2.1
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 +2 -2
- package/package.json +1 -1
- package/templates/skills/modus-design-brief/SKILL.md +2 -2
- package/templates/skills/modus-harness/SKILL.md +3 -3
- package/templates/skills/modus-init/SKILL.md +20 -20
- package/templates/skills/modus-plan/SKILL.md +159 -198
- package/templates/skills/modus-spec/SKILL.md +6 -6
- package/templates/skills/modus-vibe/SKILL.md +7 -7
package/README.md
CHANGED
|
@@ -42,7 +42,7 @@ modus init # CLI 初始化,生成框架文件和配置
|
|
|
42
42
|
|------|------|-----------|
|
|
43
43
|
| `/modus:init` | 扫描项目,生成业务/团队/技术三层知识库 + 知识目录 | `.codebuddy/skills/` + `modus/knowledge-catalog.md` |
|
|
44
44
|
| `/modus:vibe` | 氛围编程,渐进式加载业务上下文后直接编码 | 直接修改代码,无新增文件 |
|
|
45
|
-
| `/modus:plan` |
|
|
45
|
+
| `/modus:plan` | 功能规划,两层知识检索 + 3 问澄清 + 单一 plan.md + Build 确认执行 | `modus/plans/{name}/plan.md` |
|
|
46
46
|
| `/modus:spec` | 规范开发,delta specs + GIVEN/WHEN/THEN 验收,含可选 verify + 冲突检测 | `modus/changes/{name}/`,归档合并到 `modus/specs/` |
|
|
47
47
|
| `/modus:auto` | 智能模式推荐:读 TAPD Story,四维评分,推荐 vibe/plan/spec/harness | 启动所选模式后按该模式产出 |
|
|
48
48
|
| `/modus:harness` | 全自动双 Loop 多智能体流程,8 个 SubAgent 协作,含知识沉淀闭环 | `modus/plans/active/{story-id}/` |
|
|
@@ -138,7 +138,7 @@ your-project/
|
|
|
138
138
|
├── config.yaml ← 项目宪法
|
|
139
139
|
├── knowledge-catalog.md ← 全景索引(~200 tokens)
|
|
140
140
|
├── specs/{domain}/spec.md ← 主规格库(/spec 归档后)
|
|
141
|
-
├── plans/{name}/
|
|
141
|
+
├── plans/{name}/plan.md ← /plan 唯一规划文档(含 .modus-state.yaml)
|
|
142
142
|
├── plans/active/{story-id}/ ← /harness 产出物
|
|
143
143
|
├── plans/archive/ ← /plan 归档
|
|
144
144
|
└── changes/ ← /spec 产出物及归档
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: modus-design-brief
|
|
3
|
-
description: 在代码开发前生成结构化的设计方案(design-brief),将需求分析信息转化为 LLM 可直接消费的实现指南。由 modus-plan、modus-spec 内部调用(落盘为 design-brief.md),或由 modus-vibe 内联调用(注入上下文,不落盘)。触发条件:plan/spec/vibe Skill 内部 Step
|
|
3
|
+
description: 在代码开发前生成结构化的设计方案(design-brief),将需求分析信息转化为 LLM 可直接消费的实现指南。由 modus-plan、modus-spec 内部调用(落盘为 design-brief.md),或由 modus-vibe 内联调用(注入上下文,不落盘)。触发条件:plan/spec/vibe Skill 内部 Step 6 调用,或用户直接运行 @modus-design-brief。
|
|
4
4
|
allowed-tools: Read, Write, Glob, Bash
|
|
5
5
|
disable: false
|
|
6
6
|
---
|
|
@@ -305,7 +305,7 @@ public enum {EnumName} {
|
|
|
305
305
|
|
|
306
306
|
### plan / spec 模式调用方式
|
|
307
307
|
|
|
308
|
-
在 Step
|
|
308
|
+
在 Step 6 中,直接调用本 Skill,传入以下参数:
|
|
309
309
|
```
|
|
310
310
|
output_path: modus/plans/{name}/design-brief.md # plan 模式
|
|
311
311
|
output_path: modus/changes/{name}/design-brief.md # spec 模式
|
|
@@ -85,7 +85,7 @@ B. 强制继续(无业务上下文,风险较高)
|
|
|
85
85
|
- 创建工作目录:`modus/plans/active/{story-id}/`
|
|
86
86
|
- 扫描目录,若存在部分产出物(含 HANDOFF 块),从断点处继续
|
|
87
87
|
|
|
88
|
-
### Step
|
|
88
|
+
### Step 1:澄清意图(仅全新流程)⏸️ 【人工交互节点】
|
|
89
89
|
|
|
90
90
|
读取 TAPD Story 内容后,在启动 SubAgent 01 之前,先确认关键信息:
|
|
91
91
|
|
|
@@ -115,7 +115,7 @@ B. 强制继续(无业务上下文,风险较高)
|
|
|
115
115
|
启动 Harness 流程...
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
### Step
|
|
118
|
+
### Step 2:INIT——知识注入
|
|
119
119
|
|
|
120
120
|
**Level 1 → Level 2 加载:**
|
|
121
121
|
基于用户确认的业务域,调用 SubAgent 00(模式 B:增量更新):
|
|
@@ -261,4 +261,4 @@ feat: {业务摘要}
|
|
|
261
261
|
5. Gate 失败 → 按规则处理(重入/上报)
|
|
262
262
|
6. 输出本轮进度卡片
|
|
263
263
|
7. 若 SubAgent 07 完成 → 触发 ARCHIVE 知识提取(SubAgent 00 模式 D)
|
|
264
|
-
8. 等待 SubAgent 写入产出物,重复 Step
|
|
264
|
+
8. 等待 SubAgent 写入产出物,重复 Step 2
|
|
@@ -21,9 +21,9 @@ disable: false
|
|
|
21
21
|
|
|
22
22
|
读取 `modus/config.yaml`(若存在),提取 `constitution` 字段中的硬性约束,作为整个初始化过程的最高优先级约束。
|
|
23
23
|
|
|
24
|
-
若 `modus/config.yaml` 不存在,将在 Step
|
|
24
|
+
若 `modus/config.yaml` 不存在,将在 Step 7 创建默认配置。
|
|
25
25
|
|
|
26
|
-
### Step
|
|
26
|
+
### Step 1:扫描已有 AI 工具配置
|
|
27
27
|
|
|
28
28
|
在扫描业务代码之前,先读取项目中已有的 AI 工具配置文件,将存量规则、上下文和 MCP 配置融入 Modus 知识库,避免重复发明轮子。
|
|
29
29
|
|
|
@@ -55,11 +55,11 @@ disable: false
|
|
|
55
55
|
|
|
56
56
|
2. **技术栈信息**(`techStack` 字段)
|
|
57
57
|
- 从 `CLAUDE.md` 中寻找构建命令、框架名称等技术栈线索
|
|
58
|
-
- 与代码文件检测结果合并,用于 Step
|
|
58
|
+
- 与代码文件检测结果合并,用于 Step 7 的技术知识 Skill
|
|
59
59
|
|
|
60
60
|
3. **编码规范 / 团队约定**(→ `modus-team-conventions` Skill)
|
|
61
61
|
- 将各工具中找到的约定规则(命名规范、禁止模式、最佳实践等)汇总
|
|
62
|
-
- 在 Step
|
|
62
|
+
- 在 Step 6 生成团队约定 Skill 时,把这些规则作为**基础输入**,标注来源(如 `[来源: .cursor/rules/naming.mdc]`)
|
|
63
63
|
- 避免重复:如果规则已在其他 Skill 中描述,仅添加引用
|
|
64
64
|
|
|
65
65
|
4. **MCP 服务器配置**(→ `modus/config.yaml` `mcpServers` 字段)
|
|
@@ -88,11 +88,11 @@ disable: false
|
|
|
88
88
|
继续?[Y/n]
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
若用户确认,继续 Step
|
|
91
|
+
若用户确认,继续 Step 2;若无任何已有配置,直接进入 Step 2。
|
|
92
92
|
|
|
93
93
|
---
|
|
94
94
|
|
|
95
|
-
### Step
|
|
95
|
+
### Step 2:项目扫描与业务分类
|
|
96
96
|
|
|
97
97
|
启动一个「项目分析 SubAgent」,执行以下操作:
|
|
98
98
|
|
|
@@ -120,7 +120,7 @@ disable: false
|
|
|
120
120
|
是否确认以上分类?(可以修改/新增/删除)
|
|
121
121
|
```
|
|
122
122
|
|
|
123
|
-
### Step
|
|
123
|
+
### Step 3:用户确认
|
|
124
124
|
|
|
125
125
|
等待用户确认或修改业务域列表。用户可以:
|
|
126
126
|
- 直接回复「确认」继续
|
|
@@ -128,7 +128,7 @@ disable: false
|
|
|
128
128
|
- 增加遗漏的业务域
|
|
129
129
|
- 删除不需要的域
|
|
130
130
|
|
|
131
|
-
### Step
|
|
131
|
+
### Step 4:生成业务 Skill(Layer 2)—— 并行执行
|
|
132
132
|
|
|
133
133
|
用户确认后,**同时**为每个业务域启动独立的「Skills Builder SubAgent」(`modus-harness-00-skills-builder` Skill,模式 A),并行生成所有业务 Skill 文件。各域之间完全独立,无需等待彼此完成。
|
|
134
134
|
|
|
@@ -145,11 +145,11 @@ SubAgent-3 (user域) ──► 扫描用户相关文件 ──► 生成 modu
|
|
|
145
145
|
│ │
|
|
146
146
|
└──────────────── 所有 SubAgent 完成 ──────────┘
|
|
147
147
|
↓
|
|
148
|
-
进入 Step
|
|
148
|
+
进入 Step 6(串行)
|
|
149
149
|
```
|
|
150
150
|
|
|
151
151
|
**每个 SubAgent 的任务(模式 A 标准流程):**
|
|
152
|
-
1. 接收域名称 + 代表性文件路径列表(来自 Step
|
|
152
|
+
1. 接收域名称 + 代表性文件路径列表(来自 Step 2 的分析结果)
|
|
153
153
|
2. 深度扫描该域的 Service/Manager/Mapper/Domain/Entity 层文件
|
|
154
154
|
3. 提取:核心实体、业务规则、API 契约、关键代码模式
|
|
155
155
|
4. 生成标准格式的 Skill 文件(含 `key_files`、`maturity: draft`)
|
|
@@ -164,7 +164,7 @@ SubAgent-3 (user域) ──► 扫描用户相关文件 ──► 生成 modu
|
|
|
164
164
|
|
|
165
165
|
每个 Skill 文件遵循 Business Skill 标准格式(含 maturity/last_referenced/usage_count 字段)。
|
|
166
166
|
|
|
167
|
-
### Step
|
|
167
|
+
### Step 5:多平台同步(Business Skills)
|
|
168
168
|
|
|
169
169
|
Business Skills 全部生成后,读取 `modus/config.yaml` 的 `platforms` 字段,将每个业务 Skill 同步到其他已选平台。
|
|
170
170
|
|
|
@@ -234,13 +234,13 @@ alwaysApply: false
|
|
|
234
234
|
|
|
235
235
|
---
|
|
236
236
|
|
|
237
|
-
### Step
|
|
237
|
+
### Step 6:生成团队约定 Skill(Layer 0-T)
|
|
238
238
|
|
|
239
239
|
调用「Skills Builder SubAgent」(模式 E:团队约定初始化):
|
|
240
240
|
|
|
241
241
|
从以下来源提取团队规范(**按优先级排列**):
|
|
242
242
|
|
|
243
|
-
1. **Step
|
|
243
|
+
1. **Step 1 扫描结果**(最高优先级)
|
|
244
244
|
- 从 `CLAUDE.md` / `AGENTS.md` / `.cursor/rules/` / `.codebuddy/rules/` 提取的编码规范
|
|
245
245
|
- 每条规则注明来源,例如:`[来源: .cursor/rules/naming.mdc]`
|
|
246
246
|
- 若同一规则在多个工具中重复,合并为一条并列出所有来源
|
|
@@ -253,26 +253,26 @@ alwaysApply: false
|
|
|
253
253
|
|
|
254
254
|
生成文件:`.codebuddy/skills/modus-team-conventions/SKILL.md`
|
|
255
255
|
|
|
256
|
-
**注意:** 若 Step
|
|
256
|
+
**注意:** 若 Step 1 中已有来自其他工具的规则,在 Skill 文件开头添加来源声明:
|
|
257
257
|
```markdown
|
|
258
258
|
> 本 Skill 融合了以下 AI 工具的已有配置:Claude Code (CLAUDE.md)、Cursor (.cursor/rules/)
|
|
259
259
|
> 原始文件保持不变,Modus 仅在此处做统一索引。
|
|
260
260
|
```
|
|
261
261
|
|
|
262
|
-
### Step
|
|
262
|
+
### Step 7:生成技术知识 Skill(Layer 1)
|
|
263
263
|
|
|
264
264
|
调用「Skills Builder SubAgent」(模式 E:技术知识初始化),初始化技术知识骨架:
|
|
265
265
|
|
|
266
266
|
生成文件:`.codebuddy/skills/modus-tech-wiki/SKILL.md`
|
|
267
267
|
|
|
268
268
|
初始内容来源(按优先级):
|
|
269
|
-
1. **Step
|
|
269
|
+
1. **Step 1 扫描结果中的技术信息**
|
|
270
270
|
- `CLAUDE.md` 中记录的构建命令、测试命令(如 `mvn test`、`npm run test`)
|
|
271
271
|
- `.continue/config.json` 中的模型/上下文提供者配置
|
|
272
272
|
2. 从构建文件提取的技术栈(`pom.xml` → Spring Boot 版本、`package.json` → 框架版本等)
|
|
273
273
|
3. 占位符章节(反模式库、架构决策、跨项目经验——待后续工作流积累)
|
|
274
274
|
|
|
275
|
-
### Step
|
|
275
|
+
### Step 8:生成知识全景目录(knowledge-catalog.md)
|
|
276
276
|
|
|
277
277
|
在 `modus/knowledge-catalog.md` 创建全景索引,内容如下:
|
|
278
278
|
|
|
@@ -300,7 +300,7 @@ updated: {YYYY-MM-DD}
|
|
|
300
300
|
衰减规则:proven 12 个月未引用 → verified;verified 6 个月未引用 → draft(标注 ⚠️ 可能已过时)
|
|
301
301
|
```
|
|
302
302
|
|
|
303
|
-
### Step
|
|
303
|
+
### Step 9:初始化 modus/config.yaml(若不存在)
|
|
304
304
|
|
|
305
305
|
若项目尚无 `modus/config.yaml`,生成默认配置:
|
|
306
306
|
|
|
@@ -327,7 +327,7 @@ constitution:
|
|
|
327
327
|
|
|
328
328
|
提示用户填写 `constitution` 字段,以便后续命令无需重复说明项目约束。
|
|
329
329
|
|
|
330
|
-
### Step
|
|
330
|
+
### Step 10:完成回报
|
|
331
331
|
|
|
332
332
|
所有业务 Skill 生成完毕后,回复用户:
|
|
333
333
|
|
|
@@ -383,7 +383,7 @@ constitution:
|
|
|
383
383
|
|
|
384
384
|
---
|
|
385
385
|
|
|
386
|
-
### Step
|
|
386
|
+
### Step 4 补充:生成 Business Skill 时必须填写 key_files
|
|
387
387
|
|
|
388
388
|
在生成每个业务 Skill(`.codebuddy/skills/modus-biz-{domain}/SKILL.md`)时,**必须**在 frontmatter 中填写 `key_files` 字段:
|
|
389
389
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: modus-plan
|
|
3
|
-
description: Use this skill when executing /modus:plan command to generate
|
|
3
|
+
description: Use this skill when executing /modus:plan command to generate a single structured plan.md backed by up-to-date business Skills. Trigger on /modus:plan command or when user wants to plan a feature with full business context. Loads Skill domains first, falls back to platform rules + source scan, then asks exactly 3 targeted questions before generating the plan. Ends with a Build confirmation loop where user can iterate on plan.md before executing code generation.
|
|
4
4
|
allowed-tools: Read, Write, Glob, Bash
|
|
5
5
|
disable: false
|
|
6
6
|
---
|
|
@@ -9,19 +9,9 @@ disable: false
|
|
|
9
9
|
|
|
10
10
|
**触发条件:** 用户运行 `/modus:plan [需求描述]` 时使用此 Skill。
|
|
11
11
|
|
|
12
|
-
支持快速模式:`/modus:plan --quick [描述]` 跳过 design.md 和 design-brief.md,仅生成 proposal + tasks。
|
|
13
|
-
|
|
14
12
|
## 职责
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
### 复杂度分级与产出物对应
|
|
19
|
-
|
|
20
|
-
| 级别 | 判定标准 | 产出物 | 自动建议 |
|
|
21
|
-
|------|----------|--------|---------|
|
|
22
|
-
| Simple | 单域、≤3 文件变更、无架构变化、bug fix 类 | proposal + tasks | 自动建议 `--quick` |
|
|
23
|
-
| Medium | 1-2 个域、有新接口但无架构变化、≤5 文件 | proposal + design + tasks | 完整模式 |
|
|
24
|
-
| Complex | 跨 3+ 域 / 新增数据表 / 引入新中间件 / 重构 | proposal + design + design-brief + tasks | 完整模式(提示考虑 /spec) |
|
|
14
|
+
功能规划入口。通过**两层知识检索**获取业务上下文,先评估需求复杂度自动分级(simple/medium/complex),再基于加载的知识向用户提出恰好 3 个精准澄清问题,最终生成单一 `plan.md` 规划文档。文档生成后进入 Build 确认循环,用户可反复修改直至满意后触发代码执行,并将本次规划中的新知识回写到 Skill(后置更新)。
|
|
25
15
|
|
|
26
16
|
---
|
|
27
17
|
|
|
@@ -45,11 +35,19 @@ disable: false
|
|
|
45
35
|
- 若用户选择继续,跳到对应的未完成步骤
|
|
46
36
|
- 若是全新流程,正常从 Step 1 开始
|
|
47
37
|
|
|
38
|
+
---
|
|
39
|
+
|
|
48
40
|
### Step 1:Level 1 加载——读知识目录(~200 tokens)
|
|
49
41
|
|
|
50
42
|
读取 `modus/knowledge-catalog.md`,了解当前可用 Skill 及其状态。
|
|
51
43
|
|
|
52
|
-
|
|
44
|
+
若不存在,输出降级提示:
|
|
45
|
+
```
|
|
46
|
+
⚠️ 未找到 modus/knowledge-catalog.md,建议先运行 /modus:init 初始化知识库。
|
|
47
|
+
将使用平台规则文件和源码扫描作为替代知识来源继续执行。
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
53
51
|
|
|
54
52
|
### Step 2:域匹配与确认(有则更新,无则新增)
|
|
55
53
|
|
|
@@ -65,9 +63,11 @@ disable: false
|
|
|
65
63
|
确认?
|
|
66
64
|
```
|
|
67
65
|
|
|
68
|
-
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### Step 3:复杂度评估与自动分级
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
域确认后,快速评估需求复杂度并输出分级建议:
|
|
71
71
|
|
|
72
72
|
**评估维度:**
|
|
73
73
|
|
|
@@ -94,18 +94,13 @@ disable: false
|
|
|
94
94
|
✓ 预估 3-5 个文件变更
|
|
95
95
|
✓ 无新数据表,无新中间件
|
|
96
96
|
⚠ 有接口契约变更(影响复杂度)
|
|
97
|
-
|
|
98
|
-
建议文档深度:
|
|
99
|
-
{Simple → 建议使用 --quick 模式(proposal + tasks)}
|
|
100
|
-
{Medium → 完整模式(proposal + design + tasks)}
|
|
101
|
-
{Complex → 完整模式 + design-brief,或考虑升级为 /modus:spec}
|
|
102
97
|
```
|
|
103
98
|
|
|
104
99
|
**复杂度为 Complex 时的特别提示:**
|
|
105
100
|
|
|
106
101
|
```
|
|
107
102
|
⚠️ 此需求复杂度较高,建议考虑以下方案:
|
|
108
|
-
A. 继续使用 /modus:plan
|
|
103
|
+
A. 继续使用 /modus:plan(生成 plan.md,含方案对比和任务清单)
|
|
109
104
|
B. 升级为 /modus:spec(可获得 delta specs 和 GIVEN/WHEN/THEN 验收标准)
|
|
110
105
|
C. 拆分需求后分别 /modus:plan
|
|
111
106
|
|
|
@@ -114,56 +109,21 @@ disable: false
|
|
|
114
109
|
|
|
115
110
|
若用户选择 B,退出当前 plan 流程,以相同 prompt 启动 `/modus:spec`。
|
|
116
111
|
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
需求较简单,是否使用快速模式(跳过 design.md,仅生成 proposal + tasks)?[y/N]
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Step 3:澄清用户意图(AskUserQuestion)
|
|
123
|
-
|
|
124
|
-
确认域后,在正式启动规划前,提出 1-3 个关键澄清问题:
|
|
125
|
-
|
|
126
|
-
**提问原则:**
|
|
127
|
-
- 聚焦影响规划方向的不确定点(范围、优先级、约束条件)
|
|
128
|
-
- 若 prompt 已足够具体,可跳过此步
|
|
129
|
-
- 从 Skill 中已有的 `[pitfall]` 和 `[decision]` 检查是否存在相关风险点
|
|
130
|
-
|
|
131
|
-
**示例问题类型:**
|
|
132
|
-
```
|
|
133
|
-
为了生成准确的规划文档,我需要确认:
|
|
134
|
-
|
|
135
|
-
1. [范围] 这次改动是否涉及 {相邻域},还是严格限定在 {domain} 域内?
|
|
136
|
-
2. [优先级] 功能上线有时间限制吗?影响 Sprint 拆分方式。
|
|
137
|
-
3. [兼容性] {已有接口/数据结构} 是否可以修改,还是需要向后兼容?
|
|
138
|
-
4. [规模] 预期数据量级是多少?影响技术方案选型。
|
|
139
|
-
5. [风险] ⚠️ Skill 中记录了已知坑:{pitfall},是否已考虑到?
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
等待用户回答后,输出意图摘要:
|
|
143
|
-
|
|
144
|
-
```
|
|
145
|
-
理解已确认:
|
|
146
|
-
- 目标: {一句话概括}
|
|
147
|
-
- 边界: {在范围内 / 不在范围内}
|
|
148
|
-
- 约束: {技术/业务约束}
|
|
149
|
-
- 项目硬性规则: {来自 constitution 的关键规则}
|
|
150
|
-
|
|
151
|
-
开始前置更新 Skill,然后生成规划文档。
|
|
152
|
-
```
|
|
112
|
+
---
|
|
153
113
|
|
|
154
|
-
### Step 4
|
|
114
|
+
### Step 4:Skill 业务域加载(Level 2,含 hash 检查)
|
|
155
115
|
|
|
156
|
-
|
|
116
|
+
域确认后,对每个涉及的业务域执行以下流程(**先 hash 检查,再决定是否全量更新**):
|
|
157
117
|
|
|
158
|
-
####
|
|
118
|
+
#### 4-1:读取 Skill frontmatter(轻量操作,仅读前 20 行)
|
|
159
119
|
|
|
160
120
|
读取 `.codebuddy/skills/modus-biz-{domain}/SKILL.md` 的 YAML frontmatter,提取:
|
|
161
121
|
- `last_hash`:上次记录的 key_files 内容摘要
|
|
162
122
|
- `key_files`:关键源文件列表
|
|
163
123
|
|
|
164
|
-
若 Skill 不存在,跳到
|
|
124
|
+
若 Skill 不存在,跳到 4-4(新建)。
|
|
165
125
|
|
|
166
|
-
####
|
|
126
|
+
#### 4-2:计算当前 key_files 的 hash
|
|
167
127
|
|
|
168
128
|
使用 Bash 对 `key_files` 列出的文件内容做 SHA-1 摘要:
|
|
169
129
|
|
|
@@ -175,7 +135,7 @@ shasum -a 1 {file1} {file2} ... | awk '{print $1}' | sort | shasum -a 1 | awk '{
|
|
|
175
135
|
- 若某个 `key_files` 中的文件不存在(可能已被重命名/删除),视为「已变化」,强制更新
|
|
176
136
|
- 若 `key_files` 为空或缺失,视为「已变化」,强制更新
|
|
177
137
|
|
|
178
|
-
####
|
|
138
|
+
#### 4-3:对比 hash,决定是否跳过
|
|
179
139
|
|
|
180
140
|
```
|
|
181
141
|
当前 hash == last_hash(且 last_hash 非空)
|
|
@@ -184,10 +144,10 @@ shasum -a 1 {file1} {file2} ... | awk '{print $1}' | sort | shasum -a 1 | awk '{
|
|
|
184
144
|
→ 继续 Step 5
|
|
185
145
|
|
|
186
146
|
当前 hash != last_hash OR last_hash 为空
|
|
187
|
-
→ 进入
|
|
147
|
+
→ 进入 4-4 执行完整更新
|
|
188
148
|
```
|
|
189
149
|
|
|
190
|
-
####
|
|
150
|
+
#### 4-4:完整前置更新(仅在 hash 不匹配时执行)
|
|
191
151
|
|
|
192
152
|
启动「Skill 更新 SubAgent」(`modus-harness-00-skills-builder` 模式 B),执行:
|
|
193
153
|
|
|
@@ -196,7 +156,7 @@ shasum -a 1 {file1} {file2} ... | awk '{print $1}' | sort | shasum -a 1 | awk '{
|
|
|
196
156
|
3. 对比 Skill 内容与代码现实,识别差异
|
|
197
157
|
4. 更新 Skill 文件中过时的信息,更新 `last_referenced`、`usage_count` 和 `last_hash`
|
|
198
158
|
|
|
199
|
-
**输出变更摘要 block
|
|
159
|
+
**输出变更摘要 block:**
|
|
200
160
|
|
|
201
161
|
```
|
|
202
162
|
✓ modus-biz-order Skill 已更新
|
|
@@ -212,188 +172,194 @@ shasum -a 1 {file1} {file2} ... | awk '{print $1}' | sort | shasum -a 1 | awk '{
|
|
|
212
172
|
|
|
213
173
|
若有未初始化的域,调用模式 A 新建 Skill(`last_hash` 留空,`key_files` 由 AI 填写)。
|
|
214
174
|
|
|
215
|
-
|
|
175
|
+
**若所有域均已初始化且 Skill 加载成功,直接进入 Step 6,跳过 Step 5。**
|
|
216
176
|
|
|
217
|
-
|
|
177
|
+
---
|
|
218
178
|
|
|
219
|
-
|
|
220
|
-
创建 `modus/plans/{name}/.modus-state.yaml`:
|
|
221
|
-
```yaml
|
|
222
|
-
mode: plan
|
|
223
|
-
name: {name}
|
|
224
|
-
status: in-progress
|
|
225
|
-
complexity: medium # simple | medium | complex(来自 Step 2.5 评估)
|
|
226
|
-
quick_mode: false # --quick flag 或 simple 复杂度时用户选择跳过 design
|
|
227
|
-
domains: [{domain1}, {domain2}]
|
|
228
|
-
completed: []
|
|
229
|
-
pending: [proposal, design, design-brief, tasks] # quick_mode 时 pending 仅含 proposal + tasks
|
|
230
|
-
created: {ISO8601时间戳}
|
|
231
|
-
```
|
|
179
|
+
### Step 5:平台知识兜底扫描(仅在 Step 4 无命中时执行)
|
|
232
180
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
181
|
+
当 `knowledge-catalog.md` 不存在,或当前需求涉及的域全部未初始化时,切换到平台知识扫描模式:
|
|
182
|
+
|
|
183
|
+
**按已启用平台依次扫描规则文件:**
|
|
184
|
+
|
|
185
|
+
| 平台 | 扫描路径 |
|
|
186
|
+
|------|---------|
|
|
187
|
+
| CodeBuddy | `.codebuddy/skills/*/SKILL.md` |
|
|
188
|
+
| Claude | `CLAUDE.md` + `.claude/agents/*.md` |
|
|
189
|
+
| Cursor | `.cursor/rules/*.mdc` |
|
|
190
|
+
| Copilot | `.github/copilot-instructions.md` |
|
|
236
191
|
|
|
237
|
-
|
|
192
|
+
扫描完规则文件后,通过 Glob/Read 检索与用户需求关键词相关的源码文件(最多 5 个),提取架构约束与已有模式。
|
|
238
193
|
|
|
239
|
-
|
|
194
|
+
**输出兜底加载摘要:**
|
|
240
195
|
|
|
241
196
|
```
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
197
|
+
⚠️ 未找到已初始化的业务 Skill,已切换到平台知识扫描模式
|
|
198
|
+
已读取: .cursor/rules/modus-biz-order.mdc(Cursor 规则)
|
|
199
|
+
已读取: CLAUDE.md(项目约定)
|
|
200
|
+
已扫描: OrderService.java、OrderMapper.java(相关源码,共 2 个文件)
|
|
201
|
+
建议后续运行 /modus:init 正式初始化该业务域 Skill
|
|
245
202
|
```
|
|
246
203
|
|
|
247
|
-
|
|
204
|
+
---
|
|
248
205
|
|
|
249
|
-
|
|
250
|
-
# Proposal: {功能名称}
|
|
206
|
+
### Step 6:精准 3 问(AskUserQuestion)
|
|
251
207
|
|
|
252
|
-
|
|
253
|
-
{为什么做,业务价值}
|
|
208
|
+
基于 Step 4 或 Step 5 已加载的知识内容,向用户提出**恰好 3 个**澄清问题。
|
|
254
209
|
|
|
255
|
-
|
|
256
|
-
在范围内:
|
|
257
|
-
- {具体事项}
|
|
258
|
-
不在范围内:
|
|
259
|
-
- {明确排除}
|
|
210
|
+
**生成规则(按优先级排序,必须输出恰好 3 个):**
|
|
260
211
|
|
|
261
|
-
|
|
262
|
-
|
|
212
|
+
1. **P1 — Skill pitfall 关联问题**(最高优先级)
|
|
213
|
+
若加载内容中有与当前需求相关的 `[pitfall]`,必问。
|
|
214
|
+
示例:`Skill 中记录了「并发创建订单需加分布式锁」的坑,本次改动是否涉及并发写入场景?`
|
|
215
|
+
若有多个相关 pitfall,选取与本次需求匹配度最高的 1 个。
|
|
263
216
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
217
|
+
2. **P2 — 范围/边界问题**
|
|
218
|
+
影响规划深度的不确定点(跨域边界、兼容性要求、数据量级)。
|
|
219
|
+
示例:`这次改动是否需要向后兼容旧的导出格式,还是可以直接替换?`
|
|
220
|
+
|
|
221
|
+
3. **P3 — 优先级/约束问题**
|
|
222
|
+
时间窗口、技术选型偏好、外部依赖。
|
|
223
|
+
示例:`功能是否有明确的上线时间节点?这会影响 Sprint 拆分方式。`
|
|
224
|
+
|
|
225
|
+
**若 pitfall 不存在**,P1 改为「核心目标澄清」:本次改动的最高优先级目标是什么?
|
|
269
226
|
|
|
270
|
-
|
|
271
|
-
涉及文件变更(预估):
|
|
272
|
-
- {文件路径} — {新增/修改/删除,一句话说明变更目的}
|
|
227
|
+
等待用户回答后,输出意图确认摘要:
|
|
273
228
|
|
|
274
|
-
## 方案概述
|
|
275
|
-
{技术路径的高层描述}
|
|
276
229
|
```
|
|
230
|
+
理解已确认:
|
|
231
|
+
- 目标: {一句话概括}
|
|
232
|
+
- 边界: {在范围内 / 不在范围内}
|
|
233
|
+
- 约束: {技术/业务约束}
|
|
234
|
+
- 项目硬性规则: {来自 constitution 的关键规则}
|
|
277
235
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
2. 结合本次改动范围(涉及的域、预估的文件变更),筛选与当前功能相关的 pitfall
|
|
281
|
-
3. 每条 pitfall 注明来源 Skill(`来源: modus-biz-{domain}` 或 `来源: modus-team-conventions`)
|
|
282
|
-
4. 若无相关 pitfall,写 `暂无已知风险(相关 Skill 中未记录 pitfall)`,而非省略章节
|
|
236
|
+
开始生成 plan.md。
|
|
237
|
+
```
|
|
283
238
|
|
|
284
|
-
|
|
239
|
+
---
|
|
285
240
|
|
|
286
|
-
|
|
287
|
-
# Design: {功能名称}
|
|
241
|
+
### Step 7:生成 plan.md
|
|
288
242
|
|
|
289
|
-
|
|
290
|
-
{详细实现路径,引用具体的类/方法/接口}
|
|
243
|
+
基于已加载的知识和用户确认的意图,生成单一规划文档到 `modus/plans/{name}/plan.md`。
|
|
291
244
|
|
|
292
|
-
|
|
293
|
-
|
|
245
|
+
**确定 plan 名称:**
|
|
246
|
+
- 从用户 prompt 提取关键词,生成 kebab-case 名称(如 `add-batch-approve`)
|
|
247
|
+
- 如果目录已存在,提示用户确认
|
|
294
248
|
|
|
295
|
-
|
|
249
|
+
**写入状态文件:**
|
|
250
|
+
创建 `modus/plans/{name}/.modus-state.yaml`:
|
|
251
|
+
```yaml
|
|
252
|
+
mode: plan
|
|
253
|
+
name: {name}
|
|
254
|
+
status: in-progress
|
|
255
|
+
complexity: medium # simple | medium | complex(来自 Step 3 评估)
|
|
256
|
+
domains: [{domain1}, {domain2}]
|
|
257
|
+
completed: []
|
|
258
|
+
pending: [plan]
|
|
259
|
+
created: {ISO8601时间戳}
|
|
260
|
+
```
|
|
296
261
|
|
|
297
|
-
|
|
298
|
-
|------|------|
|
|
299
|
-
| 状态 | 已采纳 / 被否决 / 待评估 |
|
|
300
|
-
| 背景 | {为什么需要做这个决策,2-3 句话} |
|
|
301
|
-
| 选项 | A. {方案A} / B. {方案B} / C. {方案C} |
|
|
302
|
-
| 决策 | 选择方案 {X} |
|
|
303
|
-
| 原因 | {选择理由,包括技术/业务/成本考量} |
|
|
304
|
-
| 放弃理由 | 方案 {Y}:{为什么不选,如:实时性要求高不适合 MQ} |
|
|
305
|
-
| 影响 | {此决策对系统的长期影响,如:引入 MQ 后需维护消费者幂等性} |
|
|
262
|
+
**plan.md 内容结构(对齐 Cursor CreatePlan 风格):**
|
|
306
263
|
|
|
307
|
-
|
|
264
|
+
```markdown
|
|
265
|
+
# Plan: {功能名称}
|
|
308
266
|
|
|
309
|
-
##
|
|
310
|
-
{
|
|
267
|
+
## 概述
|
|
268
|
+
{1-2 句话,说明做什么、为什么做,以及核心业务价值}
|
|
311
269
|
|
|
312
|
-
##
|
|
313
|
-
- {
|
|
314
|
-
|
|
270
|
+
## 关键约束(来自项目宪法)
|
|
271
|
+
- {constitution.hard_rules 中与本次相关的规则}
|
|
272
|
+
<!-- 若无相关规则,写「以通用团队约定为准」 -->
|
|
315
273
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
-
|
|
319
|
-
-
|
|
274
|
+
## 已知风险 ⚠️
|
|
275
|
+
<!-- 自动从相关业务 Skill 的 [pitfall] 标签中提取,结合本次改动范围筛选 -->
|
|
276
|
+
- [pitfall | 来源: modus-biz-order] {具体风险描述,如:并发创建订单时需加分布式锁}
|
|
277
|
+
- [pitfall | 来源: modus-team-conventions] {具体风险描述,如:@Transactional 内部调用不生效}
|
|
278
|
+
<!-- 若无相关 pitfall,写「暂无已知风险(相关 Skill 中未记录 pitfall)」 -->
|
|
320
279
|
|
|
321
|
-
|
|
280
|
+
## 方案选项对比
|
|
281
|
+
- 方案 A(推荐):{简述实现路径} — 优:{优点};劣:{劣点或适用前提}
|
|
282
|
+
- 方案 B:{简述替代路径} — 优:{优点};劣:{劣点或排除理由}
|
|
283
|
+
<!-- 若只有一种可行方案,写「仅一种可行方案,原因:{说明}」 -->
|
|
322
284
|
|
|
323
|
-
|
|
324
|
-
-
|
|
325
|
-
-
|
|
326
|
-
-
|
|
327
|
-
-
|
|
328
|
-
- `constitution: constitution 字段`
|
|
285
|
+
## 实现 Todos
|
|
286
|
+
- [ ] 1. 数据层:{具体任务,如「新增 order_export 表,含 status/created_by 字段」}
|
|
287
|
+
- [ ] 2. 服务层:{具体任务}
|
|
288
|
+
- [ ] 3. 接口层:{具体任务}
|
|
289
|
+
- [ ] 4. 测试:单元测试 + 接口联调
|
|
329
290
|
|
|
330
|
-
|
|
291
|
+
## 影响文件(预估)
|
|
292
|
+
- `{文件路径}` — {新增/修改/删除,一句话说明变更目的}
|
|
293
|
+
```
|
|
331
294
|
|
|
332
|
-
|
|
295
|
+
**已知风险生成规则:**
|
|
296
|
+
1. 从 Step 4/5 已加载内容中,提取所有 `[pitfall]` 标签条目
|
|
297
|
+
2. 结合本次改动范围筛选相关条目,每条注明来源 Skill
|
|
298
|
+
3. 若无相关 pitfall,明确写出而非省略章节
|
|
333
299
|
|
|
334
|
-
|
|
335
|
-
# Tasks: {功能名称}
|
|
300
|
+
生成完成后更新 `.modus-state.yaml` 的 `completed` 列表(追加 `plan`)并从 `pending` 中移除。
|
|
336
301
|
|
|
337
|
-
|
|
338
|
-
- [ ] 1.1 {具体任务}
|
|
302
|
+
---
|
|
339
303
|
|
|
340
|
-
|
|
341
|
-
- [ ] 2.1 {具体任务}
|
|
304
|
+
### Step 8:Build 确认循环 ⏸️ 【人工审批节点】
|
|
342
305
|
|
|
343
|
-
|
|
344
|
-
- [ ] 3.1 {具体任务}
|
|
306
|
+
plan.md 生成后,展示结果并进入确认循环:
|
|
345
307
|
|
|
346
|
-
## 4. 测试
|
|
347
|
-
- [ ] 4.1 单元测试
|
|
348
|
-
- [ ] 4.2 接口联调
|
|
349
308
|
```
|
|
309
|
+
✅ plan.md 已就绪:modus/plans/{name}/plan.md
|
|
350
310
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
311
|
+
──────────────────────────────────────────
|
|
312
|
+
你可以:
|
|
313
|
+
[修改] 直接说出修改意见,我会更新 plan.md,更新后再次展示
|
|
314
|
+
[Build] 确认方案,开始按 plan.md 中的 Todos 生成代码
|
|
315
|
+
[归档] 仅保存文档,暂不执行代码生成
|
|
354
316
|
|
|
317
|
+
等待你的指令。
|
|
355
318
|
```
|
|
356
|
-
计划文档已生成:
|
|
357
|
-
modus/plans/{name}/proposal.md
|
|
358
|
-
modus/plans/{name}/design.md
|
|
359
|
-
modus/plans/{name}/design-brief.md
|
|
360
|
-
modus/plans/{name}/tasks.md
|
|
361
319
|
|
|
362
|
-
|
|
320
|
+
⏸️ **等待人工确认**
|
|
363
321
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
322
|
+
**循环逻辑:**
|
|
323
|
+
- 用户提出修改意见 → 更新 `plan.md` → 重新输出上述确认提示(循环,无次数限制)
|
|
324
|
+
- 用户回复「Build」/「开始」/「执行」→ 退出循环,以 `plan.md` 中的 Todos 为输入,启动 `/modus:vibe` 执行代码生成
|
|
325
|
+
- 用户回复「归档」/「稍后」→ 走归档流程,不启动代码生成
|
|
367
326
|
|
|
368
|
-
|
|
327
|
+
**Build 触发后:**
|
|
328
|
+
```
|
|
329
|
+
🚀 开始执行 plan.md 中的 Todos,启动 /modus:vibe...
|
|
330
|
+
读取: modus/plans/{name}/plan.md
|
|
331
|
+
执行范围: {Todos 列表}
|
|
332
|
+
```
|
|
369
333
|
|
|
370
|
-
|
|
371
|
-
1. 将目录移动到 `modus/plans/archive/{
|
|
334
|
+
**归档流程(用户选择归档时):**
|
|
335
|
+
1. 将目录移动到 `modus/plans/archive/{YYYY-MM-DD}-{name}/`
|
|
372
336
|
2. 更新 `.modus-state.yaml`:`status: archived`
|
|
373
|
-
3.
|
|
337
|
+
3. 输出:`✓ 已归档到 modus/plans/archive/{YYYY-MM-DD}-{name}/,可随时运行 /modus:vibe 参考此文档开始编码`
|
|
338
|
+
|
|
339
|
+
---
|
|
374
340
|
|
|
375
|
-
### Step
|
|
341
|
+
### Step 9:后置 Skill 更新(知识回写)
|
|
376
342
|
|
|
377
|
-
|
|
343
|
+
无论用户选择 Build 还是归档,规划阶段完成后即执行后置知识回写(模式 C):
|
|
378
344
|
|
|
379
|
-
1.
|
|
380
|
-
-
|
|
381
|
-
|
|
382
|
-
2. 从 proposal.md 的「已知风险」章节中提取任何**本次新发现的**风险(非来自现有 Skill 的已有记录):
|
|
345
|
+
1. 从 `plan.md` 的「方案选项对比」中提取技术决策:
|
|
346
|
+
- 每个有选型依据的决策 → `[decision]` 写入 `modus-tech-wiki`(跨项目)或对应业务 Skill(域特有)
|
|
347
|
+
2. 从「已知风险」章节中提取**本次新发现的**风险(非来自现有 Skill 的已有记录):
|
|
383
348
|
- 新发现的风险 → `[pitfall]` 追加到对应业务 Skill
|
|
384
|
-
3.
|
|
349
|
+
3. 从「实现 Todos」中提取具体的编码模式或约束 → `[guideline]`
|
|
385
350
|
4. 更新 `modus/knowledge-catalog.md` 的 `last_referenced` 和 maturity
|
|
386
351
|
5. 输出更新摘要:
|
|
387
352
|
```
|
|
388
353
|
📚 知识已回写到 Skill:
|
|
389
|
-
- [decision] tech-wiki:批量审批走 MQ
|
|
390
|
-
- [decision] tech-wiki:Redis 分布式锁 key 格式规范(ADR-02)
|
|
354
|
+
- [decision] tech-wiki:批量审批走 MQ 异步
|
|
391
355
|
- [guideline] order 域:批量操作上限 50 条,防止内存溢出
|
|
392
|
-
- [pitfall] order 域:MQ
|
|
356
|
+
- [pitfall] order 域:MQ 消费者需保证幂等性
|
|
393
357
|
maturity 变化: modus-biz-order draft→verified
|
|
394
358
|
```
|
|
395
359
|
|
|
396
|
-
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
### Step 10:多平台 Skill 同步(后置)
|
|
397
363
|
|
|
398
364
|
知识回写完成后,对所有本次**更新或新建**的业务 Skill 执行多平台同步。
|
|
399
365
|
|
|
@@ -401,6 +367,7 @@ design.md ────────────► design-brief.md ────
|
|
|
401
367
|
|
|
402
368
|
1. 读取 `modus/config.yaml` 的 `platforms` 字段
|
|
403
369
|
2. 对受影响的每个业务域(Step 4 前置更新 / 新建的域),按以下规则同步:
|
|
370
|
+
- **CodeBuddy** → 源文件即 `.codebuddy/skills/modus-biz-{domain}/SKILL.md`(已更新,无需额外操作)
|
|
404
371
|
- **Claude** → 写入 `.claude/agents/modus-biz-{domain}.md`(覆盖旧版本)
|
|
405
372
|
- **Cursor** → 写入 `.cursor/rules/modus-biz-{domain}.mdc`(带 frontmatter,覆盖旧版本)
|
|
406
373
|
- **Copilot** → 在 `.github/copilot-instructions.md` 中替换对应域的标记段落
|
|
@@ -424,15 +391,9 @@ modus/
|
|
|
424
391
|
├── plans/
|
|
425
392
|
│ ├── add-batch-approve/ ← 活跃计划(未归档)
|
|
426
393
|
│ │ ├── .modus-state.yaml ← 状态文件(断点续跑用)
|
|
427
|
-
│ │
|
|
428
|
-
│ │ ├── design.md
|
|
429
|
-
│ │ ├── design-brief.md ← 设计方案(代码开发前的实现指南)
|
|
430
|
-
│ │ └── tasks.md
|
|
394
|
+
│ │ └── plan.md ← 唯一规划文档(概述/风险/方案对比/Todos/影响文件)
|
|
431
395
|
│ └── archive/
|
|
432
396
|
│ └── 2026-04-20-add-batch-approve/
|
|
433
397
|
│ ├── .modus-state.yaml ← status: archived
|
|
434
|
-
│
|
|
435
|
-
│ ├── design.md
|
|
436
|
-
│ ├── design-brief.md
|
|
437
|
-
│ └── tasks.md
|
|
398
|
+
│ └── plan.md
|
|
438
399
|
```
|
|
@@ -90,7 +90,7 @@ disable: false
|
|
|
90
90
|
开始前置更新 Skill,然后生成规范文档。
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
-
### Step 4:前置 Skill 更新(Level 2 加载,含 hash 检查,同 /modus:plan Step
|
|
93
|
+
### Step 4:前置 Skill 更新(Level 2 加载,含 hash 检查,同 /modus:plan Step 5)
|
|
94
94
|
|
|
95
95
|
对每个涉及的业务域执行以下流程(**先 hash 检查,再决定是否全量更新**):
|
|
96
96
|
|
|
@@ -254,7 +254,7 @@ proposal.md
|
|
|
254
254
|
|
|
255
255
|
生成每份文档后更新 `.modus-state.yaml` 的 `completed` 列表和 `scenarios_covered`。
|
|
256
256
|
|
|
257
|
-
### Step
|
|
257
|
+
### Step 6:可选实现验证(verify)
|
|
258
258
|
|
|
259
259
|
文档生成后,询问用户是否执行实现验证(适用于代码已开发完成、准备归档前的场景):
|
|
260
260
|
|
|
@@ -320,7 +320,7 @@ git diff --name-only HEAD~3 | grep -E 'Test\.java|Spec\.java|test.*\.py'
|
|
|
320
320
|
|
|
321
321
|
验证不阻断归档,但警告需用户显式确认后方可继续。
|
|
322
322
|
|
|
323
|
-
### Step
|
|
323
|
+
### Step 7:规格冲突检测 + 询问归档 ⏸️ 【人工审批节点】
|
|
324
324
|
|
|
325
325
|
**归档前冲突检测(自动执行):**
|
|
326
326
|
|
|
@@ -352,7 +352,7 @@ grep -l "### Requirement:" modus/specs/{domain}/spec.md 2>/dev/null
|
|
|
352
352
|
modus/changes/{name}/tasks.md
|
|
353
353
|
modus/changes/{name}/.modus-state.yaml
|
|
354
354
|
|
|
355
|
-
实现验证: {passed_with_warnings / passed / skipped} [Step
|
|
355
|
+
实现验证: {passed_with_warnings / passed / skipped} [Step 6 结果]
|
|
356
356
|
冲突检测: {通过 / N 项需确认}
|
|
357
357
|
|
|
358
358
|
是否归档?归档后:
|
|
@@ -371,7 +371,7 @@ grep -l "### Requirement:" modus/specs/{domain}/spec.md 2>/dev/null
|
|
|
371
371
|
|
|
372
372
|
归档完成后更新 `.modus-state.yaml`:`status: archived`。
|
|
373
373
|
|
|
374
|
-
### Step
|
|
374
|
+
### Step 8:后置 Skill 更新(知识提取与回写)
|
|
375
375
|
|
|
376
376
|
归档完成后,调用 `modus-harness-00-skills-builder` 模式 C,从 delta specs 中系统性提取知识:
|
|
377
377
|
|
|
@@ -390,7 +390,7 @@ grep -l "### Requirement:" modus/specs/{domain}/spec.md 2>/dev/null
|
|
|
390
390
|
- knowledge-catalog.md 已更新(order 域 maturity: draft→verified)
|
|
391
391
|
```
|
|
392
392
|
|
|
393
|
-
### Step
|
|
393
|
+
### Step 9:多平台 Skill 同步(后置)
|
|
394
394
|
|
|
395
395
|
知识提取与回写完成后,对本次涉及的业务域执行多平台同步。
|
|
396
396
|
|
|
@@ -124,7 +124,7 @@ B. 继续使用降级模式(无业务上下文,结果质量可能降低)
|
|
|
124
124
|
如果理解无误,我来开始实现。
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
-
### Step
|
|
127
|
+
### Step 6:内联设计思考(Design Brief CoT)
|
|
128
128
|
|
|
129
129
|
**触发:** 每次编码任务前强制执行,不可跳过(包括 `--quick` 模式)。
|
|
130
130
|
**产出:** 内联于当前 LLM 上下文,**不写入任何文件**。
|
|
@@ -183,18 +183,18 @@ API: {Facade/Controller 类/方法}
|
|
|
183
183
|
- 节 9 追踪矩阵在 vibe 模式下用「需求点→实现→校验方式」代替完整 Sprint 映射
|
|
184
184
|
- 若 `--quick` 模式,节 3/4/9 可简化为一行摘要,但节 8 禁止事项必须完整输出
|
|
185
185
|
|
|
186
|
-
### Step
|
|
186
|
+
### Step 7:执行编码任务(Level 3 按需加载)
|
|
187
187
|
|
|
188
|
-
基于 Step
|
|
188
|
+
基于 Step 6 内联设计方案和澄清后的意图,执行用户的编码请求:
|
|
189
189
|
|
|
190
|
-
- 以 Step
|
|
190
|
+
- 以 Step 6 内联设计方案中节 5(实现蓝图)为编码路线图
|
|
191
191
|
- 严格遵守节 8(禁止事项)——这是 constitution hard_rules 和 Skill [pitfall] 的汇总
|
|
192
192
|
- 引用节 7(代码生成提示)中的现有类路径,不凭空创造类名
|
|
193
193
|
- **Level 3 加载:** 需要具体代码实现时,按需读取 Skill 中 `关键文件索引` 指向的实际代码文件(而非预先全量读取)
|
|
194
194
|
- 对不确定的业务规则,优先参考 Skill 中的规则描述
|
|
195
195
|
- 如发现 Skill 中记录有误或过时,在回复末尾标注「Skill 更新建议」
|
|
196
196
|
|
|
197
|
-
### Step
|
|
197
|
+
### Step 8(可选):Skill 更新建议
|
|
198
198
|
|
|
199
199
|
如果在编码过程中发现业务 Skill 有遗漏或错误,在回复末尾追加:
|
|
200
200
|
|
|
@@ -204,7 +204,7 @@ API: {Facade/Controller 类/方法}
|
|
|
204
204
|
- [pitfall] order 域:批量操作时若不分页会导致内存溢出
|
|
205
205
|
```
|
|
206
206
|
|
|
207
|
-
### Step
|
|
207
|
+
### Step 9:写入 Session 日志
|
|
208
208
|
|
|
209
209
|
编码完成后,将本次会话**追加**(append-only,禁止覆盖原有内容)到 `modus/sessions/vibe-log.md`:
|
|
210
210
|
|
|
@@ -224,7 +224,7 @@ API: {Facade/Controller 类/方法}
|
|
|
224
224
|
|
|
225
225
|
## 氛围编程原则
|
|
226
226
|
|
|
227
|
-
- **先设计再编码**:Step
|
|
227
|
+
- **先设计再编码**:Step 6 内联设计方案是编码的前置必要步骤,不可省略
|
|
228
228
|
- **设计驱动**:编码时以内联设计方案的实现蓝图(节 5)为路线图,禁止事项(节 8)为红线
|
|
229
229
|
- **有据可依**:引用的实体、字段、接口名必须来自 Skill 或已有代码
|
|
230
230
|
- **风格一致**:生成的代码应与项目现有风格保持一致
|