openmatrix 0.1.58 → 0.1.59
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 +7 -3
- package/dist/agents/impl/researcher-agent.js +96 -96
- package/dist/cli/commands/complete.js +3 -2
- package/dist/orchestrator/git-commit-manager.js +53 -10
- package/dist/orchestrator/phase-executor.js +5 -4
- package/package.json +1 -1
- package/skills/auto.md +7 -1
- package/skills/research.md +257 -257
- package/skills/start.md +358 -352
package/skills/start.md
CHANGED
|
@@ -1,352 +1,358 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: om:start
|
|
3
|
-
description: 启动新的任务执行周期
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<NO-OTHER-SKILLS>
|
|
7
|
-
执行此技能时,不得调用 superpowers、gsd 或其他任务编排相关的技能。OpenMatrix 独立运行,不依赖外部任务编排系统。
|
|
8
|
-
</NO-OTHER-SKILLS>
|
|
9
|
-
|
|
10
|
-
<MANDATORY-EXECUTION-ORDER>
|
|
11
|
-
## 执行顺序 - 必须严格按此顺序,不得跳过任何步骤
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
Step 1: 初始化 .openmatrix 目录
|
|
15
|
-
Step 2: 解析任务输入(文件或描述)
|
|
16
|
-
Step 3: 智能分析,动态决定是否需要交互问答
|
|
17
|
-
Step 4: 如需问答 → AskUserQuestion(可跳过简单任务)
|
|
18
|
-
Step 5: 展示执行计划 + 确认执行模式
|
|
19
|
-
Step 6: AI 提取 goals,生成 plan
|
|
20
|
-
Step 7: 写入 .openmatrix/tasks-input.json ← 必须完成
|
|
21
|
-
Step 8: 调用 openmatrix start --tasks-json ← 必须完成,不可跳过
|
|
22
|
-
Step 9: 从 CLI 返回结果中读取 subagentTasks 列表 ← 必须完成
|
|
23
|
-
Step 10: 逐个执行 subagentTasks(调用 Agent 工具) ← 只有这步才能写代码
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
**违反以下任一规则将导致任务执行失败:**
|
|
27
|
-
|
|
28
|
-
❌ **禁止在 Step 8 之前写任何业务代码** — 所有代码必须在 Step 10 通过 Agent 执行
|
|
29
|
-
❌ **禁止跳过 Step 8** — 必须调用 CLI,不能用其他方式代替
|
|
30
|
-
❌ **禁止自行规划 Phase** — 任务由 CLI 的 TaskPlanner 拆分,AI 只提取 goals
|
|
31
|
-
❌ **禁止用 Bash/npm/write 直接写业务代码** — 业务代码只能通过 Step 10 的 Agent 执行
|
|
32
|
-
</MANDATORY-EXECUTION-ORDER>
|
|
33
|
-
|
|
34
|
-
<objective>
|
|
35
|
-
解析任务文档,智能推断配置,仅对不确定的问题交互问答,确认后通过 CLI 拆分任务并执行。
|
|
36
|
-
</objective>
|
|
37
|
-
|
|
38
|
-
<process>
|
|
39
|
-
|
|
40
|
-
## === 准备阶段(此阶段不得写任何业务代码)===
|
|
41
|
-
|
|
42
|
-
### Step 1: 智能检测状态
|
|
43
|
-
|
|
44
|
-
检查 `.openmatrix/` 目录和 `state.json` 的状态:
|
|
45
|
-
|
|
46
|
-
| 状态 | 处理方式 |
|
|
47
|
-
|------|---------|
|
|
48
|
-
| `.openmatrix/` 不存在 | 全新初始化: `openmatrix start --init-only` |
|
|
49
|
-
| `status: initialized` | 正常继续(首次使用) |
|
|
50
|
-
| `status: completed` | 提示用户:开始新任务会清理旧数据,确认后继续 |
|
|
51
|
-
| `status: running` | 提示用户先完成或暂停当前任务,然后退出 |
|
|
52
|
-
| `status: paused` | 询问用户:继续上次任务(→`/om:resume`)还是开始新任务 |
|
|
53
|
-
| `status: failed` | 询问用户:重试失败任务(→`/om:retry`)还是开始新任务 |
|
|
54
|
-
|
|
55
|
-
**如果是全新初始化:**
|
|
56
|
-
```bash
|
|
57
|
-
openmatrix start --init-only
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
检查 Git 仓库:
|
|
61
|
-
- 无 `.git` → 询问用户是否初始化
|
|
62
|
-
- 无远程仓库 → 提示用户添加
|
|
63
|
-
|
|
64
|
-
智能检测 `.gitignore`,自动补充缺失的忽略项(不询问)。
|
|
65
|
-
|
|
66
|
-
### Step 2: 解析任务输入
|
|
67
|
-
|
|
68
|
-
- `$ARGUMENTS` 为文件路径 → 读取文件内容
|
|
69
|
-
- `$ARGUMENTS` 为任务描述 → 直接使用
|
|
70
|
-
- 无参数 → AskUserQuestion 询问任务内容
|
|
71
|
-
|
|
72
|
-
### Step 3: 智能分析
|
|
73
|
-
|
|
74
|
-
根据任务内容判断是否需要交互问答:
|
|
75
|
-
|
|
76
|
-
| 任务类型 | 跳过问题 | 默认配置 |
|
|
77
|
-
|---------|---------|---------|
|
|
78
|
-
| Bug 修复 / 小改动 | 跳过所有 | fast + 最小文档 |
|
|
79
|
-
| 新功能开发 | 正常询问 | balanced |
|
|
80
|
-
| 重构 | 跳过 E2E | balanced |
|
|
81
|
-
| 测试编写 | 跳过文档 | 无需文档 |
|
|
82
|
-
|
|
83
|
-
### Step 4: 交互问答(仅对复杂任务)
|
|
84
|
-
|
|
85
|
-
如果需要确认配置,使用 AskUserQuestion 一次询问多个问题:
|
|
86
|
-
|
|
87
|
-
```typescript
|
|
88
|
-
AskUserQuestion({
|
|
89
|
-
questions: [
|
|
90
|
-
{
|
|
91
|
-
question: "选择质量级别:",
|
|
92
|
-
header: "质量",
|
|
93
|
-
options: [
|
|
94
|
-
{ label: "strict", description: "TDD + >80%覆盖率 + Lint + 安全扫描" },
|
|
95
|
-
{ label: "balanced", description: ">60%覆盖率 + Lint + 安全扫描" },
|
|
96
|
-
{ label: "fast", description: "无质量门禁" }
|
|
97
|
-
],
|
|
98
|
-
multiSelect: false
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
question: "是否启用 E2E 测试? (Web/Mobile/GUI 项目推荐)",
|
|
102
|
-
header: "E2E",
|
|
103
|
-
options: [
|
|
104
|
-
{ label: "跳过 (推荐)", description: "E2E 测试耗时较长,大多数项目不需要" },
|
|
105
|
-
{ label: "启用", description: "适合 Web 应用 (Playwright/Cypress)、Mobile (Appium/Detox)" }
|
|
106
|
-
],
|
|
107
|
-
multiSelect: false
|
|
108
|
-
}
|
|
109
|
-
]
|
|
110
|
-
})
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### Step 5: 展示计划 + 确认模式
|
|
114
|
-
|
|
115
|
-
展示 AI 生成的执行计划:
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
📋 执行计划
|
|
119
|
-
(展示 plan 内容)
|
|
120
|
-
|
|
121
|
-
📊 统计
|
|
122
|
-
Goals: N 个(将生成 N个开发 + N个测试 + 审查)
|
|
123
|
-
质量级别: xxx
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
使用 AskUserQuestion 确认执行模式:
|
|
127
|
-
|
|
128
|
-
```typescript
|
|
129
|
-
AskUserQuestion({
|
|
130
|
-
questions: [{
|
|
131
|
-
question: "请选择执行模式:",
|
|
132
|
-
header: "执行模式",
|
|
133
|
-
options: [
|
|
134
|
-
{ label: "全自动执行 (推荐)", description: "无需确认,自动完成" },
|
|
135
|
-
{ label: "关键节点确认", description: "plan/merge 时暂停确认" },
|
|
136
|
-
{ label: "每阶段确认", description: "每个阶段完成后暂停" }
|
|
137
|
-
],
|
|
138
|
-
multiSelect: false
|
|
139
|
-
]
|
|
140
|
-
})
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
**默认进入 BYPASS 模式(全自动执行),用户可选其他模式。**
|
|
144
|
-
|
|
145
|
-
### Step 6: AI 提取 goals + 生成 plan
|
|
146
|
-
|
|
147
|
-
从任务描述中提取:
|
|
148
|
-
- **goals**: 至少 3-8 个明确功能目标,每个是独立可交付模块
|
|
149
|
-
- **constraints**: 技术栈、兼容性等约束
|
|
150
|
-
- **deliverables**: 交付物列表
|
|
151
|
-
- **plan**: 技术方案、模块划分、接口设计、关键决策
|
|
152
|
-
|
|
153
|
-
### Step 7: 写入 tasks-input.json
|
|
154
|
-
|
|
155
|
-
用 Write 工具写入 `.openmatrix/tasks-input.json`:
|
|
156
|
-
|
|
157
|
-
```json
|
|
158
|
-
{
|
|
159
|
-
"title": "任务标题",
|
|
160
|
-
"description": "整体描述",
|
|
161
|
-
"goals": ["目标1", "目标2", "目标3"],
|
|
162
|
-
"constraints": ["约束1"],
|
|
163
|
-
"deliverables": ["src/xxx.ts"],
|
|
164
|
-
"answers": { "技术栈": "..." },
|
|
165
|
-
"quality": "strict|balanced|fast",
|
|
166
|
-
"mode": "confirm-all|confirm-key|auto",
|
|
167
|
-
"plan": "## 技术方案\n1. ...\n2. ..."
|
|
168
|
-
}
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
**E2E 测试:** 如果用户在 Step 4 选择了"启用 E2E",在 quality 后面加上:
|
|
172
|
-
```
|
|
173
|
-
"e2eTests": true
|
|
174
|
-
```
|
|
175
|
-
这会让 CLI 的 TaskPlanner 在任务拆分时生成额外的 E2E 测试任务。
|
|
176
|
-
|
|
177
|
-
### Step 8: 调用 CLI 创建任务 ⚠️ 不可跳过
|
|
178
|
-
|
|
179
|
-
**必须执行此命令,禁止跳过:**
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
openmatrix start --tasks-json @.openmatrix/tasks-input.json --json
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
此命令返回 JSON 包含 `subagentTasks` 列表。
|
|
186
|
-
|
|
187
|
-
### Step 9: 读取 subagentTasks
|
|
188
|
-
|
|
189
|
-
CLI 返回 JSON 中 `subagentTasks` 数组包含待执行任务。
|
|
190
|
-
|
|
191
|
-
## === 执行阶段(只有此阶段才能写业务代码)===
|
|
192
|
-
|
|
193
|
-
### Step 10: 逐个执行 subagentTasks(禁止中断)
|
|
194
|
-
|
|
195
|
-
<LOOP-ENFORCEMENT>
|
|
196
|
-
**此步骤是执行循环,必须执行完所有任务后才能停止。**
|
|
197
|
-
|
|
198
|
-
❌ **禁止在还有未完成任务时停止** — 即使 Agent 返回了大段输出,也必须继续下一个
|
|
199
|
-
❌ **禁止询问"是否继续"** — 直接执行下一个任务
|
|
200
|
-
❌ **禁止输出"让我知道是否..."后停止** — 继续执行
|
|
201
|
-
❌ **禁止因为上下文压缩而忘记剩余任务** — 通过 `openmatrix step --json` 重新获取状态
|
|
202
|
-
|
|
203
|
-
**文件持久化循环(防止上下文压缩丢失状态):**
|
|
204
|
-
```bash
|
|
205
|
-
# 每个 Agent 完成后执行:
|
|
206
|
-
openmatrix complete TASK-XXX --success # 标记完成 +
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
Agent
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
```bash
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
</
|
|
327
|
-
|
|
328
|
-
<
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
Step
|
|
347
|
-
↓
|
|
348
|
-
Step
|
|
349
|
-
↓
|
|
350
|
-
Step
|
|
351
|
-
|
|
352
|
-
|
|
1
|
+
---
|
|
2
|
+
name: om:start
|
|
3
|
+
description: 启动新的任务执行周期
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<NO-OTHER-SKILLS>
|
|
7
|
+
执行此技能时,不得调用 superpowers、gsd 或其他任务编排相关的技能。OpenMatrix 独立运行,不依赖外部任务编排系统。
|
|
8
|
+
</NO-OTHER-SKILLS>
|
|
9
|
+
|
|
10
|
+
<MANDATORY-EXECUTION-ORDER>
|
|
11
|
+
## 执行顺序 - 必须严格按此顺序,不得跳过任何步骤
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Step 1: 初始化 .openmatrix 目录
|
|
15
|
+
Step 2: 解析任务输入(文件或描述)
|
|
16
|
+
Step 3: 智能分析,动态决定是否需要交互问答
|
|
17
|
+
Step 4: 如需问答 → AskUserQuestion(可跳过简单任务)
|
|
18
|
+
Step 5: 展示执行计划 + 确认执行模式
|
|
19
|
+
Step 6: AI 提取 goals,生成 plan
|
|
20
|
+
Step 7: 写入 .openmatrix/tasks-input.json ← 必须完成
|
|
21
|
+
Step 8: 调用 openmatrix start --tasks-json ← 必须完成,不可跳过
|
|
22
|
+
Step 9: 从 CLI 返回结果中读取 subagentTasks 列表 ← 必须完成
|
|
23
|
+
Step 10: 逐个执行 subagentTasks(调用 Agent 工具) ← 只有这步才能写代码
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**违反以下任一规则将导致任务执行失败:**
|
|
27
|
+
|
|
28
|
+
❌ **禁止在 Step 8 之前写任何业务代码** — 所有代码必须在 Step 10 通过 Agent 执行
|
|
29
|
+
❌ **禁止跳过 Step 8** — 必须调用 CLI,不能用其他方式代替
|
|
30
|
+
❌ **禁止自行规划 Phase** — 任务由 CLI 的 TaskPlanner 拆分,AI 只提取 goals
|
|
31
|
+
❌ **禁止用 Bash/npm/write 直接写业务代码** — 业务代码只能通过 Step 10 的 Agent 执行
|
|
32
|
+
</MANDATORY-EXECUTION-ORDER>
|
|
33
|
+
|
|
34
|
+
<objective>
|
|
35
|
+
解析任务文档,智能推断配置,仅对不确定的问题交互问答,确认后通过 CLI 拆分任务并执行。
|
|
36
|
+
</objective>
|
|
37
|
+
|
|
38
|
+
<process>
|
|
39
|
+
|
|
40
|
+
## === 准备阶段(此阶段不得写任何业务代码)===
|
|
41
|
+
|
|
42
|
+
### Step 1: 智能检测状态
|
|
43
|
+
|
|
44
|
+
检查 `.openmatrix/` 目录和 `state.json` 的状态:
|
|
45
|
+
|
|
46
|
+
| 状态 | 处理方式 |
|
|
47
|
+
|------|---------|
|
|
48
|
+
| `.openmatrix/` 不存在 | 全新初始化: `openmatrix start --init-only` |
|
|
49
|
+
| `status: initialized` | 正常继续(首次使用) |
|
|
50
|
+
| `status: completed` | 提示用户:开始新任务会清理旧数据,确认后继续 |
|
|
51
|
+
| `status: running` | 提示用户先完成或暂停当前任务,然后退出 |
|
|
52
|
+
| `status: paused` | 询问用户:继续上次任务(→`/om:resume`)还是开始新任务 |
|
|
53
|
+
| `status: failed` | 询问用户:重试失败任务(→`/om:retry`)还是开始新任务 |
|
|
54
|
+
|
|
55
|
+
**如果是全新初始化:**
|
|
56
|
+
```bash
|
|
57
|
+
openmatrix start --init-only
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
检查 Git 仓库:
|
|
61
|
+
- 无 `.git` → 询问用户是否初始化
|
|
62
|
+
- 无远程仓库 → 提示用户添加
|
|
63
|
+
|
|
64
|
+
智能检测 `.gitignore`,自动补充缺失的忽略项(不询问)。
|
|
65
|
+
|
|
66
|
+
### Step 2: 解析任务输入
|
|
67
|
+
|
|
68
|
+
- `$ARGUMENTS` 为文件路径 → 读取文件内容
|
|
69
|
+
- `$ARGUMENTS` 为任务描述 → 直接使用
|
|
70
|
+
- 无参数 → AskUserQuestion 询问任务内容
|
|
71
|
+
|
|
72
|
+
### Step 3: 智能分析
|
|
73
|
+
|
|
74
|
+
根据任务内容判断是否需要交互问答:
|
|
75
|
+
|
|
76
|
+
| 任务类型 | 跳过问题 | 默认配置 |
|
|
77
|
+
|---------|---------|---------|
|
|
78
|
+
| Bug 修复 / 小改动 | 跳过所有 | fast + 最小文档 |
|
|
79
|
+
| 新功能开发 | 正常询问 | balanced |
|
|
80
|
+
| 重构 | 跳过 E2E | balanced |
|
|
81
|
+
| 测试编写 | 跳过文档 | 无需文档 |
|
|
82
|
+
|
|
83
|
+
### Step 4: 交互问答(仅对复杂任务)
|
|
84
|
+
|
|
85
|
+
如果需要确认配置,使用 AskUserQuestion 一次询问多个问题:
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
AskUserQuestion({
|
|
89
|
+
questions: [
|
|
90
|
+
{
|
|
91
|
+
question: "选择质量级别:",
|
|
92
|
+
header: "质量",
|
|
93
|
+
options: [
|
|
94
|
+
{ label: "strict", description: "TDD + >80%覆盖率 + Lint + 安全扫描" },
|
|
95
|
+
{ label: "balanced", description: ">60%覆盖率 + Lint + 安全扫描" },
|
|
96
|
+
{ label: "fast", description: "无质量门禁" }
|
|
97
|
+
],
|
|
98
|
+
multiSelect: false
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
question: "是否启用 E2E 测试? (Web/Mobile/GUI 项目推荐)",
|
|
102
|
+
header: "E2E",
|
|
103
|
+
options: [
|
|
104
|
+
{ label: "跳过 (推荐)", description: "E2E 测试耗时较长,大多数项目不需要" },
|
|
105
|
+
{ label: "启用", description: "适合 Web 应用 (Playwright/Cypress)、Mobile (Appium/Detox)" }
|
|
106
|
+
],
|
|
107
|
+
multiSelect: false
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
})
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Step 5: 展示计划 + 确认模式
|
|
114
|
+
|
|
115
|
+
展示 AI 生成的执行计划:
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
📋 执行计划
|
|
119
|
+
(展示 plan 内容)
|
|
120
|
+
|
|
121
|
+
📊 统计
|
|
122
|
+
Goals: N 个(将生成 N个开发 + N个测试 + 审查)
|
|
123
|
+
质量级别: xxx
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
使用 AskUserQuestion 确认执行模式:
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
AskUserQuestion({
|
|
130
|
+
questions: [{
|
|
131
|
+
question: "请选择执行模式:",
|
|
132
|
+
header: "执行模式",
|
|
133
|
+
options: [
|
|
134
|
+
{ label: "全自动执行 (推荐)", description: "无需确认,自动完成" },
|
|
135
|
+
{ label: "关键节点确认", description: "plan/merge 时暂停确认" },
|
|
136
|
+
{ label: "每阶段确认", description: "每个阶段完成后暂停" }
|
|
137
|
+
],
|
|
138
|
+
multiSelect: false
|
|
139
|
+
]
|
|
140
|
+
})
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**默认进入 BYPASS 模式(全自动执行),用户可选其他模式。**
|
|
144
|
+
|
|
145
|
+
### Step 6: AI 提取 goals + 生成 plan
|
|
146
|
+
|
|
147
|
+
从任务描述中提取:
|
|
148
|
+
- **goals**: 至少 3-8 个明确功能目标,每个是独立可交付模块
|
|
149
|
+
- **constraints**: 技术栈、兼容性等约束
|
|
150
|
+
- **deliverables**: 交付物列表
|
|
151
|
+
- **plan**: 技术方案、模块划分、接口设计、关键决策
|
|
152
|
+
|
|
153
|
+
### Step 7: 写入 tasks-input.json
|
|
154
|
+
|
|
155
|
+
用 Write 工具写入 `.openmatrix/tasks-input.json`:
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"title": "任务标题",
|
|
160
|
+
"description": "整体描述",
|
|
161
|
+
"goals": ["目标1", "目标2", "目标3"],
|
|
162
|
+
"constraints": ["约束1"],
|
|
163
|
+
"deliverables": ["src/xxx.ts"],
|
|
164
|
+
"answers": { "技术栈": "..." },
|
|
165
|
+
"quality": "strict|balanced|fast",
|
|
166
|
+
"mode": "confirm-all|confirm-key|auto",
|
|
167
|
+
"plan": "## 技术方案\n1. ...\n2. ..."
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**E2E 测试:** 如果用户在 Step 4 选择了"启用 E2E",在 quality 后面加上:
|
|
172
|
+
```
|
|
173
|
+
"e2eTests": true
|
|
174
|
+
```
|
|
175
|
+
这会让 CLI 的 TaskPlanner 在任务拆分时生成额外的 E2E 测试任务。
|
|
176
|
+
|
|
177
|
+
### Step 8: 调用 CLI 创建任务 ⚠️ 不可跳过
|
|
178
|
+
|
|
179
|
+
**必须执行此命令,禁止跳过:**
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
openmatrix start --tasks-json @.openmatrix/tasks-input.json --json
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
此命令返回 JSON 包含 `subagentTasks` 列表。
|
|
186
|
+
|
|
187
|
+
### Step 9: 读取 subagentTasks
|
|
188
|
+
|
|
189
|
+
CLI 返回 JSON 中 `subagentTasks` 数组包含待执行任务。
|
|
190
|
+
|
|
191
|
+
## === 执行阶段(只有此阶段才能写业务代码)===
|
|
192
|
+
|
|
193
|
+
### Step 10: 逐个执行 subagentTasks(禁止中断)
|
|
194
|
+
|
|
195
|
+
<LOOP-ENFORCEMENT>
|
|
196
|
+
**此步骤是执行循环,必须执行完所有任务后才能停止。**
|
|
197
|
+
|
|
198
|
+
❌ **禁止在还有未完成任务时停止** — 即使 Agent 返回了大段输出,也必须继续下一个
|
|
199
|
+
❌ **禁止询问"是否继续"** — 直接执行下一个任务
|
|
200
|
+
❌ **禁止输出"让我知道是否..."后停止** — 继续执行
|
|
201
|
+
❌ **禁止因为上下文压缩而忘记剩余任务** — 通过 `openmatrix step --json` 重新获取状态
|
|
202
|
+
|
|
203
|
+
**文件持久化循环(防止上下文压缩丢失状态):**
|
|
204
|
+
```bash
|
|
205
|
+
# 每个 Agent 完成后执行:
|
|
206
|
+
openmatrix complete TASK-XXX --success # 标记完成 + 更新统计(含自动 git commit)
|
|
207
|
+
|
|
208
|
+
# 提交验证(防止 commit 静默失败):
|
|
209
|
+
git status --porcelain # 检查是否有未提交的文件
|
|
210
|
+
# 如果有未提交文件 → 必须手动提交:
|
|
211
|
+
git add -A && git commit -m "feat: (TASK-XXX) 任务标题"
|
|
212
|
+
|
|
213
|
+
openmatrix step --json # 获取下一个任务 + 检查是否全部完成
|
|
214
|
+
```
|
|
215
|
+
`openmatrix step` 会从磁盘读取真实状态,不依赖上下文记忆。
|
|
216
|
+
</LOOP-ENFORCEMENT>
|
|
217
|
+
|
|
218
|
+
对每个任务调用 Agent 工具:
|
|
219
|
+
|
|
220
|
+
```typescript
|
|
221
|
+
Agent({
|
|
222
|
+
subagent_type: task.subagent_type,
|
|
223
|
+
description: task.description,
|
|
224
|
+
prompt: task.prompt,
|
|
225
|
+
isolation: task.isolation
|
|
226
|
+
})
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
每个 Agent 完成后:
|
|
230
|
+
1. **标记完成并更新统计(必须执行):**
|
|
231
|
+
```bash
|
|
232
|
+
openmatrix complete TASK-XXX --success
|
|
233
|
+
```
|
|
234
|
+
2. **保存 Agent 上下文** — 将执行结果摘要写入 `.openmatrix/tasks/TASK-XXX/context.md`,格式如下:
|
|
235
|
+
|
|
236
|
+
```markdown
|
|
237
|
+
## 任务: TASK-XXX 任务标题
|
|
238
|
+
|
|
239
|
+
### 关键决策
|
|
240
|
+
- [做出的重要决策]
|
|
241
|
+
|
|
242
|
+
### 创建/修改的文件
|
|
243
|
+
- `path/to/file1.ts` - 简述用途
|
|
244
|
+
- `path/to/file2.ts` - 简述用途
|
|
245
|
+
|
|
246
|
+
### 重要发现
|
|
247
|
+
- [发现的问题、模式、注意事项]
|
|
248
|
+
|
|
249
|
+
### 对后续任务的建议
|
|
250
|
+
- [下一个 Agent 应该注意什么]
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
3. Git 自动提交(必须使用下方统一提交格式)
|
|
254
|
+
4. **获取下一个任务(防止上下文压缩丢失):**
|
|
255
|
+
```bash
|
|
256
|
+
openmatrix step --json
|
|
257
|
+
```
|
|
258
|
+
如果返回 `status: "next"` → 继续执行返回的 task
|
|
259
|
+
如果返回 `status: "done"` → 所有任务完成,进入最终提交
|
|
260
|
+
如果返回 `status: "blocked"` → 有阻塞任务,处理 Meeting
|
|
261
|
+
5. 检查审批点(auto 模式自动批准,其他模式按配置暂停)
|
|
262
|
+
|
|
263
|
+
**Agent 上下文共享机制 (Agent Memory):**
|
|
264
|
+
|
|
265
|
+
每个 Agent 执行时会自动接收前序 Agent 的上下文信息(通过 `context.md` 文件)。
|
|
266
|
+
这确保 Agent 之间共享知识、避免重复工作、保持决策一致性。
|
|
267
|
+
|
|
268
|
+
```
|
|
269
|
+
Agent-1 完成 → 写入 context.md → Agent-2 读取 Agent-1 的上下文 → 写入 context.md → ...
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**中断恢复:** 如果会话中断,再次执行 `/om:start` 时:
|
|
273
|
+
1. 读取 `.openmatrix/state.json`
|
|
274
|
+
2. 如果 `status === 'running'`,读取所有任务,找到 status 不是 completed 的任务
|
|
275
|
+
3. 从中断的任务继续执行,不需要重新开始
|
|
276
|
+
|
|
277
|
+
**Meeting 处理(auto 模式):** 记录并跳过,执行完成后统一展示。
|
|
278
|
+
|
|
279
|
+
**执行完成后:**
|
|
280
|
+
```bash
|
|
281
|
+
openmatrix meeting --list
|
|
282
|
+
```
|
|
283
|
+
如有 pending Meeting,交互式处理。
|
|
284
|
+
|
|
285
|
+
所有任务完成后,执行最终 Git 提交(**必须使用 HEREDOC 格式**):
|
|
286
|
+
```bash
|
|
287
|
+
git add -A && git commit -m "$(cat <<'EOF'
|
|
288
|
+
feat: 完成所有任务
|
|
289
|
+
|
|
290
|
+
- 任务1标题
|
|
291
|
+
- 任务2标题
|
|
292
|
+
- ...
|
|
293
|
+
|
|
294
|
+
影响范围: 全部模块
|
|
295
|
+
文件改动: 统计变更文件数
|
|
296
|
+
|
|
297
|
+
Run: run-XXX
|
|
298
|
+
Co-Authored-By: OpenMatrix <https://github.com/bigfish1913/openmatrix>
|
|
299
|
+
EOF
|
|
300
|
+
)"
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Git 提交格式规范(所有提交必须遵守):**
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
<type>: (TASK-XXX) 简短描述
|
|
307
|
+
|
|
308
|
+
- 改动点1
|
|
309
|
+
- 改动点2
|
|
310
|
+
|
|
311
|
+
影响范围: 模块名
|
|
312
|
+
文件改动: 文件1, 文件2
|
|
313
|
+
|
|
314
|
+
Run: run-XXX
|
|
315
|
+
Co-Authored-By: OpenMatrix <https://github.com/bigfish1913/openmatrix>
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
**type 映射:** feat(新功能) / fix(修复) / test(测试) / refactor(重构) / docs(文档)
|
|
319
|
+
**禁止使用:** `Co-Authored-By: Claude` 格式,必须使用 `Co-Authored-By: OpenMatrix <https://github.com/bigfish1913/openmatrix>`
|
|
320
|
+
**禁止使用 emoji**,使用纯文本格式
|
|
321
|
+
|
|
322
|
+
</process>
|
|
323
|
+
|
|
324
|
+
<arguments>
|
|
325
|
+
$ARGUMENTS
|
|
326
|
+
</arguments>
|
|
327
|
+
|
|
328
|
+
<examples>
|
|
329
|
+
/om:start
|
|
330
|
+
/om:start docs/task.md
|
|
331
|
+
/om:start "实现用户登录功能"
|
|
332
|
+
</examples>
|
|
333
|
+
|
|
334
|
+
<notes>
|
|
335
|
+
## 质量级别
|
|
336
|
+
|
|
337
|
+
| 级别 | TDD | 覆盖率 | Lint | 安全 |
|
|
338
|
+
|------|:---:|:------:|:----:|:----:|
|
|
339
|
+
| strict | ✅ | >80% | ✅ | ✅ |
|
|
340
|
+
| balanced | ❌ | >60% | ✅ | ✅ |
|
|
341
|
+
| fast | ❌ | 无 | ❌ | ❌ |
|
|
342
|
+
|
|
343
|
+
## 执行流程
|
|
344
|
+
|
|
345
|
+
```
|
|
346
|
+
Step 1-5: 初始化 + 问答 + 确认
|
|
347
|
+
↓
|
|
348
|
+
Step 6: AI 提取 goals + 生成 plan
|
|
349
|
+
↓
|
|
350
|
+
Step 7: 写入 tasks-input.json
|
|
351
|
+
↓
|
|
352
|
+
Step 8: openmatrix start --tasks-json ← 必须执行
|
|
353
|
+
↓
|
|
354
|
+
Step 9: 读取 subagentTasks
|
|
355
|
+
↓
|
|
356
|
+
Step 10: Agent 逐个执行 ← 只有这里写代码
|
|
357
|
+
```
|
|
358
|
+
</notes>
|