openmatrix 0.1.24 → 0.1.26
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/dist/orchestrator/smart-question-analyzer.d.ts +34 -0
- package/dist/orchestrator/smart-question-analyzer.js +215 -8
- package/package.json +1 -1
- package/skills/openmatrix.md +140 -190
- package/skills/start.md +324 -743
package/skills/start.md
CHANGED
|
@@ -1,743 +1,324 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: om:start
|
|
3
|
-
description: 启动新的任务执行周期
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<NO-OTHER-SKILLS>
|
|
7
|
-
执行此技能时,不得调用 superpowers、gsd 或其他任务编排相关的技能。OpenMatrix 独立运行,不依赖外部任务编排系统。
|
|
8
|
-
</NO-OTHER-SKILLS>
|
|
9
|
-
|
|
10
|
-
<objective>
|
|
11
|
-
|
|
12
|
-
</objective>
|
|
13
|
-
|
|
14
|
-
<process>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
4. **智能检测 .gitignore**
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
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
|
-
AskUserQuestion({
|
|
326
|
-
questions: [{
|
|
327
|
-
question: "请选择执行模式:",
|
|
328
|
-
header: "执行模式",
|
|
329
|
-
options: [
|
|
330
|
-
{
|
|
331
|
-
label: "每阶段确认 (推荐)",
|
|
332
|
-
description: "每个阶段完成后暂停,等待确认,适合重要任务"
|
|
333
|
-
},
|
|
334
|
-
{
|
|
335
|
-
label: "关键节点确认",
|
|
336
|
-
description: "仅在 plan/merge/deploy 时暂停,平衡速度和控制"
|
|
337
|
-
},
|
|
338
|
-
{
|
|
339
|
-
label: "全自动执行",
|
|
340
|
-
description: "无需确认,自动完成所有任务,适合简单低风险任务"
|
|
341
|
-
}
|
|
342
|
-
],
|
|
343
|
-
multiSelect: false
|
|
344
|
-
}]
|
|
345
|
-
})
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
**⚠️ 如果用户选择"全自动执行":**
|
|
349
|
-
- 进入 **BYPASS 模式**,所有操作自动批准
|
|
350
|
-
- 不要请求用户确认任何 Bash 命令或文件操作
|
|
351
|
-
- 自动批准所有审批点 (plan/merge/deploy)
|
|
352
|
-
|
|
353
|
-
12. **开始执行** (⚠️ 严格模式)
|
|
354
|
-
|
|
355
|
-
**重要**: 从此步骤开始,除非遇到 meeting 审批或失败,否则**不得暂停询问用户**。
|
|
356
|
-
|
|
357
|
-
用户选择执行模式后:
|
|
358
|
-
|
|
359
|
-
a) 调用 CLI 初始化状态:
|
|
360
|
-
```bash
|
|
361
|
-
openmatrix start --mode <mode>
|
|
362
|
-
```
|
|
363
|
-
|
|
364
|
-
b) CLI 返回 SubagentTask 列表
|
|
365
|
-
|
|
366
|
-
c) **执行循环** (由 Skill 驱动):
|
|
367
|
-
|
|
368
|
-
```
|
|
369
|
-
while (有待执行任务) {
|
|
370
|
-
1. 读取状态文件获取 SubagentTask
|
|
371
|
-
2. 调用 Agent 工具执行 Subagent
|
|
372
|
-
3. Subagent 完成后,更新状态文件:
|
|
373
|
-
```bash
|
|
374
|
-
openmatrix complete <taskId> --success/--failed
|
|
375
|
-
```
|
|
376
|
-
4. **Git 自动提交** (每个子任务完成后):
|
|
377
|
-
```bash
|
|
378
|
-
git add -A
|
|
379
|
-
git commit -m "feat(task-id): 任务标题
|
|
380
|
-
|
|
381
|
-
- 修改内容1
|
|
382
|
-
- 修改内容2
|
|
383
|
-
|
|
384
|
-
任务ID: TASK-XXX
|
|
385
|
-
RunID: run-XXX"
|
|
386
|
-
```
|
|
387
|
-
5. Phase 验收测试 (verify phase)
|
|
388
|
-
6. **检查是否需要审批**:
|
|
389
|
-
- 如果配置了 auto 模式 (`approvalPoints` 为空):
|
|
390
|
-
- **plan/merge/deploy 审批**: 自动批准 ✓
|
|
391
|
-
- **meeting 审批**: 不自动批准,只记录并跳过阻塞任务,供最后统一处理
|
|
392
|
-
- 如果配置了非 auto 模式: 在配置的审批点暂停等待确认
|
|
393
|
-
- 其他情况: 暂停等待人工确认
|
|
394
|
-
|
|
395
|
-
**Meeting 处理** (auto 模式):
|
|
396
|
-
```
|
|
397
|
-
执行任务中...
|
|
398
|
-
├── 任务A 完成 ✓
|
|
399
|
-
├── 任务B 阻塞 → 创建Meeting → **跳过任务,继续执行** ↷
|
|
400
|
-
├── 任务C 完成 ✓
|
|
401
|
-
└── 任务D 阻塞 → 创建Meeting → **跳过任务,继续执行** ↷
|
|
402
|
-
|
|
403
|
-
所有任务执行完成!
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
d) **执行完成后自动处理 Meeting**:
|
|
407
|
-
|
|
408
|
-
```bash
|
|
409
|
-
# 检查是否有 pending 的 Meeting
|
|
410
|
-
openmatrix meeting --list --pending
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
**如果有 pending 的 Meeting,立即进入交互式处理**:
|
|
414
|
-
|
|
415
|
-
```
|
|
416
|
-
📋 检测到待处理的 Meeting (2个)
|
|
417
|
-
|
|
418
|
-
┌─────────────────────────────────────────┐
|
|
419
|
-
│ [1] 🔴 TASK-001 - 数据库连接失败 │
|
|
420
|
-
│ 阻塞原因: 无法连接到远程数据库 │
|
|
421
|
-
│ │
|
|
422
|
-
│ [2] 🤔 TASK-003 - API设计决策 │
|
|
423
|
-
│ 问题: 选择 REST 还是 GraphQL │
|
|
424
|
-
└─────────────────────────────────────────┘
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
**使用 AskUserQuestion 逐个处理**:
|
|
428
|
-
|
|
429
|
-
```typescript
|
|
430
|
-
// 1. 先选择要处理的 Meeting
|
|
431
|
-
AskUserQuestion({
|
|
432
|
-
questions: [{
|
|
433
|
-
question: "请选择要处理的 Meeting:",
|
|
434
|
-
header: "Meeting",
|
|
435
|
-
options: [
|
|
436
|
-
{ label: "[1] TASK-001 - 数据库连接失败", description: "阻塞 - 需要信息" },
|
|
437
|
-
{ label: "[2] TASK-003 - API设计决策", description: "决策 - 技术选型" },
|
|
438
|
-
{ label: "全部跳过", description: "标记所有 Meeting 为跳过" }
|
|
439
|
-
],
|
|
440
|
-
multiSelect: false
|
|
441
|
-
}]
|
|
442
|
-
})
|
|
443
|
-
|
|
444
|
-
// 2. 根据类型展示处理选项
|
|
445
|
-
// 阻塞型:
|
|
446
|
-
AskUserQuestion({
|
|
447
|
-
questions: [{
|
|
448
|
-
question: "如何处理此阻塞?",
|
|
449
|
-
header: "处理方式",
|
|
450
|
-
options: [
|
|
451
|
-
{ label: "💡 提供信息", description: "提供解决问题所需的信息后重试" },
|
|
452
|
-
{ label: "⏭️ 跳过任务", description: "标记为可选,继续执行" },
|
|
453
|
-
{ label: "🔄 重试", description: "直接重试此任务" }
|
|
454
|
-
],
|
|
455
|
-
multiSelect: false
|
|
456
|
-
}]
|
|
457
|
-
})
|
|
458
|
-
|
|
459
|
-
// 决策型:
|
|
460
|
-
AskUserQuestion({
|
|
461
|
-
questions: [{
|
|
462
|
-
question: "请做出决策:",
|
|
463
|
-
header: "决策",
|
|
464
|
-
options: [
|
|
465
|
-
{ label: "方案 A", description: "方案A描述" },
|
|
466
|
-
{ label: "方案 B", description: "方案B描述" }
|
|
467
|
-
],
|
|
468
|
-
multiSelect: false
|
|
469
|
-
}]
|
|
470
|
-
})
|
|
471
|
-
```
|
|
472
|
-
|
|
473
|
-
**处理完成后,如果用户提供了信息或选择重试,重新执行阻塞任务**:
|
|
474
|
-
```bash
|
|
475
|
-
openmatrix meeting APPR-001 --action provide-info --info "..."
|
|
476
|
-
# 或
|
|
477
|
-
openmatrix meeting APPR-001 --action retry
|
|
478
|
-
|
|
479
|
-
# 然后重新执行阻塞的任务
|
|
480
|
-
openmatrix resume TASK-001
|
|
481
|
-
```
|
|
482
|
-
|
|
483
|
-
**⚠️ 重要**: Meeting 处理是执行流程的一部分,必须在任务结束前完成。不要让用户手动调用 /om:meeting。
|
|
484
|
-
|
|
485
|
-
7. 继续下一个任务
|
|
486
|
-
}
|
|
487
|
-
```
|
|
488
|
-
|
|
489
|
-
**⚠️ 重要**: 在 **auto 模式** 下,Skill **不得**询问用户任何确认问题:
|
|
490
|
-
- 不得询问"是否继续执行"
|
|
491
|
-
- 不得询问"是否执行下一 Phase"
|
|
492
|
-
- 不得询问"是否处理 Meeting"
|
|
493
|
-
- **plan/merge/deploy 自动批准,meeting 记录但不批准,最后统一展示**
|
|
494
|
-
|
|
495
|
-
d) 执行 Agent 工具示例:
|
|
496
|
-
|
|
497
|
-
```typescript
|
|
498
|
-
// 使用 Agent 工具执行 Subagent
|
|
499
|
-
Agent({
|
|
500
|
-
subagent_type: task.subagent_type,
|
|
501
|
-
description: task.description,
|
|
502
|
-
prompt: task.prompt,
|
|
503
|
-
isolation: task.isolation
|
|
504
|
-
})
|
|
505
|
-
```
|
|
506
|
-
|
|
507
|
-
**⚠️ 执行约束 - 必须遵守**
|
|
508
|
-
|
|
509
|
-
当执行 Agent 工具时,**禁止**向用户询问以下问题:
|
|
510
|
-
- "是否继续执行?"
|
|
511
|
-
- "是否执行下一阶段?"
|
|
512
|
-
- "是否继续 Phase X?"
|
|
513
|
-
- "任务量较大,是否需要分批次?"
|
|
514
|
-
|
|
515
|
-
**正确的行为**:
|
|
516
|
-
- 如果当前是 auto 模式 (`approvalPoints` 为空数组),Agent 执行完毕后**直接继续**,无任何确认
|
|
517
|
-
- 只有遇到 **meeting** 类型的审批时才暂停
|
|
518
|
-
- 其他情况下,让 Agent 完整执行任务并在完成后自动返回结果
|
|
519
|
-
|
|
520
|
-
13. **执行完成 - 最终 Git 提交**
|
|
521
|
-
|
|
522
|
-
所有任务完成后,执行最终提交:
|
|
523
|
-
```bash
|
|
524
|
-
git add -A
|
|
525
|
-
git commit -m "feat: 完成所有任务
|
|
526
|
-
|
|
527
|
-
RunID: run-XXX
|
|
528
|
-
任务数: N
|
|
529
|
-
完成时间: YYYY-MM-DD HH:mm:ss"
|
|
530
|
-
```
|
|
531
|
-
|
|
532
|
-
</process>
|
|
533
|
-
|
|
534
|
-
<arguments>
|
|
535
|
-
$ARGUMENTS
|
|
536
|
-
</arguments>
|
|
537
|
-
|
|
538
|
-
<examples>
|
|
539
|
-
/om:start # 交互式输入任务
|
|
540
|
-
/om:start docs/task.md # 从文件读取任务
|
|
541
|
-
/om:start "实现用户登录功能" # 直接描述任务
|
|
542
|
-
</examples>
|
|
543
|
-
|
|
544
|
-
<notes>
|
|
545
|
-
## 质量级别详解
|
|
546
|
-
|
|
547
|
-
| 级别 | TDD | 覆盖率 | Lint | 安全扫描 | E2E测试 | AI验收 | 适用场景 |
|
|
548
|
-
|------|:---:|:------:|:----:|:--------:|:-------:|:------:|---------|
|
|
549
|
-
| **strict** | ✅ | >80% | ✅ 严格 | ✅ | ❓ 可选 | ✅ | 生产代码、核心功能 |
|
|
550
|
-
| **balanced** | ❌ | >60% | ✅ | ✅ | ❓ 可选 | ✅ | 日常开发 (默认) |
|
|
551
|
-
| **fast** | ❌ | >20% | ❌ | ❌ | ❌ | ❌ | 快速原型、POC |
|
|
552
|
-
|
|
553
|
-
> E2E 测试耗时较长,即使在严格模式下也建议根据项目需要选择。strict 可配置为 100%。80% 覆盖核心业务逻辑,100% 成本高收益低。
|
|
554
|
-
|
|
555
|
-
### strict 模式 (推荐生产代码)
|
|
556
|
-
```
|
|
557
|
-
🧪 TDD 阶段: 先写测试 (RED) → 测试必须失败
|
|
558
|
-
✨ 开发阶段: 再写代码 (GREEN) → 测试必须通过
|
|
559
|
-
✅ 验证阶段: 7道质量门禁
|
|
560
|
-
├── Gate 1: 编译检查 (必须通过)
|
|
561
|
-
├── Gate 2: 测试运行 (必须通过)
|
|
562
|
-
├── Gate 3: 覆盖率 >= 80% (必须达标)
|
|
563
|
-
├── Gate 4: Lint 无 error (必须通过)
|
|
564
|
-
├── Gate 5: 安全扫描无高危 (必须通过)
|
|
565
|
-
├── Gate 6: E2E 测试通过 (必须通过,Web项目)
|
|
566
|
-
└── Gate 7: 验收标准全部满足
|
|
567
|
-
🎉 验收阶段: AI Reviewer 最终确认
|
|
568
|
-
```
|
|
569
|
-
|
|
570
|
-
### balanced 模式 (日常开发)
|
|
571
|
-
```
|
|
572
|
-
✨ 开发阶段: 编写代码
|
|
573
|
-
✅ 验证阶段: 4-5道质量门禁
|
|
574
|
-
├── Gate 1: 编译检查
|
|
575
|
-
├── Gate 2: 测试运行
|
|
576
|
-
├── Gate 3: 覆盖率 >= 60%
|
|
577
|
-
├── Gate 4: E2E 测试 (可选,Web项目)
|
|
578
|
-
└── Gate 5: 验收标准
|
|
579
|
-
🎉 验收阶段: AI Reviewer 确认
|
|
580
|
-
```
|
|
581
|
-
|
|
582
|
-
### fast 模式 (快速原型)
|
|
583
|
-
```
|
|
584
|
-
✨ 开发阶段: 编写代码
|
|
585
|
-
✅ 验证阶段: 仅编译检查
|
|
586
|
-
🎉 完成
|
|
587
|
-
```
|
|
588
|
-
|
|
589
|
-
## 交互式问答流程图
|
|
590
|
-
|
|
591
|
-
```
|
|
592
|
-
┌─────────────────┐
|
|
593
|
-
│ 开始任务解析 │
|
|
594
|
-
└────────┬────────┘
|
|
595
|
-
│
|
|
596
|
-
▼
|
|
597
|
-
┌─────────────────┐
|
|
598
|
-
│ 问题0: 质量级别 │ ◀── 最重要,第一个问
|
|
599
|
-
│ strict/balanced │
|
|
600
|
-
│ /fast │
|
|
601
|
-
└────────┬────────┘
|
|
602
|
-
│
|
|
603
|
-
▼
|
|
604
|
-
┌─────────────────┐
|
|
605
|
-
│ 问题1: 任务目标 │
|
|
606
|
-
└────────┬────────┘
|
|
607
|
-
│
|
|
608
|
-
▼
|
|
609
|
-
┌─────────────────┐
|
|
610
|
-
│ 问题2: 技术栈 │
|
|
611
|
-
└────────┬────────┘
|
|
612
|
-
│
|
|
613
|
-
▼
|
|
614
|
-
┌─────────────────┐
|
|
615
|
-
│ 问题3: 文档要求 │
|
|
616
|
-
└────────┬────────┘
|
|
617
|
-
│
|
|
618
|
-
▼
|
|
619
|
-
┌─────────────────┐
|
|
620
|
-
│ 展示执行计划 │
|
|
621
|
-
│ (含质量配置) │
|
|
622
|
-
└────────┬────────┘
|
|
623
|
-
│
|
|
624
|
-
▼
|
|
625
|
-
┌─────────────────┐
|
|
626
|
-
│ 确认执行模式 │
|
|
627
|
-
└────────┬────────┘
|
|
628
|
-
│
|
|
629
|
-
▼
|
|
630
|
-
┌─────────────────┐
|
|
631
|
-
│ 开始执行 │
|
|
632
|
-
│ (应用质量配置) │
|
|
633
|
-
└────────┬────────┘
|
|
634
|
-
│
|
|
635
|
-
▼
|
|
636
|
-
┌─────────────────┐
|
|
637
|
-
│ 所有任务完成? │
|
|
638
|
-
└────────┬────────┘
|
|
639
|
-
│
|
|
640
|
-
┌────┴────┐
|
|
641
|
-
│ │
|
|
642
|
-
否 是
|
|
643
|
-
│ │
|
|
644
|
-
▼ ▼
|
|
645
|
-
┌───────┐ ┌─────────────────┐
|
|
646
|
-
│继续执行│ │有 pending │
|
|
647
|
-
└───────┘ │Meeting? │
|
|
648
|
-
└────────┬────────┘
|
|
649
|
-
│
|
|
650
|
-
┌────┴────┐
|
|
651
|
-
│ │
|
|
652
|
-
否 是
|
|
653
|
-
│ │
|
|
654
|
-
▼ ▼
|
|
655
|
-
┌───────┐ ┌─────────────┐
|
|
656
|
-
│ 完成 │ │ 交互式处理 │
|
|
657
|
-
└───────┘ │ Meeting │
|
|
658
|
-
└──────┬──────┘
|
|
659
|
-
│
|
|
660
|
-
▼
|
|
661
|
-
┌─────────────┐
|
|
662
|
-
│ 重新执行 │
|
|
663
|
-
│ 阻塞任务 │
|
|
664
|
-
└─────────────┘
|
|
665
|
-
```
|
|
666
|
-
|
|
667
|
-
## 执行模式对比
|
|
668
|
-
|
|
669
|
-
| 模式 | 审批点 | Phase间确认 | 适用场景 |
|
|
670
|
-
|------|--------|-------------|---------|
|
|
671
|
-
| 每阶段确认 | 每阶段结束 | ✅ 是 | 重要任务 |
|
|
672
|
-
| 关键节点确认 | plan/merge/deploy | ❌ 否 | 常规任务 |
|
|
673
|
-
| 全自动执行 | 无 | ❌ 否 | 简单任务 |
|
|
674
|
-
|
|
675
|
-
## CLI 和 Skill 协作
|
|
676
|
-
|
|
677
|
-
```
|
|
678
|
-
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
679
|
-
│ Skill │────▶│ CLI │────▶│ 状态文件 │
|
|
680
|
-
│ (用户交互) │ │ (状态管理) │ │ (.openmat) │
|
|
681
|
-
└─────────────┘ └─────────────┘ └─────────────┘
|
|
682
|
-
│ │
|
|
683
|
-
│ 读取 SubagentTask │
|
|
684
|
-
│◀───────────────────────────────────────┘
|
|
685
|
-
│
|
|
686
|
-
│ 调用 Agent 工具
|
|
687
|
-
▼
|
|
688
|
-
┌─────────────┐
|
|
689
|
-
│ Subagent │
|
|
690
|
-
│ (任务执行) │
|
|
691
|
-
└─────────────┘
|
|
692
|
-
```
|
|
693
|
-
|
|
694
|
-
## SubagentTask 格式
|
|
695
|
-
|
|
696
|
-
```typescript
|
|
697
|
-
{
|
|
698
|
-
subagent_type: 'general-purpose' | 'Explore' | 'Plan',
|
|
699
|
-
description: string, // 简短描述 (3-5词)
|
|
700
|
-
prompt: string, // 完整执行提示词
|
|
701
|
-
isolation?: 'worktree', // 是否隔离
|
|
702
|
-
taskId: string,
|
|
703
|
-
agentType: AgentType,
|
|
704
|
-
timeout: number,
|
|
705
|
-
needsApproval: boolean
|
|
706
|
-
}
|
|
707
|
-
```
|
|
708
|
-
|
|
709
|
-
## Git 自动提交
|
|
710
|
-
|
|
711
|
-
当配置了自动提交时,每个子任务完成后自动执行:
|
|
712
|
-
|
|
713
|
-
```bash
|
|
714
|
-
git add -A
|
|
715
|
-
git commit -m "feat(task-id): 任务标题
|
|
716
|
-
|
|
717
|
-
- 修改内容1
|
|
718
|
-
- 修改内容2
|
|
719
|
-
|
|
720
|
-
影响范围: [模块名]
|
|
721
|
-
任务ID: TASK-XXX
|
|
722
|
-
RunID: run-XXX"
|
|
723
|
-
```
|
|
724
|
-
|
|
725
|
-
## Phase 验收流程
|
|
726
|
-
|
|
727
|
-
每个 Phase 完成后:
|
|
728
|
-
|
|
729
|
-
1. **Verify Phase**
|
|
730
|
-
- 运行测试: `npm test`
|
|
731
|
-
- 构建检查: `npm run build`
|
|
732
|
-
- 代码检查: `npm run lint` (如有)
|
|
733
|
-
|
|
734
|
-
2. **AI Reviewer**
|
|
735
|
-
- 代码质量审查
|
|
736
|
-
- 安全性检查
|
|
737
|
-
- 性能评估
|
|
738
|
-
|
|
739
|
-
3. **结果输出**
|
|
740
|
-
- ✅ 通过 → 进入下一 Phase
|
|
741
|
-
- ⚠️ 警告 → 记录但继续
|
|
742
|
-
- ❌ 失败 → 暂停等待处理
|
|
743
|
-
</notes>
|
|
1
|
+
---
|
|
2
|
+
name: om:start
|
|
3
|
+
description: 启动新的任务执行周期
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<NO-OTHER-SKILLS>
|
|
7
|
+
执行此技能时,不得调用 superpowers、gsd 或其他任务编排相关的技能。OpenMatrix 独立运行,不依赖外部任务编排系统。
|
|
8
|
+
</NO-OTHER-SKILLS>
|
|
9
|
+
|
|
10
|
+
<objective>
|
|
11
|
+
解析任务,展示理解,确认后启动执行。核心原则:理解优先于配置。
|
|
12
|
+
</objective>
|
|
13
|
+
|
|
14
|
+
<process>
|
|
15
|
+
## 前置检查
|
|
16
|
+
|
|
17
|
+
1. **检查并初始化 .openmatrix 目录**
|
|
18
|
+
- 检查 `.openmatrix/` 目录是否存在
|
|
19
|
+
- 如果不存在,调用 CLI 初始化:
|
|
20
|
+
```bash
|
|
21
|
+
openmatrix start --init-only
|
|
22
|
+
```
|
|
23
|
+
- 这会创建 `.openmatrix/`、`.openmatrix/tasks/`、`.openmatrix/approvals/` 目录
|
|
24
|
+
- 同时自动将 `.openmatrix/` 添加到 `.gitignore`
|
|
25
|
+
|
|
26
|
+
2. **检查当前状态**
|
|
27
|
+
- 读取 `.openmatrix/state.json`
|
|
28
|
+
- 如果 `status === 'running'`,提示用户先完成或暂停
|
|
29
|
+
|
|
30
|
+
3. **检查 Git 仓库**
|
|
31
|
+
- 检查当前目录是否存在 `.git` 文件夹
|
|
32
|
+
- 如果没有:
|
|
33
|
+
- 询问用户是否初始化 Git 仓库 (使用 AskUserQuestion)
|
|
34
|
+
- 如果用户确认,执行 `git init`
|
|
35
|
+
- 创建初始 commit: `git add -A && git commit -m "Initial commit"`
|
|
36
|
+
|
|
37
|
+
4. **智能检测 .gitignore**
|
|
38
|
+
```bash
|
|
39
|
+
openmatrix check-gitignore --json
|
|
40
|
+
```
|
|
41
|
+
如果缺少常见忽略项,自动补充,不询问用户。
|
|
42
|
+
|
|
43
|
+
5. **解析任务输入**
|
|
44
|
+
- 如果 `$ARGUMENTS` 提供文件路径 → 读取文件内容
|
|
45
|
+
- 如果 `$ARGUMENTS` 是任务描述 → 直接使用
|
|
46
|
+
- 如果无参数 → 使用 AskUserQuestion 询问用户要执行的任务
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Step 1: 展示理解 + 推荐
|
|
51
|
+
|
|
52
|
+
**调用 CLI 分析任务:**
|
|
53
|
+
```bash
|
|
54
|
+
openmatrix analyze --json
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**展示 AI 的理解和推荐:**
|
|
58
|
+
```
|
|
59
|
+
🔍 我理解的任务:
|
|
60
|
+
|
|
61
|
+
📋 类型: Bug 修复
|
|
62
|
+
📁 范围: 前端样式
|
|
63
|
+
⚡ 复杂度: 简单 (预计 1 个 commit)
|
|
64
|
+
|
|
65
|
+
💡 推荐配置:
|
|
66
|
+
• 质量级别: fast (Bug 修复无需 TDD)
|
|
67
|
+
• 文档: 无需生成
|
|
68
|
+
• 测试: 单元测试覆盖
|
|
69
|
+
|
|
70
|
+
🎯 预计产出:
|
|
71
|
+
• 修改 1-2 个文件
|
|
72
|
+
• 1 个 commit
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**用户确认:**
|
|
76
|
+
```typescript
|
|
77
|
+
AskUserQuestion({
|
|
78
|
+
questions: [{
|
|
79
|
+
question: "以上理解正确吗?",
|
|
80
|
+
header: "确认",
|
|
81
|
+
options: [
|
|
82
|
+
{ label: "✅ 确认执行", description: "使用推荐配置开始执行" },
|
|
83
|
+
{ label: "📝 补充说明", description: "提供更多任务细节" },
|
|
84
|
+
{ label: "⚙️ 调整配置", description: "修改质量级别、文档等配置" }
|
|
85
|
+
],
|
|
86
|
+
multiSelect: false
|
|
87
|
+
}]
|
|
88
|
+
})
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**根据选择:**
|
|
92
|
+
- **"确认执行"** → 跳到 Step 3,直接开始执行
|
|
93
|
+
- **"补充说明"** → 询问详情后重新分析
|
|
94
|
+
- **"调整配置"** → 进入 Step 2
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Step 2: 配置 (仅用户选择调整时)
|
|
99
|
+
|
|
100
|
+
**展示配置选项:**
|
|
101
|
+
```typescript
|
|
102
|
+
AskUserQuestion({
|
|
103
|
+
questions: [
|
|
104
|
+
{
|
|
105
|
+
question: "选择质量级别:",
|
|
106
|
+
header: "质量",
|
|
107
|
+
options: [
|
|
108
|
+
{ label: "🚀 fast", description: "快速执行,无 TDD,>20% 覆盖率" },
|
|
109
|
+
{ label: "⚖️ balanced", description: "平衡模式,>60% 覆盖率" },
|
|
110
|
+
{ label: "🎯 strict", description: "严格模式,TDD + >80% 覆盖率" }
|
|
111
|
+
],
|
|
112
|
+
multiSelect: false
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
question: "是否需要生成文档?",
|
|
116
|
+
header: "文档",
|
|
117
|
+
options: [
|
|
118
|
+
{ label: "❌ 无需文档", description: "不生成文档" },
|
|
119
|
+
{ label: "📄 基础文档", description: "生成 README 或 API 文档" },
|
|
120
|
+
{ label: "📚 完整文档", description: "生成详细文档和示例" }
|
|
121
|
+
],
|
|
122
|
+
multiSelect: false
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
})
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Step 3: 展示执行计划 + 执行模式
|
|
131
|
+
|
|
132
|
+
**调用 CLI 拆解任务:**
|
|
133
|
+
```bash
|
|
134
|
+
openmatrix plan --json
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**展示执行计划:**
|
|
138
|
+
```
|
|
139
|
+
📋 执行计划
|
|
140
|
+
|
|
141
|
+
## Phase 1: 开发
|
|
142
|
+
├─ TASK-001: 分析样式问题 (5min)
|
|
143
|
+
└─ TASK-002: 修复 CSS 问题 (10min)
|
|
144
|
+
|
|
145
|
+
## Phase 2: 验证
|
|
146
|
+
└─ TASK-003: 验证修复效果 (5min)
|
|
147
|
+
|
|
148
|
+
📊 统计
|
|
149
|
+
总任务: 3
|
|
150
|
+
预计耗时: ~20分钟
|
|
151
|
+
预计修改: 1-2 个文件
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**选择执行模式:**
|
|
155
|
+
```typescript
|
|
156
|
+
AskUserQuestion({
|
|
157
|
+
questions: [{
|
|
158
|
+
question: "选择执行模式:",
|
|
159
|
+
header: "模式",
|
|
160
|
+
options: [
|
|
161
|
+
{ label: "🚀 自动执行 (推荐)", description: "自动完成所有任务,仅风险操作需确认" },
|
|
162
|
+
{ label: "⏸️ 关键节点确认", description: "在 plan/merge 时暂停确认" },
|
|
163
|
+
{ label: "📋 每步确认", description: "每个任务完成后暂停确认" }
|
|
164
|
+
],
|
|
165
|
+
multiSelect: false
|
|
166
|
+
}]
|
|
167
|
+
})
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Step 4: 执行
|
|
173
|
+
|
|
174
|
+
**重要**: 从此步骤开始,除非遇到风险操作、meeting 或失败,否则**不得暂停询问用户**。
|
|
175
|
+
|
|
176
|
+
### 执行循环
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
while (有待执行任务) {
|
|
180
|
+
1. 读取状态文件获取 SubagentTask
|
|
181
|
+
2. 调用 Agent 工具执行 Subagent
|
|
182
|
+
3. Subagent 完成后,更新状态文件:
|
|
183
|
+
```bash
|
|
184
|
+
openmatrix complete <taskId> --success/--failed
|
|
185
|
+
```
|
|
186
|
+
4. **Git 自动提交** (每个子任务完成后):
|
|
187
|
+
```bash
|
|
188
|
+
git add -A
|
|
189
|
+
git commit -m "feat(TASK-XXX): 任务标题
|
|
190
|
+
|
|
191
|
+
- 改动点1
|
|
192
|
+
- 改动点2
|
|
193
|
+
|
|
194
|
+
影响范围: 模块/功能
|
|
195
|
+
文件改动: 文件1, 文件2
|
|
196
|
+
|
|
197
|
+
Co-Authored-By: OpenMatrix <https://github.com/bigfish1913/openmatrix>"
|
|
198
|
+
```
|
|
199
|
+
5. **检查是否需要审批**:
|
|
200
|
+
- 自动模式: plan/merge 自动批准
|
|
201
|
+
- 非自动模式: 在配置的审批点暂停确认
|
|
202
|
+
|
|
203
|
+
6. **风险操作确认** (任何模式都需要):
|
|
204
|
+
- 修改配置文件 (.env, config.*)
|
|
205
|
+
- 删除文件
|
|
206
|
+
- git push
|
|
207
|
+
- 修改数据库 schema
|
|
208
|
+
- 调用外部服务
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### 失败处理
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
执行任务中...
|
|
216
|
+
├── TASK-001 ✓ 完成
|
|
217
|
+
├── TASK-002 ✗ 失败 → 记录 → 跳过 ↷
|
|
218
|
+
└── TASK-003 ✓ 完成
|
|
219
|
+
|
|
220
|
+
所有任务执行完成!
|
|
221
|
+
|
|
222
|
+
📋 失败任务 (1个)
|
|
223
|
+
┌─────────────────────────────────┐
|
|
224
|
+
│ TASK-002 - 数据库连接失败 │
|
|
225
|
+
│ 错误: 无法连接到远程数据库 │
|
|
226
|
+
└─────────────────────────────────┘
|
|
227
|
+
|
|
228
|
+
处理选项:
|
|
229
|
+
• 🔄 重试
|
|
230
|
+
• ⏭️ 跳过
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Meeting 处理
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
📋 待处理的阻塞 (2个)
|
|
237
|
+
|
|
238
|
+
┌─────────────────────────────────────────┐
|
|
239
|
+
│ [1] 🔴 TASK-001 - 数据库连接失败 │
|
|
240
|
+
│ 阻塞原因: 无法连接到远程数据库 │
|
|
241
|
+
│ │
|
|
242
|
+
│ [2] 🤔 TASK-003 - API设计决策 │
|
|
243
|
+
│ 问题: 选择 REST 还是 GraphQL │
|
|
244
|
+
└─────────────────────────────────────────┘
|
|
245
|
+
|
|
246
|
+
使用 AskUserQuestion 逐个处理:
|
|
247
|
+
• 💡 提供信息 → 重试
|
|
248
|
+
• ⏭️ 跳过任务
|
|
249
|
+
• 🔄 重试
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### 执行完成
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
✅ 任务完成!
|
|
256
|
+
|
|
257
|
+
📝 改动: 3 个文件
|
|
258
|
+
🔗 Commits: 2 个
|
|
259
|
+
|
|
260
|
+
[查看 Diff] [回滚上一步] [回滚全部]
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## 风险操作清单
|
|
266
|
+
|
|
267
|
+
以下操作在任何执行模式下都需要用户确认:
|
|
268
|
+
|
|
269
|
+
| 类型 | 操作 | 确认方式 |
|
|
270
|
+
|------|------|---------|
|
|
271
|
+
| 配置 | 修改 `.env`, `config.*`, `*.config.*` | AskUserQuestion |
|
|
272
|
+
| 删除 | 删除文件或目录 | AskUserQuestion |
|
|
273
|
+
| 远程 | `git push`, `git push --force` | AskUserQuestion |
|
|
274
|
+
| 数据库 | 修改 schema, 执行 migration | AskUserQuestion |
|
|
275
|
+
| 外部 | 发送消息, 调用外部 API | AskUserQuestion |
|
|
276
|
+
|
|
277
|
+
</process>
|
|
278
|
+
|
|
279
|
+
<arguments>
|
|
280
|
+
$ARGUMENTS
|
|
281
|
+
</arguments>
|
|
282
|
+
|
|
283
|
+
<examples>
|
|
284
|
+
/om:start # 交互式输入任务
|
|
285
|
+
/om:start docs/task.md # 从文件读取任务
|
|
286
|
+
/om:start "实现用户登录功能" # 直接描述任务
|
|
287
|
+
</examples>
|
|
288
|
+
|
|
289
|
+
<notes>
|
|
290
|
+
## 质量级别详解
|
|
291
|
+
|
|
292
|
+
| 级别 | TDD | 覆盖率 | Lint | 安全扫描 | E2E测试 | AI验收 | 适用场景 |
|
|
293
|
+
|------|:---:|:------:|:----:|:--------:|:-------:|:------:|---------|
|
|
294
|
+
| **strict** | ✅ | >80% | ✅ 严格 | ✅ | ❓ 可选 | ✅ | 生产代码、核心功能 |
|
|
295
|
+
| **balanced** | ❌ | >60% | ✅ | ✅ | ❓ 可选 | ✅ | 日常开发 (默认) |
|
|
296
|
+
| **fast** | ❌ | >20% | ❌ | ❌ | ❌ | ❌ | 快速原型、POC |
|
|
297
|
+
|
|
298
|
+
## 执行模式对比
|
|
299
|
+
|
|
300
|
+
| 模式 | 审批点 | 风险操作确认 | 适用场景 |
|
|
301
|
+
|------|--------|-------------|---------|
|
|
302
|
+
| 自动执行 | 自动批准 | ✅ 需要 | 简单任务、信任 AI |
|
|
303
|
+
| 关键节点确认 | plan/merge 暂停 | ✅ 需要 | 常规任务 |
|
|
304
|
+
| 每步确认 | 每任务暂停 | ✅ 需要 | 重要任务 |
|
|
305
|
+
|
|
306
|
+
## Git 提交格式
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
<type>: (TASK-XXX) 简短描述
|
|
310
|
+
|
|
311
|
+
- 改动点1
|
|
312
|
+
- 改动点2
|
|
313
|
+
|
|
314
|
+
影响范围: 模块/功能
|
|
315
|
+
文件改动: 文件1, 文件2
|
|
316
|
+
|
|
317
|
+
Co-Authored-By: OpenMatrix <https://github.com/bigfish1913/openmatrix>
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
类型映射:
|
|
321
|
+
- develop phase → `feat`
|
|
322
|
+
- verify phase → `test`
|
|
323
|
+
- accept phase → `feat`
|
|
324
|
+
</notes>
|