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/dist/cli/commands/start.js +24 -13
- package/dist/cli/commands/status.js +13 -1
- package/dist/orchestrator/git-commit-manager.d.ts +13 -0
- package/dist/orchestrator/git-commit-manager.js +57 -0
- package/dist/storage/state-manager.d.ts +108 -0
- package/dist/storage/state-manager.js +169 -1
- package/dist/utils/gitignore.js +2 -0
- package/dist/utils/worktree-sync.d.ts +100 -0
- package/dist/utils/worktree-sync.js +352 -0
- package/package.json +1 -1
- package/skills/approve.md +1 -1
- package/skills/auto.md +44 -14
- package/skills/brainstorm.md +1 -5
- package/skills/check.md +1 -1
- package/skills/debug.md +692 -765
- package/skills/deploy.md +1 -1
- package/skills/feature.md +17 -14
- package/skills/meeting.md +1 -1
- package/skills/om.md +71 -5
- package/skills/openmatrix.md +5 -14
- package/skills/plan.md +54 -19
- package/skills/report.md +1 -1
- package/skills/research.md +16 -1
- package/skills/resume.md +3 -5
- package/skills/retry.md +1 -1
- package/skills/start.md +758 -621
- package/skills/status.md +1 -1
- package/skills/test.md +105 -8
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
Step
|
|
57
|
-
Step
|
|
58
|
-
Step
|
|
59
|
-
Step
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
Step 9
|
|
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
|
-
```bash
|
|
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
|
-
```bash
|
|
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
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
```
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
```
|
|
502
|
-
Agent
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
-
|
|
518
|
-
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
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>
|