openmatrix 0.2.26 → 0.2.28

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/skills/start.md CHANGED
@@ -1,621 +1,758 @@
1
- ---
2
- name: om:start
3
- description: "Use when starting a new development task cycle with interactive questions. Triggers on TASK-EXECUTION intent: user wants to start implementing a clearly-defined task with full workflow support. Expects plan.md + tasks-input.json to already exist (generated by /om:plan). DO NOT trigger on: vague ideas (use brainstorm), status checks, debugging, or pure questions. Intent signals: user describes a concrete task to build/fix/refactor, has clear goal, or wants to start execution workflow."
4
- ---
5
-
6
- <INTENT-JUDGMENT>
7
- ## 意图判断指南
8
-
9
- **AI 应根据用户语义判断意图:**
10
-
11
- ### 触发信号(任务执行意图)
12
-
13
- - 用户想开始明确的开发任务
14
- - 任务描述清晰可执行
15
- - 有具体的功能目标
16
- - 修复已知 bug(知道要改什么)
17
-
18
- ### 不触发信号
19
-
20
- | 用户意图 | 应调用 |
21
- |---------|--------|
22
- | 需求不明确 | /om:brainstorm |
23
- | 需要生成技术方案 | /om:plan |
24
- | 调查问题原因 | /om:debug |
25
- | 查看进度 | /om:status |
26
-
27
- ### 示例判断
28
-
29
- | 用户消息 | 判断 | 结果 |
30
- |---------|------|------|
31
- | "开始实现登录功能" | 任务执行意图 | 触发 |
32
- | "修复这个 bug"(明确位置)| 执行意图明确 | 触发 |
33
- | "重构 API 模块" | 任务意图 | 触发 |
34
- | "登录怎么设计" | 设计意图 | /om:brainstorm |
35
- | "生成技术方案" | 方案生成 | /om:plan |
36
- | "为什么出错了" | 调查意图 | /om:debug |
37
- </INTENT-JUDGMENT>
38
-
39
- <NO-OTHER-SKILLS>
40
- **绝对禁止**调用以下任何技能或工具:
41
- - gsd-executor、gsd:* 等 GSD 相关技能
42
- - superpowers:* superpowers 相关技能
43
- - 任何其他任务编排相关的 Agent 或工具
44
-
45
- **Step 9 只能使用 Agent 工具** — 直接调用 Agent,不通过任何中间层。
46
-
47
- 违规调用将导致执行失败。
48
-
49
- **相关技能**: `/om:brainstorm` (需求探索) | `/om:plan` (方案生成) | `/om:auto` (全自动) | `/om:meeting` (阻塞处理) | `/om:status` (状态查看) | `/om:report` (报告)
50
- </NO-OTHER-SKILLS>
51
-
52
- <MANDATORY-EXECUTION-ORDER>
53
- ## 执行顺序 - 必须严格按此顺序,不得跳过任何步骤
54
-
55
- ```
56
- Step 1: 初始化 .openmatrix 目录
57
- Step 2: 验证前置条件(plan.md + tasks-input.json 必须已存在)
58
- Step 3: 智能分析任务类型(开发/非开发)
59
- Step 4: 提交文档(git add docs/ + 所有 .md 文件, commit)
60
- Step 5: 必选问题(开发任务:质量等级; 严格模式可选E2E; 非开发:跳过)<- 不可跳过
61
- Step 6: 可选问题(仅复杂开发任务)+ 展示执行计划
62
- Step 7: 调用 openmatrix start --tasks-json <- 必须完成,不可跳过
63
- Step 8: 从 CLI 返回结果中读取 subagentTasks 列表 <- 必须完成
64
- Step 9: 逐个执行 subagentTasks(调用 Agent 工具) <- 只有这步才能写代码
65
- ```
66
-
67
- **违反以下任一规则将导致任务执行失败:**
68
-
69
- - **禁止在 Step 9 之前写任何业务代码**所有代码必须在 Step 9 通过 Agent 执行
70
- - **禁止跳过 Step 5 必选问题** 开发任务必须选质量等级,非开发任务无需问答
71
- - **禁止跳过 Step 7** — 必须调用 CLI,不能用其他方式代替
72
- - **禁止自行规划 Phase** — 任务由 CLI 的 TaskPlanner 拆分,AI 只提取 goals
73
- - **禁止用 Bash/npm/write 直接写业务代码** — 业务代码只能通过 Step 9 的 Agent 执行
74
- - **禁止调用 gsd-executor 或其他编排技能** — 必须用原生 Agent 工具
75
- - **禁止在 start 中生成 plan** plan /om:plan 生成,start 只负责执行
76
- </MANDATORY-EXECUTION-ORDER>
77
-
78
- <objective>
79
- 读取已有的 plan.md + tasks-input.json,通过必选问答确定执行配置(开发任务还需确定质量等级、E2E测试),确认后通过 CLI 拆分任务并执行。
80
-
81
- 本 Skill 只做执行,不做方案生成。如果 plan.md 或 tasks-input.json 不存在,引导用户先执行 /om:plan。
82
-
83
- **Step 5 必选问题(开发任务):**
84
- 1. 质量等级(严格模式/平衡模式/快速模式)
85
- 2. E2E 测试(仅严格模式可选,其他模式自动跳过)
86
- 3. 执行模式根据质量等级自动推断(无需问答)
87
-
88
- **非开发任务**(文档、配置等)无需问答,直接使用全自动执行。
89
- </objective>
90
-
91
- <process>
92
-
93
- ## === 准备阶段(此阶段不得写任何业务代码)===
94
-
95
- ### Step 1: 智能检测状态
96
-
97
- 检查 `.openmatrix/` 目录和 `state.json` 的状态:
98
-
99
- | 状态 | 处理方式 |
100
- |------|---------|
101
- | `.openmatrix/` 不存在 | 全新初始化: `openmatrix start --init-only` |
102
- | `status: initialized` | 正常继续(首次使用) |
103
- | `status: completed` | 提示用户:开始新任务会清理旧数据,确认后继续 |
104
- | `status: running` | 提示用户先完成或暂停当前任务,然后退出 |
105
- | `status: paused` | 询问用户:继续上次任务(->`/om:resume`)还是开始新任务 |
106
- | `status: failed` | 询问用户:重试失败任务(->`/om:retry`)还是开始新任务 |
107
-
108
- **如果是全新初始化:**
109
- ```bash
110
- openmatrix start --init-only
111
- ```
112
-
113
- **检查 Git 仓库(必须执行,不可跳过):**
114
-
115
- ```bash
116
- # 检查是否有 .git 目录(必须执行此命令)
117
- ls -la .git 2>/dev/null || echo "NOT_INITIALIZED"
118
- ```
119
-
120
- **根据检查结果处理:**
121
-
122
- | 检查结果 | 必须执行的操作 |
123
- |---------|--------------|
124
- | 目录不存在 | 使用 AskUserQuestion 询问用户是否初始化 git |
125
- | 目录存在 | 继续检查远程仓库 |
126
-
127
- **如果用户同意初始化,立即执行:**
128
- ```bash
129
- git init
130
- ```
131
-
132
- ### Step 2: 验证前置条件
133
-
134
- **检查 plan.md 和 tasks-input.json 是否已存在:**
135
-
136
- ```bash
137
- cat .openmatrix/tasks-input.json 2>/dev/null || echo "NOT_FOUND"
138
- cat .openmatrix/plan.md 2>/dev/null || echo "NOT_FOUND"
139
- ```
140
-
141
- | 情况 | 处理方式 |
142
- |------|---------|
143
- | 两个都存在 | 读取内容,继续 Step 3 |
144
- | 只有 tasks-input.json | 继续执行(plan.md 可选) |
145
- | 只有 plan.md | 提示:需要 tasks-input.json,引导执行 `/om:plan` |
146
- | 都不存在,有 `$ARGUMENTS` | 自动调用 `/om:plan` 生成方案(传入参数) |
147
- | 都不存在,无参数 | 引导执行 `/om:plan` |
148
-
149
- **如果都存在,读取 tasks-input.json:**
150
-
151
- ```bash
152
- cat .openmatrix/tasks-input.json
153
- ```
154
-
155
- 提取关键字段:`title`、`goals`、`goalTypes`、`goalComplexity`。
156
-
157
- **检测研究上下文:**
158
-
159
- ```bash
160
- cat .openmatrix/research/context.json 2>/dev/null || echo "NO_RESEARCH"
161
- ```
162
-
163
- 如果检测到研究上下文,告知用户并将 `--research-context` 参数传递给 CLI。
164
-
165
- ### Step 3: 智能分析任务类型
166
-
167
- 根据 `goalTypes` 字段判断是开发任务还是非开发任务,这决定 Step 5 需要问哪些问题。
168
-
169
- | 任务类型 | 定义 | Step 5 问题 |
170
- |---------|------|------------|
171
- | **开发任务** | goalTypes 包含 `development` | 质量等级 + E2E + 执行模式 |
172
- | **非开发任务** | goalTypes 仅有 `testing`/`documentation`/`other` | 仅执行模式 |
173
-
174
- ---
175
-
176
- ### Step 4: 提交文档(必须执行,不可跳过)
177
-
178
- 在开始任何新任务之前,先提交所有已变更的文档文件,确保文档和代码同步提交。
179
-
180
- ```bash
181
- git status --porcelain
182
- ```
183
-
184
- 检查是否有文档变更(包括 `docs/` 目录、所有 `.md` 文件):
185
-
186
- ```bash
187
- git diff --name-only | grep -E '\.md$|^docs/' 2>/dev/null
188
- git ls-files --others --exclude-standard | grep -E '\.md$|^docs/' 2>/dev/null
189
- ```
190
-
191
- 如果有文档变更(未追踪或未提交),执行提交:
192
-
193
- ```bash
194
- git add docs/ .openmatrix/*.md CLAUDE.md README.md README_EN.md
195
- git commit -m "$(cat <<'EOF'
196
- docs: 更新项目文档
197
-
198
- 更新内容: ...
199
-
200
- Co-Authored-By: OpenMatrix https://github.com/bigfish1913/openmatrix
201
- EOF
202
- )"
203
- ```
204
-
205
- **如果没有文档变更,跳过此步骤继续。**
206
-
207
- ---
208
-
209
- ### Step 5: 必选问题(不可跳过,不可使用默认值,必须通过 AskUserQuestion 让用户选择)
210
-
211
- 根据 `goalTypes` 字段判断需要询问哪些问题:
212
-
213
- | goalTypes | 需要询问 |
214
- |-----------|---------|
215
- | `development` | 5.1 质量等级 -> 5.2 E2E(仅严格模式可选) |
216
- | `testing` | 无需问答,直接进入 Step 7 |
217
- | `documentation` / `other` | 无需问答,直接进入 Step 7 |
218
-
219
- #### 5.1 质量等级(仅 `goalTypes: development`)
220
-
221
- AskUserQuestion: `header: "质量等级"`, `multiSelect: false`
222
-
223
- **question:** 选择质量等级(决定测试覆盖、Lint、安全扫描等要求)
224
-
225
- | label | description |
226
- |-------|-------------|
227
- | `严格模式` | TDD + >80%覆盖率 + 严格Lint + 安全扫描 — 生产级代码 |
228
- | `平衡模式 (推荐)` | >60%覆盖率 + Lint + 安全扫描 — 日常开发 |
229
- | `快速模式` | 无质量门禁 快速原型/验证 |
230
-
231
- **质量等级选择后的自动推断规则:**
232
-
233
- | 模式 | E2E | AI 验收 | 执行方式 |
234
- |-----|-----|---------|---------|
235
- | 严格模式 | 可选问一句(Step 5.2) | 必须 | TDD(先测试后开发) |
236
- | 平衡模式 | 不需要(自动跳过) | 必须 | 先开发后测试 |
237
- | 快速模式 | 不需要(自动跳过) | 不需要 | 直接开发 |
238
-
239
- #### 5.2 E2E 测试(仅 `严格模式` 可选,其他模式自动跳过)
240
-
241
- **只有选择「严格模式」时才询问此问题,平衡模式和快速模式自动推断为「不需要」。**
242
-
243
- AskUserQuestion: `header: "E2E 测试"`, `multiSelect: false`
244
-
245
- **question:** 是否需要端到端 (E2E) 测试?(适用于 Web/Mobile/GUI 项目,耗时较长)
246
-
247
- | label | description |
248
- |-------|-------------|
249
- | `功能测试 (推荐)` | 验证业务流程正确性,无需浏览器可视化,速度快 |
250
- | `视觉验证` | 需要浏览器可视化验证,可检查页面样式和布局 |
251
- | `不需要` | 仅进行单元测试和集成测试,节省时间 |
252
-
253
- #### 执行模式自动推断
254
-
255
- **执行模式不再通过问答选择,而是根据质量等级自动推断:**
256
-
257
- - **严格模式** 全自动执行 + TDD 流程
258
- - **平衡模式** → 全自动执行 + 先开发后测试
259
- - **快速模式** → 全自动执行 + 直接开发
260
-
261
- **非开发任务**(testing/documentation/other)默认使用「全自动执行」。
262
-
263
- ### Step 6: 可选问题(仅复杂任务)
264
-
265
- 根据任务类型,可能需要额外询问:
266
-
267
- - 技术栈偏好
268
- - 文档级别
269
- - 风险评估
270
- - 验收标准
271
-
272
- 展示执行计划:
273
-
274
- ```
275
- 执行计划
276
-
277
- Goals:
278
- 1. [development/high] 目标1
279
- 2. [development/medium] 目标2
280
- 3. [testing/medium] 目标3
281
-
282
- 统计
283
- Goals: N 个(将生成 N个开发 + N个测试 + 审查)
284
- 质量级别: xxx
285
- E2E 测试: 功能测试 / 视觉验证 / 不启用
286
- 技术方案: .openmatrix/plan.md
287
- ```
288
-
289
- ### Step 7: 调用 CLI 创建任务(不可跳过)
290
-
291
- **根据质量等级自动设置执行参数:**
292
-
293
- | 质量等级 | CLI 参数 | 执行方式 |
294
- |---------|---------|---------|
295
- | 严格模式 | `--quality strict --mode auto` | TDD 流程 |
296
- | 平衡模式 | `--quality balanced --mode auto` | 先开发后测试 |
297
- | 快速模式 | `--quality fast --mode auto` | 直接开发 |
298
-
299
- **开发任务**(有质量等级选择):
300
- ```bash
301
- openmatrix start --tasks-json @.openmatrix/tasks-input.json --quality <质量等级> --mode auto --json
302
- ```
303
-
304
- 如果存在 `.openmatrix/research/context.json`,增加 `--research-context` 参数:
305
- ```bash
306
- openmatrix start --tasks-json @.openmatrix/tasks-input.json --research-context @.openmatrix/research/context.json --quality <质量等级> --mode auto --json
307
- ```
308
-
309
- 如果启用了 E2E 测试(功能测试),加上 `--e2e-tests`:
310
- ```bash
311
- openmatrix start --tasks-json @.openmatrix/tasks-input.json --quality strict --mode auto --e2e-tests --json
312
- ```
313
-
314
- 如果选择了视觉验证,加上 `--e2e-tests --e2e-type visual`:
315
- ```bash
316
- openmatrix start --tasks-json @.openmatrix/tasks-input.json --quality strict --mode auto --e2e-tests --e2e-type visual --json
317
- ```
318
-
319
- **非开发任务**(无质量等级,默认全自动执行):
320
- ```bash
321
- openmatrix start --tasks-json @.openmatrix/tasks-input.json --mode auto --json
322
- ```
323
-
324
- 此命令返回 JSON 包含 `subagentTasks` 列表。
325
-
326
- ### Step 8: 读取 subagentTasks
327
-
328
- CLI 返回 JSON 中 `subagentTasks` 数组包含待执行任务。
329
-
330
- ## === 执行阶段(只有此阶段才能写业务代码)===
331
-
332
- ### Step 9: 逐个执行 subagentTasks(禁止中断)
333
-
334
- <LOOP-ENFORCEMENT>
335
- **此步骤是执行循环,必须执行完所有任务后才能停止。**
336
-
337
- - **禁止在还有未完成任务时停止** 即使 Agent 返回了大段输出,也必须继续下一个
338
- - **禁止询问"是否继续"** — 直接执行下一个任务
339
- - **禁止输出"让我知道是否..."后停止** — 继续执行
340
- - **禁止因为上下文压缩而忘记剩余任务** — 通过 `openmatrix step --json` 重新获取状态
341
-
342
- **文件持久化循环(防止上下文压缩丢失状态):**
343
- ```bash
344
- # 每个 Agent 完成后执行:
345
- # --summary 传入执行摘要,自动追加到全局 context.md
346
- openmatrix complete TASK-XXX --success --summary "决策: xxx; 文件: xxx"
347
-
348
- # 提交验证(防止 commit 静默失败):
349
- git status --porcelain # 检查是否有未提交的文件
350
- # 如果有未提交文件 -> 必须手动提交:
351
- git add . && git commit -m "feat(TASK-XXX): 任务标题"
352
-
353
- openmatrix step --json # 获取下一个任务 + 检查是否全部完成
354
- ```
355
- `openmatrix step` 会从磁盘读取真实状态,不依赖上下文记忆。
356
- </LOOP-ENFORCEMENT>
357
-
358
- #### 9.1 歧义检测机制
359
-
360
- **Agent 输出中可能包含歧义报告(JSON 格式):**
361
-
362
- Agent 输出包含以下标记时,表示检测到歧义:
363
- ```
364
- <AMBIGUITY_REPORT>
365
- {
366
- "ambiguities": [
367
- {
368
- "type": "missing_info" | "conflicting_req" | "unclear_scope" | "tech_choice" | "edge_case",
369
- "severity": "critical" | "high" | "medium" | "low",
370
- "description": "歧义描述",
371
- "suggestions": ["建议1", "建议2"]
372
- }
373
- ],
374
- "overallSeverity": "critical" | "high" | "medium" | "low"
375
- }
376
- </AMBIGUITY_REPORT>
377
- ```
378
-
379
- #### 9.2 歧义处理策略
380
-
381
- 根据 `overallSeverity` 和执行模式选择处理方式:
382
-
383
- | 执行模式 | Critical/High | Medium/Low |
384
- |---------|--------------|------------|
385
- | **全自动执行** | Meeting + 继续执行 | Meeting + 继续执行 |
386
- | **关键节点确认** | AskUserQuestion | Meeting + 继续执行 |
387
- | **每阶段确认** | AskUserQuestion | Meeting + 继续执行 |
388
-
389
- **Meeting 处理(写入阻塞记录):**
390
- ```bash
391
- openmatrix meeting --create --task TASK-XXX --reason "歧义: ${description}" --severity ${severity}
392
- ```
393
-
394
- **AskUserQuestion 处理(交互确认):**
395
-
396
- AskUserQuestion: `header: "歧义确认"`, `multiSelect: false`
397
- **question:** 检测到 ${severity} 级歧义:${description}。请确认处理方式
398
-
399
- | label | description |
400
- |-------|-------------|
401
- | 提供信息 | 回答歧义相关问题,继续执行 |
402
- | 跳过任务 | 标记当前任务为可选,继续执行其他任务 |
403
- | 修改方案 | 根据歧义调整任务方案后继续 |
404
-
405
- #### 9.3 执行 Agent 任务
406
-
407
- **Skill 感知执行:**
408
-
409
- 执行每个任务前,AI 应根据任务内容判断是否需要调用相关 skill 来增强执行质量。
410
-
411
- 可用 skill 列表(AI 自行判断是否适用):
412
- - `om:test` 测试生成与验证循环
413
- - `frontend-design` 前端/UI 设计与实现
414
- - `om:research` 领域研究
415
- - 其他已安装的 skill
416
-
417
- **判断流程:**
418
- 1. 读取任务的 `agentType`、`title`、`description`
419
- 2. AI 自行判断该任务是否匹配某个 skill 的触发条件
420
- 3. 如果匹配,在 Agent prompt 中注入该 skill 的核心指令或先调用对应 CLI 获取上下文数据
421
- 4. 如果不匹配任何 skill,直接执行
422
-
423
- **tester 任务验证循环(om:test 逻辑):**
424
-
425
- 当 AI 判断任务需要 om:test 流程时:
426
-
427
- 1. 先调用 CLI 获取项目测试配置:
428
- ```bash
429
- openmatrix test --json
430
- ```
431
-
432
- 2. 调用 Agent 生成测试(prompt 中已包含原始扫描数据):
433
- ```typescript
434
- Agent({
435
- subagent_type: task.subagent_type,
436
- description: task.description,
437
- prompt: task.prompt + "\n\n⚠️ 完成后请输出简短摘要(不超过3行):\n1. 关键决策\n2. 创建/修改的文件\n3. 对后续任务的建议\n\n🚫 **禁止执行以下 Git 命令**:\n- ❌ git commit\n- ❌ git checkout/merge/pull/push/rebase/branch\n\n✅ 允许:git status, git diff, git log",
438
- run_in_background: true
439
- })
440
- ```
441
-
442
- 3. Agent 完成后,自动验证测试:
443
- ```bash
444
- npm test -- --run 2>&1
445
- ```
446
-
447
- 4. 验证失败时自动重试(最多 3 次):
448
- - 将失败输出传给新 Agent 修复测试
449
- - 重新验证
450
- - 3 次失败后标记为 blocked,创建 Meeting
451
-
452
- **默认执行方式(无特殊 skill 匹配时):**
453
-
454
- ```typescript
455
- Agent({
456
- subagent_type: task.subagent_type,
457
- description: task.description,
458
- prompt: task.prompt + "\n\n⚠️ 完成后请输出简短摘要(不超过3行):\n1. 关键决策\n2. 创建/修改的文件\n3. 对后续任务的建议\n\n🚫 **禁止执行以下 Git 命令**:\n- ❌ git commit — 所有提交统一通过 openmatrix complete 执行\n- ❌ git checkout — 不要切换分支\n- ❌ git merge — 不要合并其他分支\n- ❌ git pull — 不要拉取远程更新\n- ❌ git push — 不要推送代码\n- ❌ git rebase — 不要变基\n- ❌ git branch — 不要创建/删除分支\n\n✅ 允许:git status, git diff, git log",
459
- isolation: task.isolation,
460
- run_in_background: true
461
- })
462
- ```
463
-
464
- 每个 Agent 完成后(收到后台完成通知时):
465
- 1. **标记完成并更新统计(必须执行):**
466
- ```bash
467
- openmatrix complete TASK-XXX --success --summary "关键决策: xxx; 创建文件: xxx"
468
- ```
469
-
470
- 2. **全局上下文文件** 所有任务的上下文累积在 `.openmatrix/context.md`:
471
- - 每次任务完成后,通过 `--summary` 参数追加写入
472
- - 后续 Agent 可读取此文件了解前序任务的决策和发现
473
-
474
- 3. Git 自动提交(必须使用下方统一提交格式)
475
-
476
- 4. **获取下一个任务(必须执行,防止上下文压缩丢失):**
477
- ```bash
478
- openmatrix step --json
479
- ```
480
-
481
- **返回值解析:**
482
-
483
- | status | 含义 | 后续操作 |
484
- |--------|------|---------|
485
- | `next` | 有下一个任务 | 继续执行返回的 `subagent` 配置 |
486
- | `done` | 所有任务完成 | 进入最终提交 |
487
- | `blocked` | 无可执行任务 | 检查是否有 Meeting,用 `/om:meeting` 处理 |
488
-
489
- 5. **审批点处理(根据执行模式):**
490
-
491
- | 执行模式 | 审批点 | 处理方式 |
492
- |---------|--------|---------|
493
- | 全自动执行 | | 自动批准所有操作 |
494
- | 关键节点确认 | plan, merge, deploy | 到达审批点时暂停,交互式确认 |
495
- | 每阶段确认 | develop, verify, accept | 每个阶段完成后暂停,交互式确认 |
496
-
497
- **Agent 上下文共享机制 (Agent Memory):**
498
-
499
- 每个 Agent 执行时会自动接收前序 Agent 的上下文信息(通过 `context.md` 文件)。
500
-
501
- ```
502
- Agent-1 完成 -> 写入 context.md -> Agent-2 读取 Agent-1 的上下文 -> 写入 context.md -> ...
503
- ```
504
-
505
- **中断恢复:** 如果会话中断,再次执行 `/om:start` 时:
506
- 1. 读取 `.openmatrix/state.json`
507
- 2. 如果 `status === 'running'`,读取所有任务,找到 status 不是 completed 的任务
508
- 3. 从中断的任务继续执行,不需要重新开始
509
-
510
- **Meeting 处理(auto 模式):** 记录并跳过,执行完成后统一展示。
511
-
512
- **执行完成后:**
513
-
514
- ### Meeting 机制
515
-
516
- 在「全自动执行」模式下:
517
- - 遇到阻塞任务时,创建 Meeting 记录并跳过该任务
518
- - 继续执行其他独立任务,最大化并行度
519
- - 所有非阻塞任务完成后,提示用户使用 `/om:meeting` 统一处理阻塞问题
520
-
521
- ```bash
522
- openmatrix meeting --list
523
- ```
524
-
525
- 如有 pending Meeting,交互式处理。
526
-
527
- 所有任务完成后,执行最终 Git 提交(**必须使用 HEREDOC 格式**):
528
- ```bash
529
- git add . && git commit -m "$(cat <<'EOF'
530
- feat: 完成所有任务 - 任务总标题
531
-
532
- 改动点1
533
- 改动点2
534
-
535
- 影响范围: 全部模块
536
- 文件改动: src/xxx.ts, src/yyy.ts
537
-
538
- Co-Authored-By: OpenMatrix https://github.com/bigfish1913/openmatrix
539
- EOF
540
- )"
541
- ```
542
-
543
- **Git 提交格式规范(所有提交必须遵守):**
544
-
545
- ```
546
- <type>(TASK-XXX): 简短描述
547
-
548
- 改动点1
549
- 改动点2
550
-
551
- 影响范围: 模块名
552
- 文件改动: 文件1, 文件2
553
-
554
- Co-Authored-By: OpenMatrix https://github.com/bigfish1913/openmatrix
555
- ```
556
-
557
- **type 映射:** feat(新功能) / fix(修复) / test(测试) / refactor(重构) / docs(文档)
558
- **禁止使用 emoji**,使用纯文本格式
559
-
560
- </process>
561
-
562
- <arguments>
563
- $ARGUMENTS
564
- </arguments>
565
-
566
- <examples>
567
- /om:start
568
- /om:start "实现用户登录功能"
569
- </examples>
570
-
571
- <notes>
572
- ## 流程定位
573
-
574
- ```
575
- 需求 -> brainstorm (澄清需求) -> plan (生成方案) -> start (执行) -> end
576
- 需求 -> brainstorm (澄清需求) -> plan (生成方案) -> auto (全自动执行) -> end
577
- ```
578
-
579
- start auto 在同一位置,区别在于 start 有交互审批,auto 零交互。前置条件:
580
- - `.openmatrix/plan.md` 技术方案(由 /om:plan 生成)
581
- - `.openmatrix/tasks-input.json` 结构化元数据(由 /om:plan 生成)
582
-
583
- 如果前置条件不满足,引导用户执行 `/om:plan`。
584
-
585
- ## 质量级别
586
-
587
- | 级别 | TDD | 覆盖率 | Lint | 安全 | 执行方式 |
588
- |------|:---:|:------:|:----:|:----:|:--------:|
589
- | 严格模式 | Y | >80% | Y | Y | TDD |
590
- | 平衡模式 | N | >60% | Y | Y | 先开发后测试 |
591
- | 快速模式 | N | 无 | N | N | 直接开发 |
592
-
593
- ## 执行流程
594
-
595
- ```
596
- Step 1-2: 初始化 + 验证前置条件 -> Step 3-4: 分析类型 + 提交文档 -> Step 5-6: 问答 + 确认
597
- -> Step 7: openmatrix start --tasks-json (必须) -> Step 8: 读取 subagentTasks
598
- -> Step 9: Agent 逐个执行 (只有这里写代码)
599
- ```
600
-
601
- ## 自动推断规则
602
-
603
- | 质量等级 | E2E 问题 | AI 验收 | 执行模式 |
604
- |---------|---------|---------|---------|
605
- | 严格模式 | 可选问一句 | 必须 | 全自动 + TDD |
606
- | 平衡模式 | 不需要 | 必须 | 全自动 + 先开发后测试 |
607
- | 快速模式 | 不需要 | 不需要 | 全自动 + 直接开发 |
608
-
609
- ## Git 提交格式
610
-
611
- ```
612
- <type>(TASK-XXX): 简短描述
613
-
614
- 改动点1 / 改动点2
615
- 影响范围: 模块名
616
- 文件改动: 文件1, 文件2
617
- Co-Authored-By: OpenMatrix https://github.com/bigfish1913/openmatrix
618
- ```
619
-
620
- type: feat/fix/test/refactor/docs。禁止 emoji。
621
- </notes>
1
+ ---
2
+ name: om:start
3
+ description: "Use when starting a new development task cycle with interactive questions. Triggers on TASK-EXECUTION intent: user wants to start implementing a clearly-defined task with full workflow support. Expects plan.md + tasks-input.json to already exist (generated by /om:plan). DO NOT trigger on: vague ideas (use brainstorm), status checks, debugging, or pure questions. Intent signals: user describes a concrete task to build/fix/refactor, has clear goal, or wants to start execution workflow."
4
+ ---
5
+
6
+ <INTENT-JUDGMENT>
7
+ ## 意图判断指南
8
+
9
+ **AI 应根据用户语义判断意图:**
10
+
11
+ ### 触发信号(任务执行意图)
12
+
13
+ - 用户想开始明确的开发任务
14
+ - 任务描述清晰可执行
15
+ - 有具体的功能目标
16
+ - 修复已知 bug(知道要改什么)
17
+
18
+ ### 不触发信号
19
+
20
+ | 用户意图 | 应调用 |
21
+ |---------|--------|
22
+ | 需求不明确 | /om:brainstorm |
23
+ | 需要生成技术方案 | /om:plan |
24
+ | 调查问题原因 | /om:debug |
25
+ | 查看进度 | /om:status |
26
+
27
+ ### 示例判断
28
+
29
+ | 用户消息 | 判断 | 结果 |
30
+ |---------|------|------|
31
+ | "开始实现登录功能" | 任务执行意图 | 触发 |
32
+ | "修复这个 bug"(明确位置)| 执行意图明确 | 触发 |
33
+ | "重构 API 模块" | 任务意图 | 触发 |
34
+ | "登录怎么设计" | 设计意图 | /om:brainstorm |
35
+ | "生成技术方案" | 方案生成 | /om:plan |
36
+ | "为什么出错了" | 调查意图 | /om:debug |
37
+ </INTENT-JUDGMENT>
38
+
39
+ <NO-OTHER-SKILLS>
40
+ 本 skill 与其他任务编排技能功能重叠,请勿同时使用。
41
+
42
+ **Step 9 使用 Agent 工具执行子任务。**
43
+
44
+ **相关技能**: `/om:brainstorm` (需求探索) | `/om:plan` (方案生成) | `/om:auto` (全自动) | `/om:meeting` (阻塞处理) | `/om:status` (状态查看) | `/om:report` (报告)
45
+ </NO-OTHER-SKILLS>
46
+
47
+ <MANDATORY-EXECUTION-ORDER>
48
+ ## 执行顺序 - 必须严格按此顺序,不得跳过任何步骤
49
+
50
+ ```
51
+ Step 1: 初始化 .openmatrix 目录
52
+ Step 2: 验证前置条件(plan.md + tasks-input.json 必须已存在)
53
+ Step 3: 智能分析任务类型(开发/非开发)
54
+ Step 4: 提交文档(git add docs/ + 所有 .md 文件, commit)
55
+ Step 5: 必选问题(开发任务:质量等级; 严格模式可选E2E; 非开发:跳过)<- 不可跳过
56
+ Step 6: 可选问题(仅复杂开发任务)+ 展示执行计划
57
+ Step 7: 调用 openmatrix start --tasks-json <- 必须完成,不可跳过
58
+ Step 8: 从 CLI 返回结果中读取 subagentTasks 列表 <- 必须完成
59
+ Step 9: 逐个执行 subagentTasks(调用 Agent 工具) <- 只有这步才能写代码
60
+ ```
61
+
62
+ **违反以下任一规则将导致任务执行失败:**
63
+
64
+ - **禁止在 Step 9 之前写任何业务代码** — 所有代码必须在 Step 9 通过 Agent 执行
65
+ - **禁止跳过 Step 5 必选问题** — 开发任务必须选质量等级,非开发任务无需问答
66
+ - **禁止跳过 Step 7** — 必须调用 CLI,不能用其他方式代替
67
+ - **禁止自行规划 Phase** — 任务由 CLI 的 TaskPlanner 拆分,AI 只提取 goals
68
+ - **禁止用 Bash/npm/write 直接写业务代码** — 业务代码只能通过 Step 9 的 Agent 执行
69
+ - **禁止在 start 中生成 plan**plan /om:plan 生成,start 只负责执行
70
+ - **使用 Agent 工具执行子任务**不通过其他编排系统
71
+ </MANDATORY-EXECUTION-ORDER>
72
+
73
+ <IRON-LAW>
74
+
75
+ **NO PRODUCTION CODE WITHOUT QUALITY GATES FIRST**
76
+
77
+ 跳过了必选问题?停止。重新开始。
78
+ 写了代码但没跑测试?删除。重新开始。
79
+ 这不是建议。这是铁律。
80
+
81
+ </IRON-LAW>
82
+
83
+ <RED-FLAGS>
84
+
85
+ 这些想法意味着停止:
86
+
87
+ | 想法 | 真相 |
88
+ |-----|------|
89
+ | "先写代码,测试稍后" | 跳过铁律 = 质量无保证 |
90
+ | "这个任务很简单" | 简单任务也要质量门禁 |
91
+ | "手动验证就够了" | 手动验证不可重复 |
92
+ | "质量级别不重要" | 质量级别决定代码可信度 |
93
+ | "跳过问答更快" | 跳过问答 = 跳过铁律 |
94
+ | "我知道该选什么" | 必选问题不可跳过 |
95
+ | "执行模式无所谓" | 执行模式决定审批节点 |
96
+
97
+ </RED-FLAGS>
98
+
99
+ <objective>
100
+ 读取已有的 plan.md + tasks-input.json,通过必选问答确定执行配置(开发任务还需确定质量等级、E2E测试),确认后通过 CLI 拆分任务并执行。
101
+
102
+ Skill 只做执行,不做方案生成。如果 plan.md tasks-input.json 不存在,引导用户先执行 /om:plan。
103
+
104
+ **Step 5 必选问题(开发任务):**
105
+ 1. 质量等级(严格模式/平衡模式/快速模式)
106
+ 2. E2E 测试(仅严格模式可选,其他模式自动跳过)
107
+ 3. 执行模式根据质量等级自动推断(无需问答)
108
+
109
+ **非开发任务**(文档、配置等)无需问答,直接使用全自动执行。
110
+ </objective>
111
+
112
+ <process>
113
+
114
+ ## === 准备阶段(此阶段不得写任何业务代码)===
115
+
116
+ ### Step 1: 智能检测状态
117
+
118
+ 检查 `.openmatrix/` 目录和 `state.json` 的状态:
119
+
120
+ | 状态 | 处理方式 |
121
+ |------|---------|
122
+ | `.openmatrix/` 不存在 | 全新初始化: `openmatrix start --init-only` |
123
+ | `status: initialized` | 正常继续(首次使用) |
124
+ | `status: completed` | 提示用户:开始新任务会清理旧数据,确认后继续 |
125
+ | `status: running` | 提示用户先完成或暂停当前任务,然后退出 |
126
+ | `status: paused` | 询问用户:继续上次任务(->`/om:resume`)还是开始新任务 |
127
+ | `status: failed` | 询问用户:重试失败任务(->`/om:retry`)还是开始新任务 |
128
+
129
+ **如果是全新初始化:**
130
+ ```bash
131
+ openmatrix start --init-only
132
+ ```
133
+
134
+ **检查 Git 仓库(必须执行,不可跳过):**
135
+
136
+ ```bash
137
+ # 检查是否有 .git 目录(必须执行此命令)
138
+ ls -la .git 2>/dev/null || echo "NOT_INITIALIZED"
139
+ ```
140
+
141
+ **根据检查结果处理:**
142
+
143
+ | 检查结果 | 必须执行的操作 |
144
+ |---------|--------------|
145
+ | 目录不存在 | 使用 AskUserQuestion 询问用户是否初始化 git |
146
+ | 目录存在 | 继续检查远程仓库 |
147
+
148
+ **如果用户同意初始化,立即执行:**
149
+ ```bash
150
+ git init
151
+ ```
152
+
153
+ ### Step 2: 验证前置条件
154
+
155
+ **先获取当前 runId:**
156
+ ```bash
157
+ cat .openmatrix/current.json 2>/dev/null || echo '{"runId":"run-default"}'
158
+ ```
159
+
160
+ 从返回结果提取 `runId`,后续文件检测和读取都使用 `.openmatrix/{runId}/` 目录。
161
+
162
+ **检查 plan.md 和 tasks-input.json 是否已存在(使用 runId):**
163
+
164
+ ```bash
165
+ cat .openmatrix/${runId}/tasks-input.json 2>/dev/null || echo "NOT_FOUND"
166
+ cat .openmatrix/${runId}/plan.md 2>/dev/null || echo "NOT_FOUND"
167
+ ```
168
+
169
+ **或通过 CLI 检查(推荐):**
170
+ ```bash
171
+ openmatrix status --json | jq '.files'
172
+ ```
173
+
174
+ 返回 `{hasPlan: true, hasTasksInput: true, hasResearchContext: false}` 等。
175
+
176
+ | 情况 | 处理方式 |
177
+ |------|---------|
178
+ | 两个都存在 | 读取内容,继续 Step 3 |
179
+ | 只有 tasks-input.json | 继续执行(plan.md 可选) |
180
+ | 只有 plan.md | 提示:需要 tasks-input.json,引导执行 `/om:plan` |
181
+ | 都不存在,有 `$ARGUMENTS` | 自动调用 `/om:plan` 生成方案(传入参数) |
182
+ | 都不存在,无参数 | 引导执行 `/om:plan` |
183
+
184
+ **如果都存在,读取 tasks-input.json:**
185
+
186
+ ```bash
187
+ cat .openmatrix/${runId}/tasks-input.json
188
+ ```
189
+
190
+ 提取关键字段:`title`、`goals`、`goalTypes`、`goalComplexity`。
191
+
192
+ **检测研究上下文:**
193
+
194
+ ```bash
195
+ cat .openmatrix/${runId}/research/context.json 2>/dev/null || echo "NO_RESEARCH"
196
+ ```
197
+
198
+ 如果检测到研究上下文,告知用户并将 `--research-context` 参数传递给 CLI。
199
+
200
+ ### Step 3: 智能分析任务类型
201
+
202
+ 根据 `goalTypes` 字段判断是开发任务还是非开发任务,这决定 Step 5 需要问哪些问题。
203
+
204
+ | 任务类型 | 定义 | Step 5 问题 |
205
+ |---------|------|------------|
206
+ | **开发任务** | goalTypes 包含 `development` | 质量等级 + E2E + 执行模式 |
207
+ | **非开发任务** | goalTypes 仅有 `testing`/`documentation`/`other` | 仅执行模式 |
208
+
209
+ ---
210
+
211
+ ### Step 4: 提交文档(必须执行,不可跳过)
212
+
213
+ 在开始任何新任务之前,先提交所有已变更的文档文件,确保文档和代码同步提交。
214
+
215
+ ```bash
216
+ git status --porcelain
217
+ ```
218
+
219
+ 检查是否有文档变更(包括 `docs/` 目录、所有 `.md` 文件):
220
+
221
+ ```bash
222
+ git diff --name-only | grep -E '\.md$|^docs/' 2>/dev/null
223
+ git ls-files --others --exclude-standard | grep -E '\.md$|^docs/' 2>/dev/null
224
+ ```
225
+
226
+ 如果有文档变更(未追踪或未提交),执行提交:
227
+
228
+ ```bash
229
+ git add docs/ CLAUDE.md README.md README_EN.md
230
+ # 注意:plan.md 和 tasks-input.json 在 .openmatrix/{runId}/ 目录,被 gitignore,不提交
231
+ git commit -m "$(cat <<'EOF'
232
+ docs: 更新项目文档
233
+
234
+ 更新内容: ...
235
+
236
+ Co-Authored-By: OpenMatrix https://github.com/bigfish1913/openmatrix
237
+ EOF
238
+ )"
239
+ ```
240
+
241
+ **如果没有文档变更,跳过此步骤继续。**
242
+
243
+ ---
244
+
245
+ ### Step 5: 必选问题(不可跳过,不可使用默认值,必须通过 AskUserQuestion 让用户选择)
246
+
247
+ 根据 `goalTypes` 字段判断需要询问哪些问题:
248
+
249
+ | goalTypes | 需要询问 |
250
+ |-----------|---------|
251
+ | `development` | 5.1 质量等级 -> 5.2 E2E(仅严格模式可选) |
252
+ | `testing` | 无需问答,直接进入 Step 7 |
253
+ | `documentation` / `other` | 无需问答,直接进入 Step 7 |
254
+
255
+ #### 5.1 质量等级(仅 `goalTypes: development`)
256
+
257
+ AskUserQuestion: `header: "质量等级"`, `multiSelect: false`
258
+
259
+ **question:** 选择质量等级(决定测试覆盖、Lint、安全扫描等要求)
260
+
261
+ | label | description |
262
+ |-------|-------------|
263
+ | `严格模式` | TDD + >80%覆盖率 + 严格Lint + 安全扫描 — 生产级代码 |
264
+ | `平衡模式 (推荐)` | >60%覆盖率 + Lint + 安全扫描 — 日常开发 |
265
+ | `快速模式` | 无质量门禁 — 快速原型/验证 |
266
+
267
+ **质量等级选择后的自动推断规则:**
268
+
269
+ | 模式 | E2E | AI 验收 | 执行方式 |
270
+ |-----|-----|---------|---------|
271
+ | 严格模式 | 可选问一句(Step 5.2) | 必须 | TDD(先测试后开发) |
272
+ | 平衡模式 | 不需要(自动跳过) | 必须 | 先开发后测试 |
273
+ | 快速模式 | 不需要(自动跳过) | 不需要 | 直接开发 |
274
+
275
+ #### 5.2 E2E 测试(仅 `严格模式` 可选,其他模式自动跳过)
276
+
277
+ **只有选择「严格模式」时才询问此问题,平衡模式和快速模式自动推断为「不需要」。**
278
+
279
+ AskUserQuestion: `header: "E2E 测试"`, `multiSelect: false`
280
+
281
+ **question:** 是否需要端到端 (E2E) 测试?(适用于 Web/Mobile/GUI 项目,耗时较长)
282
+
283
+ | label | description |
284
+ |-------|-------------|
285
+ | `功能测试 (推荐)` | 验证业务流程正确性,无需浏览器可视化,速度快 |
286
+ | `视觉验证` | 需要浏览器可视化验证,可检查页面样式和布局 |
287
+ | `不需要` | 仅进行单元测试和集成测试,节省时间 |
288
+
289
+ #### 执行模式自动推断
290
+
291
+ **执行模式不再通过问答选择,而是根据质量等级自动推断:**
292
+
293
+ - **严格模式** 全自动执行 + TDD 流程
294
+ - **平衡模式** → 全自动执行 + 先开发后测试
295
+ - **快速模式** 全自动执行 + 直接开发
296
+
297
+ **非开发任务**(testing/documentation/other)默认使用「全自动执行」。
298
+
299
+ #### 常见借口
300
+
301
+ | 借口 | 真相 |
302
+ |-----|------|
303
+ | "只是个小功能,不用问这么多" | 小功能也要质量门禁 |
304
+ | "我知道该选什么级别" | 必选问题不可跳过 |
305
+ | "E2E测试浪费时间" | E2E测试由你决定,不是默认跳过 |
306
+ | "我会手动检查代码" | AI验收比手动检查更系统 |
307
+ | "这太复杂了,简化流程" | 流程设计有目的,简化=降低质量 |
308
+
309
+ ### Step 6: 可选问题(仅复杂任务)
310
+
311
+ 根据任务类型,可能需要额外询问:
312
+
313
+ - 技术栈偏好
314
+ - 文档级别
315
+ - 风险评估
316
+ - 验收标准
317
+
318
+ 展示执行计划:
319
+
320
+ ```
321
+ 执行计划
322
+
323
+ Goals:
324
+ 1. [development/high] 目标1
325
+ 2. [development/medium] 目标2
326
+ 3. [testing/medium] 目标3
327
+
328
+ 统计
329
+ Goals: N 个(将生成 N个开发 + N个测试 + 审查)
330
+ 质量级别: xxx
331
+ E2E 测试: 功能测试 / 视觉验证 / 不启用
332
+ 技术方案: .openmatrix/{runId}/plan.md
333
+ ```
334
+
335
+ ### Step 7: 调用 CLI 创建任务(不可跳过)
336
+
337
+ **CLI 自动从当前 runId 目录读取 tasks-input.json 和 plan.md。**
338
+
339
+ **根据质量等级自动设置执行参数:**
340
+
341
+ | 质量等级 | CLI 参数 | 执行方式 |
342
+ |---------|---------|---------|
343
+ | 严格模式 | `--quality strict --mode auto` | TDD 流程 |
344
+ | 平衡模式 | `--quality balanced --mode auto` | 先开发后测试 |
345
+ | 快速模式 | `--quality fast --mode auto` | 直接开发 |
346
+
347
+ **开发任务**(有质量等级选择):
348
+ ```bash
349
+ openmatrix start --tasks-json @tasks-input.json --quality <质量等级> --mode auto --json
350
+ ```
351
+
352
+ 如果存在研究上下文(`.openmatrix/{runId}/research/context.json`),增加 `--research-context` 参数:
353
+ ```bash
354
+ openmatrix start --tasks-json @tasks-input.json --research-context @research/context.json --quality <质量等级> --mode auto --json
355
+ ```
356
+
357
+ 如果启用了 E2E 测试(功能测试),加上 `--e2e-tests`:
358
+ ```bash
359
+ openmatrix start --tasks-json @tasks-input.json --quality strict --mode auto --e2e-tests --json
360
+ ```
361
+
362
+ 如果选择了视觉验证,加上 `--e2e-tests --e2e-type visual`:
363
+ ```bash
364
+ openmatrix start --tasks-json @tasks-input.json --quality strict --mode auto --e2e-tests --e2e-type visual --json
365
+ ```
366
+
367
+ **非开发任务**(无质量等级,默认全自动执行):
368
+ ```bash
369
+ openmatrix start --tasks-json @tasks-input.json --mode auto --json
370
+ ```
371
+
372
+ **注意**: `@tasks-input.json` 表示 CLI 自动从当前 runId 目录读取。CLI 会自动检测 `current.json` 定位 runId。
373
+
374
+ 此命令返回 JSON 包含 `subagentTasks` 列表。
375
+
376
+ ### Step 8: 读取 subagentTasks
377
+
378
+ CLI 返回 JSON 中 `subagentTasks` 数组包含待执行任务:
379
+
380
+ ```json
381
+ {
382
+ "status": "tasks_ready",
383
+ "subagentTasks": [
384
+ {
385
+ "taskId": "TASK-001",
386
+ "agentType": "coder",
387
+ "title": "实现登录功能",
388
+ "description": "...",
389
+ "prompt": "完整任务提示词...",
390
+ "timeout": 300000
391
+ }
392
+ ]
393
+ }
394
+ ```
395
+
396
+ 提取每个任务的 `taskId`、`agentType`、`title`、`prompt`,供 Step 9 执行。
397
+
398
+ ## === 执行阶段(只有此阶段才能写业务代码)===
399
+
400
+ ### Step 9: 逐个执行 subagentTasks(禁止中断)
401
+
402
+ <LOOP-ENFORCEMENT>
403
+ **此步骤是执行循环,必须执行完所有任务后才能停止。**
404
+
405
+ - **禁止在还有未完成任务时停止** 即使 Agent 返回了大段输出,也必须继续下一个
406
+ - **禁止询问"是否继续"** — 直接执行下一个任务
407
+ - **禁止输出"让我知道是否..."后停止** — 继续执行
408
+ - **禁止因为上下文压缩而忘记剩余任务** — 通过 `openmatrix step --json` 重新获取状态
409
+
410
+ **文件持久化循环(防止上下文压缩丢失状态):**
411
+ ```bash
412
+ # 每个 Agent 完成后执行:
413
+ # --summary 传入执行摘要,自动追加到全局 context.md
414
+ openmatrix complete TASK-XXX --success --summary "决策: xxx; 文件: xxx"
415
+
416
+ # 提交验证(防止 commit 静默失败):
417
+ git status --porcelain # 检查是否有未提交的文件
418
+ # 如果有未提交文件 -> 必须手动提交:
419
+ git add . && git commit -m "feat(TASK-XXX): 任务标题"
420
+
421
+ openmatrix step --json # 获取下一个任务 + 检查是否全部完成
422
+ ```
423
+ `openmatrix step` 会从磁盘读取真实状态,不依赖上下文记忆。
424
+ </LOOP-ENFORCEMENT>
425
+
426
+ #### 9.1 歧义检测机制
427
+
428
+ **Agent 输出中可能包含歧义报告(JSON 格式):**
429
+
430
+ 当 Agent 输出包含以下标记时,表示检测到歧义:
431
+ ```
432
+ <AMBIGUITY_REPORT>
433
+ {
434
+ "ambiguities": [
435
+ {
436
+ "type": "missing_info" | "conflicting_req" | "unclear_scope" | "tech_choice" | "edge_case",
437
+ "severity": "critical" | "high" | "medium" | "low",
438
+ "description": "歧义描述",
439
+ "suggestions": ["建议1", "建议2"]
440
+ }
441
+ ],
442
+ "overallSeverity": "critical" | "high" | "medium" | "low"
443
+ }
444
+ </AMBIGUITY_REPORT>
445
+ ```
446
+
447
+ #### 9.2 歧义处理策略
448
+
449
+ 根据 `overallSeverity` 和执行模式选择处理方式:
450
+
451
+ | 执行模式 | Critical/High | Medium/Low |
452
+ |---------|--------------|------------|
453
+ | **全自动执行** | Meeting + 继续执行 | Meeting + 继续执行 |
454
+ | **关键节点确认** | AskUserQuestion | Meeting + 继续执行 |
455
+ | **每阶段确认** | AskUserQuestion | Meeting + 继续执行 |
456
+
457
+ **Meeting 处理(写入阻塞记录):**
458
+ ```bash
459
+ openmatrix meeting --create --task TASK-XXX --reason "歧义: ${description}" --severity ${severity}
460
+ ```
461
+
462
+ **AskUserQuestion 处理(交互确认):**
463
+
464
+ AskUserQuestion: `header: "歧义确认"`, `multiSelect: false`
465
+ **question:** 检测到 ${severity} 级歧义:${description}。请确认处理方式
466
+
467
+ | label | description |
468
+ |-------|-------------|
469
+ | 提供信息 | 回答歧义相关问题,继续执行 |
470
+ | 跳过任务 | 标记当前任务为可选,继续执行其他任务 |
471
+ | 修改方案 | 根据歧义调整任务方案后继续 |
472
+
473
+ #### 9.3 执行 Agent 任务
474
+
475
+ **Skill 感知执行:**
476
+
477
+ 执行每个任务前,AI 应根据任务内容判断是否需要调用相关 skill 来增强执行质量。
478
+
479
+ 可用 skill 列表(AI 自行判断是否适用):
480
+ - `om:test` — 测试生成与验证循环
481
+ - `frontend-design` — 前端/UI 设计与实现
482
+ - `om:research` — 领域研究
483
+ - 其他已安装的 skill
484
+
485
+ **判断流程:**
486
+ 1. 读取任务的 `agentType`、`title`、`description`
487
+ 2. AI 自行判断该任务是否匹配某个 skill 的触发条件
488
+ 3. 如果匹配,在 Agent prompt 中注入该 skill 的核心指令或先调用对应 CLI 获取上下文数据
489
+ 4. 如果不匹配任何 skill,直接执行
490
+
491
+ **tester 任务验证循环(om:test 逻辑):**
492
+
493
+ AI 判断任务需要 om:test 流程时:
494
+
495
+ 1. 先调用 CLI 获取项目测试配置:
496
+ ```bash
497
+ openmatrix test --json
498
+ ```
499
+
500
+ 2. 调用 Agent 生成测试(prompt 中已包含原始扫描数据):
501
+ ```typescript
502
+ Agent({
503
+ subagent_type: task.subagent_type,
504
+ description: task.description,
505
+ prompt: task.prompt + "\n\n⚠️ 完成后请输出简短摘要(不超过3行):\n1. 关键决策\n2. 创建/修改的文件\n3. 对后续任务的建议\n\n🚫 **禁止执行以下 Git 命令**:\n- ❌ git commit\n- ❌ git checkout/merge/pull/push/rebase/branch\n\n✅ 允许:git status, git diff, git log",
506
+ run_in_background: true
507
+ })
508
+ ```
509
+
510
+ 3. Agent 完成后,自动验证测试:
511
+ ```bash
512
+ npm test -- --run 2>&1
513
+ ```
514
+
515
+ 4. 验证失败时自动重试(最多 3 次):
516
+ - 将失败输出传给新 Agent 修复测试
517
+ - 重新验证
518
+ - 3 次失败后标记为 blocked,创建 Meeting
519
+
520
+ **默认执行方式(无特殊 skill 匹配时):**
521
+
522
+ ```typescript
523
+ Agent({
524
+ subagent_type: task.subagent_type,
525
+ description: task.description,
526
+ prompt: task.prompt + "\n\n⚠️ 完成后请输出简短摘要(不超过3行):\n1. 关键决策\n2. 创建/修改的文件\n3. 对后续任务的建议\n\n🚫 **禁止执行以下 Git 命令**:\n- ❌ git commit — 所有提交统一通过 openmatrix complete 执行\n- ❌ git checkout — 不要切换分支\n- ❌ git merge — 不要合并其他分支\n- ❌ git pull — 不要拉取远程更新\n- ❌ git push — 不要推送代码\n- ❌ git rebase — 不要变基\n- ❌ git branch — 不要创建/删除分支\n\n✅ 允许:git status, git diff, git log",
527
+ isolation: task.isolation,
528
+ run_in_background: true
529
+ })
530
+ ```
531
+
532
+ 每个 Agent 完成后(收到后台完成通知时):
533
+
534
+ <VERIFICATION-BEFORE-COMPLETION>
535
+ ## ⛔ 铁律:证据优先于声明
536
+
537
+ **NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE**
538
+
539
+ 在调用 `openmatrix complete` 之前,必须:
540
+ 1. **运行验证命令** — 测试、构建、lint 等
541
+ 2. **读取完整输出** — 检查退出码、错误信息
542
+ 3. **确认验证通过** — 只有通过才能标记完成
543
+
544
+ **验证命令(根据任务类型选择):**
545
+
546
+ | 任务类型 | 验证命令 |
547
+ |---------|---------|
548
+ | coder 任务 | `npm run build 2>&1 && npm test -- --run 2>&1` |
549
+ | tester 任务 | `npm test -- --run 2>&1` |
550
+ | reviewer 任务 | 无需验证(审查本身即是验证) |
551
+ | 文档任务 | `npm run build 2>&1`(验证无破坏) |
552
+
553
+ **验证流程:**
554
+ ```bash
555
+ # 1. 运行验证(自动判断退出码)
556
+ VERIFY_EXIT=0
557
+ npm test -- --run > /tmp/verify-output.txt 2>&1 || VERIFY_EXIT=1
558
+
559
+ # 2. 检查结果
560
+ if [ $VERIFY_EXIT -eq 0 ]; then
561
+ echo "✅ 验证通过"
562
+ else
563
+ echo "❌ 验证失败"
564
+ cat /tmp/verify-output.txt | tail -30
565
+ # 不调用 openmatrix complete,而是让 Agent 修复后重新验证
566
+ fi
567
+
568
+ # 3. 只有通过才标记完成
569
+ if [ $VERIFY_EXIT -eq 0 ]; then
570
+ openmatrix complete TASK-XXX --success --summary "关键决策: xxx; 创建文件: xxx"
571
+ fi
572
+ ```
573
+
574
+ **红旗警告 — 停止并验证:**
575
+
576
+ | 借口 | 真相 |
577
+ |-----|------|
578
+ | "应该能工作" | 运行验证,不要猜测 |
579
+ | "测试看起来没问题" | 运行测试命令,读取输出 |
580
+ | "Agent 说成功了" | Agent 的报告不是证据,运行验证 |
581
+ | "只是简单改动" | 简单改动也要验证 |
582
+ | "我会手动检查" | 手动检查不可重复 |
583
+ | "跳过验证更快" | 跳过验证 = 虚假完成 |
584
+
585
+ **常见失败处理:**
586
+
587
+ 验证失败时,不要调用 `openmatrix complete`,而是:
588
+ 1. 分析失败原因
589
+ 2. 让修复 Agent 处理(最多 3 次循环)
590
+ 3. 重新验证
591
+ 4. 3 次失败后创建 Meeting 记录阻塞问题
592
+
593
+ </VERIFICATION-BEFORE-COMPLETION>
594
+
595
+ **验证通过后,标记完成:**
596
+ ```bash
597
+ openmatrix complete TASK-XXX --success --summary "关键决策: xxx; 创建文件: xxx"
598
+ ```
599
+
600
+ **注意**: `openmatrix complete` 会自动执行以下操作:
601
+ 1. 🔄 **同步 Worktree 改动** - 如果 Agent 在 worktree 中工作,自动将改动同步到主工作树
602
+ 2. 📝 **更新上下文** - 将执行摘要写入 context.md
603
+ 3. **标记完成** - 更新任务状态为下一阶段
604
+
605
+ 2. **全局上下文文件** 所有任务的上下文累积在 `.openmatrix/{runId}/context.md`:
606
+ - 每次任务完成后,通过 `--summary` 参数追加写入
607
+ - 后续 Agent 可读取此文件了解前序任务的决策和发现
608
+
609
+ 3. Git 自动提交(必须使用下方统一提交格式)
610
+
611
+ 4. **获取下一个任务(必须执行,防止上下文压缩丢失):**
612
+ ```bash
613
+ openmatrix step --json
614
+ ```
615
+
616
+ **返回值解析:**
617
+
618
+ | status | 含义 | 后续操作 |
619
+ |--------|------|---------|
620
+ | `next` | 有下一个任务 | 继续执行返回的 `subagent` 配置 |
621
+ | `done` | 所有任务完成 | 进入最终提交 |
622
+ | `blocked` | 无可执行任务 | 检查是否有 Meeting,用 `/om:meeting` 处理 |
623
+
624
+ 5. **审批点处理(根据执行模式):**
625
+
626
+ | 执行模式 | 审批点 | 处理方式 |
627
+ |---------|--------|---------|
628
+ | 全自动执行 | 无 | 自动批准所有操作 |
629
+ | 关键节点确认 | plan, merge, deploy | 到达审批点时暂停,交互式确认 |
630
+ | 每阶段确认 | develop, verify, accept | 每个阶段完成后暂停,交互式确认 |
631
+
632
+ **Agent 上下文共享机制 (Agent Memory):**
633
+
634
+ 每个 Agent 执行时会自动接收前序 Agent 的上下文信息(通过 `context.md` 文件)。
635
+
636
+ ```
637
+ Agent-1 完成 -> 写入 context.md -> Agent-2 读取 Agent-1 的上下文 -> 写入 context.md -> ...
638
+ ```
639
+
640
+ **中断恢复:** 如果会话中断,再次执行 `/om:start` 时:
641
+ 1. 读取 `.openmatrix/state.json`
642
+ 2. 如果 `status === 'running'`,读取所有任务,找到 status 不是 completed 的任务
643
+ 3. 从中断的任务继续执行,不需要重新开始
644
+
645
+ **Meeting 处理(auto 模式):** 记录并跳过,执行完成后统一展示。
646
+
647
+ **执行完成后:**
648
+
649
+ ### Meeting 机制
650
+
651
+ 在「全自动执行」模式下:
652
+ - 遇到阻塞任务时,创建 Meeting 记录并跳过该任务
653
+ - 继续执行其他独立任务,最大化并行度
654
+ - 所有非阻塞任务完成后,提示用户使用 `/om:meeting` 统一处理阻塞问题
655
+
656
+ ```bash
657
+ openmatrix meeting --list
658
+ ```
659
+
660
+ 如有 pending Meeting,交互式处理。
661
+
662
+ 所有任务完成后,执行最终 Git 提交(**必须使用 HEREDOC 格式**):
663
+ ```bash
664
+ git add . && git commit -m "$(cat <<'EOF'
665
+ feat: 完成所有任务 - 任务总标题
666
+
667
+ 改动点1
668
+ 改动点2
669
+
670
+ 影响范围: 全部模块
671
+ 文件改动: src/xxx.ts, src/yyy.ts
672
+
673
+ Co-Authored-By: OpenMatrix https://github.com/bigfish1913/openmatrix
674
+ EOF
675
+ )"
676
+ ```
677
+
678
+ **Git 提交格式规范(所有提交必须遵守):**
679
+
680
+ ```
681
+ <type>(TASK-XXX): 简短描述
682
+
683
+ 改动点1
684
+ 改动点2
685
+
686
+ 影响范围: 模块名
687
+ 文件改动: 文件1, 文件2
688
+
689
+ Co-Authored-By: OpenMatrix https://github.com/bigfish1913/openmatrix
690
+ ```
691
+
692
+ **type 映射:** feat(新功能) / fix(修复) / test(测试) / refactor(重构) / docs(文档)
693
+ **禁止使用 emoji**,使用纯文本格式
694
+
695
+ </process>
696
+
697
+ <arguments>
698
+ $ARGUMENTS
699
+ </arguments>
700
+
701
+ <examples>
702
+ /om:start
703
+ /om:start "实现用户登录功能"
704
+ </examples>
705
+
706
+ <notes>
707
+ ## 流程定位
708
+
709
+ ```
710
+ 需求 -> brainstorm (澄清需求) -> plan (生成方案) -> start (执行) -> end
711
+ 需求 -> brainstorm (澄清需求) -> plan (生成方案) -> auto (全自动执行) -> end
712
+ ```
713
+
714
+ start 和 auto 在同一位置,区别在于 start 有交互审批,auto 零交互。前置条件:
715
+ - `.openmatrix/{runId}/plan.md` — 技术方案(由 /om:plan 生成)
716
+ - `.openmatrix/{runId}/tasks-input.json` — 结构化元数据(由 /om:plan 生成)
717
+
718
+ CLI 自动通过 `current.json` 定位当前 runId。
719
+
720
+ 如果前置条件不满足,引导用户执行 `/om:plan`。
721
+
722
+ ## 质量级别
723
+
724
+ | 级别 | TDD | 覆盖率 | Lint | 安全 | 执行方式 |
725
+ |------|:---:|:------:|:----:|:----:|:--------:|
726
+ | 严格模式 | Y | >80% | Y | Y | TDD |
727
+ | 平衡模式 | N | >60% | Y | Y | 先开发后测试 |
728
+ | 快速模式 | N | 无 | N | N | 直接开发 |
729
+
730
+ ## 执行流程
731
+
732
+ ```
733
+ Step 1-2: 初始化 + 验证前置条件 -> Step 3-4: 分析类型 + 提交文档 -> Step 5-6: 问答 + 确认
734
+ -> Step 7: openmatrix start --tasks-json (必须) -> Step 8: 读取 subagentTasks
735
+ -> Step 9: Agent 逐个执行 (只有这里写代码)
736
+ ```
737
+
738
+ ## 自动推断规则
739
+
740
+ | 质量等级 | E2E 问题 | AI 验收 | 执行模式 |
741
+ |---------|---------|---------|---------|
742
+ | 严格模式 | 可选问一句 | 必须 | 全自动 + TDD |
743
+ | 平衡模式 | 不需要 | 必须 | 全自动 + 先开发后测试 |
744
+ | 快速模式 | 不需要 | 不需要 | 全自动 + 直接开发 |
745
+
746
+ ## Git 提交格式
747
+
748
+ ```
749
+ <type>(TASK-XXX): 简短描述
750
+
751
+ 改动点1 / 改动点2
752
+ 影响范围: 模块名
753
+ 文件改动: 文件1, 文件2
754
+ Co-Authored-By: OpenMatrix https://github.com/bigfish1913/openmatrix
755
+ ```
756
+
757
+ type: feat/fix/test/refactor/docs。禁止 emoji。
758
+ </notes>