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/debug.md
CHANGED
|
@@ -1,765 +1,692 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: om:debug
|
|
3
|
-
description: "Use when user encounters ANY technical problem and needs systematic diagnosis. Triggers on PROBLEM-EXPLORATION intent: user wants to understand WHY something failed, investigate root cause, or diagnose unexpected behavior. DO NOT trigger on: simple questions (how to do X), implementation requests (build/fix/add), or status checks. Intent signals: user seems confused about failure, asks '为什么', mentions error/issue without clear solution, wants to investigate before fixing."
|
|
4
|
-
priority: high
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
<NO-OTHER-SKILLS>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
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
|
-
## Step
|
|
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
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
### 9.
|
|
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
|
-
|
|
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
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
-
|
|
689
|
-
-
|
|
690
|
-
-
|
|
691
|
-
-
|
|
692
|
-
|
|
693
|
-
- 修复前必须有验证方法
|
|
694
|
-
|
|
695
|
-
## 红旗警告 - 停止并回归流程
|
|
696
|
-
|
|
697
|
-
**如果发现自己在想:**
|
|
698
|
-
- "先快速修复,之后再调查"
|
|
699
|
-
- "试试改 X 看看能不能工作"
|
|
700
|
-
- "一次改多处,跑测试"
|
|
701
|
-
- "跳过测试,手动验证就行"
|
|
702
|
-
- "大概是 X 问题,直接修吧"
|
|
703
|
-
- "不太懂但这可能有用"
|
|
704
|
-
- "模式说 X 但我要改动一下"
|
|
705
|
-
- "这里列出主要问题:[未经调查直接列修复]"
|
|
706
|
-
- 提出解决方案前没有追踪数据流
|
|
707
|
-
- **"再试一次修复"(已经试过 2+ 次)**
|
|
708
|
-
- 每次修复揭示新地方的问题
|
|
709
|
-
- **"验证失败,让用户确认一下吧" → 应自动循环**
|
|
710
|
-
- **"重试超过 3 次了,继续试试" → 必须暂停质疑架构**
|
|
711
|
-
- **"跳过自动验证,手动确认就行" → 必须执行自动验证**
|
|
712
|
-
|
|
713
|
-
**所有这些意味着:停止。回到 Step 3 或执行自动验证循环。**
|
|
714
|
-
|
|
715
|
-
## 常见借口 vs 真实情况
|
|
716
|
-
|
|
717
|
-
| 借口 | 真实情况 |
|
|
718
|
-
|------|---------|
|
|
719
|
-
| "问题简单,不需要流程" | 简单问题也有根因。流程处理简单 bug 很快。 |
|
|
720
|
-
| "紧急情况,没时间走流程" | 系统化调试比瞎猜乱试更快。 |
|
|
721
|
-
| "先试试这个,再调查" | 第一次修复定基调。从一开始就做对。 |
|
|
722
|
-
| "确认修复有效后再写测试" | 没测试的修复不牢靠。先写测试证明它。 |
|
|
723
|
-
| "一次改多处节省时间" | 无法隔离哪个有效。还会引入新 bug。 |
|
|
724
|
-
| "参考文档太长,我按模式改改" | 一知半解必然有 bug。完整阅读。 |
|
|
725
|
-
| "我看到问题了,直接修吧" | 看到症状 ≠ 理解根因。 |
|
|
726
|
-
| "再试一次修复"(失败 2+ 次后) | 3+ 次失败 = 架构问题。质疑模式,不要继续修。 |
|
|
727
|
-
| "验证失败让用户确认" | 自动验证循环无需用户干预。执行自动流程。 |
|
|
728
|
-
| "重试超过 3 次继续修" | 达到最大重试必须暂停。质疑架构。 |
|
|
729
|
-
| "手动确认验证结果" | 必须使用自动验证判断。退出码决定一切。 |
|
|
730
|
-
|
|
731
|
-
## 3+ 次修复失败:质疑架构
|
|
732
|
-
|
|
733
|
-
**指示架构问题的模式:**
|
|
734
|
-
- 每次修复揭示新共享状态/耦合/其他地方的问题
|
|
735
|
-
- 修复需要"大规模重构"才能实现
|
|
736
|
-
- 每次修复在其他地方产生新症状
|
|
737
|
-
|
|
738
|
-
**停止并质疑根本问题:**
|
|
739
|
-
- 这个模式根本上是否合理?
|
|
740
|
-
- 我们是否"靠惯性硬撑"?
|
|
741
|
-
- 应该重构架构还是继续修补症状?
|
|
742
|
-
|
|
743
|
-
**在尝试更多修复之前与用户讨论。**
|
|
744
|
-
|
|
745
|
-
这不是假设失败 — 这是架构错误。
|
|
746
|
-
|
|
747
|
-
## 无根因的情况
|
|
748
|
-
|
|
749
|
-
如果系统化调查揭示问题确实是环境、时序依赖或外部因素:
|
|
750
|
-
|
|
751
|
-
1. 你已完成流程
|
|
752
|
-
2. 记录调查了什么
|
|
753
|
-
3. 实现适当处理(重试、超时、错误消息)
|
|
754
|
-
4. 添加监控/日志以便未来调查
|
|
755
|
-
|
|
756
|
-
**但:** 95% 的"无根因"情况是调查不完整。
|
|
757
|
-
|
|
758
|
-
## 实际影响
|
|
759
|
-
|
|
760
|
-
来自调试实践:
|
|
761
|
-
- 系统化方法:15-30 分钟修复
|
|
762
|
-
- 随机修复方法:2-3 小时折腾
|
|
763
|
-
- 首次修复率:95% vs 40%
|
|
764
|
-
- 引入新 bug:接近零 vs 常见
|
|
765
|
-
</notes>
|
|
1
|
+
---
|
|
2
|
+
name: om:debug
|
|
3
|
+
description: "Use when user encounters ANY technical problem and needs systematic diagnosis. Triggers on PROBLEM-EXPLORATION intent: user wants to understand WHY something failed, investigate root cause, or diagnose unexpected behavior. DO NOT trigger on: simple questions (how to do X), implementation requests (build/fix/add), or status checks. Intent signals: user seems confused about failure, asks '为什么', mentions error/issue without clear solution, wants to investigate before fixing."
|
|
4
|
+
priority: high
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<NO-OTHER-SKILLS>
|
|
8
|
+
本 skill 与其他任务编排技能功能重叠,请勿同时使用。
|
|
9
|
+
|
|
10
|
+
**诊断和修复阶段使用 Agent 工具执行。**
|
|
11
|
+
</NO-OTHER-SKILLS>
|
|
12
|
+
|
|
13
|
+
<IRON-LAW>
|
|
14
|
+
## 铁律
|
|
15
|
+
|
|
16
|
+
**NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST**
|
|
17
|
+
|
|
18
|
+
如果还没完成 Phase 1,你不能提出修复方案。
|
|
19
|
+
</IRON-LAW>
|
|
20
|
+
|
|
21
|
+
# 系统化调试
|
|
22
|
+
|
|
23
|
+
## 四阶段流程
|
|
24
|
+
|
|
25
|
+
### Phase 1: 根因调查
|
|
26
|
+
|
|
27
|
+
**在尝试任何修复之前:**
|
|
28
|
+
|
|
29
|
+
1. **仔细阅读错误信息**
|
|
30
|
+
- 不要跳过错误或警告
|
|
31
|
+
- 它们通常包含精确解决方案
|
|
32
|
+
- 完整阅读堆栈跟踪
|
|
33
|
+
- 注意行号、文件路径、错误码
|
|
34
|
+
|
|
35
|
+
2. **稳定复现**
|
|
36
|
+
- 能可靠触发吗?
|
|
37
|
+
- 确切步骤是什么?
|
|
38
|
+
- 每次都发生吗?
|
|
39
|
+
- 不能复现 → 收集更多数据,别猜测
|
|
40
|
+
|
|
41
|
+
3. **检查最近变更**
|
|
42
|
+
- 有什么改动可能导致?
|
|
43
|
+
- Git diff,最近提交
|
|
44
|
+
- 新依赖,配置变更
|
|
45
|
+
- 环境差异
|
|
46
|
+
|
|
47
|
+
4. **多层系统收集证据**
|
|
48
|
+
对于有多层组件的系统(CI → build → signing, API → service → database):
|
|
49
|
+
|
|
50
|
+
**在提出修复前,为每个组件边界添加诊断:**
|
|
51
|
+
- 记录进入组件的数据
|
|
52
|
+
- 记录离开组件的数据
|
|
53
|
+
- 验证环境/配置传播
|
|
54
|
+
- 检查每层状态
|
|
55
|
+
|
|
56
|
+
**示例(多层系统):**
|
|
57
|
+
```bash
|
|
58
|
+
# Layer 1: Workflow
|
|
59
|
+
echo "=== Secrets in workflow: ==="
|
|
60
|
+
echo "IDENTITY: ${IDENTITY:+SET}${IDENTITY:-UNSET}"
|
|
61
|
+
|
|
62
|
+
# Layer 2: Build script
|
|
63
|
+
echo "=== Env vars in build: ==="
|
|
64
|
+
env | grep IDENTITY || echo "IDENTITY not in env"
|
|
65
|
+
|
|
66
|
+
# Layer 3: Signing script
|
|
67
|
+
echo "=== Keychain state: ==="
|
|
68
|
+
security list-keychains
|
|
69
|
+
|
|
70
|
+
# Layer 4: Actual signing
|
|
71
|
+
codesign --sign "$IDENTITY" --verbose=4 "$APP"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
这揭示:哪层失败(secrets → workflow ✓, workflow → build ✗)
|
|
75
|
+
|
|
76
|
+
### Phase 2: 模式分析
|
|
77
|
+
|
|
78
|
+
**在修复前找到模式:**
|
|
79
|
+
|
|
80
|
+
1. **找工作的例子**
|
|
81
|
+
- 定位类似的正常代码
|
|
82
|
+
- 什么工作方式和这个相似?
|
|
83
|
+
|
|
84
|
+
2. **对比参考**
|
|
85
|
+
- 如果实现模式,完整阅读参考实现
|
|
86
|
+
- 不要略读 - 每行都读
|
|
87
|
+
- 完全理解模式后再应用
|
|
88
|
+
|
|
89
|
+
3. **识别差异**
|
|
90
|
+
- 工作的和损坏的有什么不同?
|
|
91
|
+
- 列出每个差异,无论多小
|
|
92
|
+
- 不要假设"这不重要"
|
|
93
|
+
|
|
94
|
+
### Phase 3: 假设和测试
|
|
95
|
+
|
|
96
|
+
**科学方法:**
|
|
97
|
+
|
|
98
|
+
1. **形成单一假设**
|
|
99
|
+
- 明确陈述:"我认为 X 是根因因为 Y"
|
|
100
|
+
- 写下来
|
|
101
|
+
- 具体,不模糊
|
|
102
|
+
|
|
103
|
+
2. **最小测试**
|
|
104
|
+
- 用最小改动测试假设
|
|
105
|
+
- 一次一个变量
|
|
106
|
+
- 不要同时修复多个
|
|
107
|
+
|
|
108
|
+
3. **验证后继续**
|
|
109
|
+
- 工作了?→ Phase 4
|
|
110
|
+
- 没工作?→ 形成新假设
|
|
111
|
+
- 不要在失败的假设上叠加修复
|
|
112
|
+
|
|
113
|
+
### Phase 4: 实现
|
|
114
|
+
|
|
115
|
+
**修复根因,不是症状:**
|
|
116
|
+
|
|
117
|
+
1. **创建失败测试**
|
|
118
|
+
- 最简单的复现
|
|
119
|
+
- 自动测试优先
|
|
120
|
+
- 必须在修复前有
|
|
121
|
+
|
|
122
|
+
2. **实施单一修复**
|
|
123
|
+
- 解决识别的根因
|
|
124
|
+
- 一次一个改动
|
|
125
|
+
- 不要"顺手"改进
|
|
126
|
+
- 不要打包重构
|
|
127
|
+
|
|
128
|
+
3. **验证修复**
|
|
129
|
+
- 测试现在通过?
|
|
130
|
+
- 其他测试没坏?
|
|
131
|
+
- 问题真的解决?
|
|
132
|
+
|
|
133
|
+
4. **如果修复不工作**
|
|
134
|
+
停止。计数:试了几个修复?
|
|
135
|
+
- < 3 次 → 回到 Phase 1,用新信息重新分析
|
|
136
|
+
- ≥ 3 次 → **停止。质疑架构**
|
|
137
|
+
|
|
138
|
+
5. **3+次修复失败:质疑架构**
|
|
139
|
+
|
|
140
|
+
模式表明架构问题:
|
|
141
|
+
- 每次修复揭示新的共享状态/耦合
|
|
142
|
+
- 修复需要"大规模重构"
|
|
143
|
+
- 每次修复在其他地方产生新症状
|
|
144
|
+
|
|
145
|
+
停止并质疑基础:
|
|
146
|
+
- 这个模式本质上正确吗?
|
|
147
|
+
- 是惯性驱动我们在坚持?
|
|
148
|
+
- 应该重构架构还是继续修症状?
|
|
149
|
+
|
|
150
|
+
**和你的用户讨论后再尝试更多修复**
|
|
151
|
+
|
|
152
|
+
这不是失败的假设 - 这是错误的架构。
|
|
153
|
+
|
|
154
|
+
<RED-FLAGS>
|
|
155
|
+
## 红旗警告
|
|
156
|
+
|
|
157
|
+
如果你在想:
|
|
158
|
+
- "快速修复,稍后调查"
|
|
159
|
+
- "试试改 X 看是否工作"
|
|
160
|
+
- "添加多个改动,跑测试"
|
|
161
|
+
- "跳过测试,我手动验证"
|
|
162
|
+
- "可能是 X,让我修它"
|
|
163
|
+
- "我不完全理解但可能工作"
|
|
164
|
+
- "模式说 X 但我要改动一下"
|
|
165
|
+
- 提出解决方案前没有追踪数据流
|
|
166
|
+
- "再试一次修复"(已经试过 2+ 次)
|
|
167
|
+
- 每次修复揭示新地方的问题
|
|
168
|
+
|
|
169
|
+
**这些都意味着:停止。回到 Phase 1。**
|
|
170
|
+
|
|
171
|
+
**如果3+次修复失败:质疑架构(见 Phase 4.5)**
|
|
172
|
+
</RED-FLAGS>
|
|
173
|
+
|
|
174
|
+
## 常见借口
|
|
175
|
+
|
|
176
|
+
| 借口 | 真相 |
|
|
177
|
+
|-----|------|
|
|
178
|
+
| "问题很简单,不需要流程" | 简单问题也有根因。流程对简单 bug 很快。 |
|
|
179
|
+
| "紧急情况,没时间流程" | 系统调试比猜测快。 |
|
|
180
|
+
| "先试试这个,再调查" | 第一次修复定模式。从一开始就正确做。 |
|
|
181
|
+
| "确认修复工作后写测试" | 无测试的修复不持久。测试优先证明它。 |
|
|
182
|
+
| "多个修复一起省时间" | 无法隔离什么工作。产生新 bug。 |
|
|
183
|
+
| "参考太长,我适应模式" | 部分理解保证 bug。完整阅读。 |
|
|
184
|
+
| "我看到问题了,直接修" | 看到症状 ≠ 理解根因。 |
|
|
185
|
+
| "再试一次修复"(失败 2+ 次后) | 3+ 次失败 = 架构问题。质疑模式,不继续修。 |
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## 执行顺序
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
Step 1: 接收问题描述(参数、指定任务、或询问用户)
|
|
193
|
+
Step 2: 调用 CLI: openmatrix debug 初始化会话
|
|
194
|
+
Step 3: Phase 1: 根因调查(Explore Agent)
|
|
195
|
+
Step 4: Phase 2: 模式分析(Explore Agent)
|
|
196
|
+
Step 5: 展示诊断报告 + 修复建议
|
|
197
|
+
⛔ 调查阶段结束,必须等待用户确认
|
|
198
|
+
Step 6: AskUserQuestion 是否需要修复
|
|
199
|
+
↓ 用户确认"需要修复"
|
|
200
|
+
Step 7: AskUserQuestion 选择修复策略
|
|
201
|
+
Step 8: Phase 3 & 4: 假设测试 + 实施修复(Agent)
|
|
202
|
+
Step 9: 自动验证修复结果
|
|
203
|
+
Step 10: 写入 Debug Report 并展示
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**铁律:不做根因调查,不许提修复方案**
|
|
207
|
+
**铁律:调查完成后必须询问用户是否修复,不得自动进入修复流程**
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
<objective>
|
|
212
|
+
系统化调试 - 通过四阶段流程诊断和修复问题。不依赖任务流程,可独立使用。
|
|
213
|
+
</objective>
|
|
214
|
+
|
|
215
|
+
<process>
|
|
216
|
+
|
|
217
|
+
## Step 1: 接收问题
|
|
218
|
+
|
|
219
|
+
**检查 `$ARGUMENTS`:**
|
|
220
|
+
|
|
221
|
+
| 参数 | 处理方式 |
|
|
222
|
+
|------|---------|
|
|
223
|
+
| `--task TASK-XXX` | 读取指定失败任务 |
|
|
224
|
+
| `<问题描述>` | 直接使用描述 |
|
|
225
|
+
| 空 | 询问用户问题描述 |
|
|
226
|
+
|
|
227
|
+
**如果是空参数,询问:**
|
|
228
|
+
|
|
229
|
+
AskUserQuestion: `header: "问题描述"`, `multiSelect: false`
|
|
230
|
+
**question:** 请描述你遇到的问题
|
|
231
|
+
|
|
232
|
+
| label | description |
|
|
233
|
+
|-------|-------------|
|
|
234
|
+
| 描述问题 | 输入自由文本描述 |
|
|
235
|
+
| 选择失败任务 | 从当前失败任务中选择 |
|
|
236
|
+
| 取消 | 退出调试模式 |
|
|
237
|
+
|
|
238
|
+
**如果有失败任务(检查 .openmatrix/state.json):**
|
|
239
|
+
```bash
|
|
240
|
+
cat .openmatrix/state.json 2>/dev/null | grep -o '"failed":[0-9]*'
|
|
241
|
+
```
|
|
242
|
+
如果 `statistics.failed > 0`,读取 `.openmatrix/tasks/` 目录找到 failed 任务并展示。
|
|
243
|
+
|
|
244
|
+
## Step 2: 调用 CLI 初始化
|
|
245
|
+
|
|
246
|
+
**带任务 ID:**
|
|
247
|
+
```bash
|
|
248
|
+
openmatrix debug --task TASK-XXX --json
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**带描述:**
|
|
252
|
+
```bash
|
|
253
|
+
openmatrix debug "问题描述" --json
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
CLI 返回:
|
|
257
|
+
```json
|
|
258
|
+
{
|
|
259
|
+
"sessionId": "DEBUG-xxx",
|
|
260
|
+
"status": "diagnosing",
|
|
261
|
+
"problemType": "task_failure",
|
|
262
|
+
"report": {
|
|
263
|
+
"description": "...",
|
|
264
|
+
"relatedTaskId": "TASK-003",
|
|
265
|
+
"relatedFiles": ["src/xxx.ts"]
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
从返回结果中读取 `sessionId`,后续步骤使用此 ID。
|
|
271
|
+
|
|
272
|
+
## Step 3: Phase 1 - 根因调查
|
|
273
|
+
|
|
274
|
+
**调用 Explore Agent:**
|
|
275
|
+
|
|
276
|
+
```typescript
|
|
277
|
+
Agent({
|
|
278
|
+
subagent_type: "Explore",
|
|
279
|
+
description: "根因调查 - Phase 1",
|
|
280
|
+
prompt: `你是调试专家。正在进行系统化调试的 Phase 1:根因调查。
|
|
281
|
+
|
|
282
|
+
**铁律:在找到根因之前,不要提出任何修复方案。**
|
|
283
|
+
|
|
284
|
+
## 问题信息
|
|
285
|
+
- 问题类型: ${problemType}
|
|
286
|
+
- 问题描述: ${description}
|
|
287
|
+
${relatedTaskId ? `- 关联任务: ${relatedTaskId}` : ''}
|
|
288
|
+
|
|
289
|
+
## 调查步骤(必须按顺序执行)
|
|
290
|
+
|
|
291
|
+
### 1. 仔细阅读错误信息
|
|
292
|
+
- 不要跳过任何警告或错误
|
|
293
|
+
- 错误信息往往包含解决方案
|
|
294
|
+
- 完整阅读堆栈跟踪
|
|
295
|
+
- 记录行号、文件路径、错误代码
|
|
296
|
+
|
|
297
|
+
### 2. 稳定复现
|
|
298
|
+
- 能否可靠触发?
|
|
299
|
+
- 精确步骤是什么?
|
|
300
|
+
- 每次都会发生吗?
|
|
301
|
+
- 不能复现 → 收集更多数据,不要猜测
|
|
302
|
+
|
|
303
|
+
### 3. 检查近期变更
|
|
304
|
+
- git diff、最近提交
|
|
305
|
+
- 新依赖、配置变更
|
|
306
|
+
- 环境差异
|
|
307
|
+
|
|
308
|
+
### 4. 多组件系统诊断(如有多个组件)
|
|
309
|
+
**当系统有多个组件(CI → build → signing, API → service → database):**
|
|
310
|
+
|
|
311
|
+
**在提出修复之前,添加诊断日志:**
|
|
312
|
+
\`\`\`
|
|
313
|
+
对每个组件边界:
|
|
314
|
+
- 记录什么数据进入组件
|
|
315
|
+
- 记录什么数据退出组件
|
|
316
|
+
- 验证环境/配置传递
|
|
317
|
+
- 检查每层状态
|
|
318
|
+
|
|
319
|
+
运行一次收集证据,显示哪里断裂
|
|
320
|
+
然后分析证据识别失败组件
|
|
321
|
+
然后深入调查该组件
|
|
322
|
+
\`\`\`
|
|
323
|
+
|
|
324
|
+
### 5. 追踪数据流
|
|
325
|
+
**当错误在调用栈深处:**
|
|
326
|
+
- 错误值从哪里产生?
|
|
327
|
+
- 谁传入的这个错误值?
|
|
328
|
+
- 继续向上追踪直到源头
|
|
329
|
+
- 在源头修复,不是症状处
|
|
330
|
+
|
|
331
|
+
## 输出格式
|
|
332
|
+
|
|
333
|
+
### 错误信息
|
|
334
|
+
- 错误类型: ...
|
|
335
|
+
- 错误位置: 文件:行号
|
|
336
|
+
- 错误详情: ...
|
|
337
|
+
|
|
338
|
+
### 复现步骤
|
|
339
|
+
1. ...
|
|
340
|
+
|
|
341
|
+
### 近期变更
|
|
342
|
+
- 提交1: 描述
|
|
343
|
+
- 提交2: 描述
|
|
344
|
+
|
|
345
|
+
### 多组件诊断结果(如适用)
|
|
346
|
+
- Layer N 状态: ...
|
|
347
|
+
- 断裂点: ...
|
|
348
|
+
|
|
349
|
+
### 根因分析
|
|
350
|
+
[详细描述问题根源]
|
|
351
|
+
|
|
352
|
+
### 影响范围
|
|
353
|
+
- 文件1
|
|
354
|
+
- 文件2
|
|
355
|
+
|
|
356
|
+
## 禁止行为
|
|
357
|
+
❌ 提出修复方案
|
|
358
|
+
❌ 修改任何文件
|
|
359
|
+
❌ 做出未经证实的假设`,
|
|
360
|
+
run_in_background: false
|
|
361
|
+
})
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
## Step 4: Phase 2 - 模式分析
|
|
365
|
+
|
|
366
|
+
**调用 Explore Agent:**
|
|
367
|
+
|
|
368
|
+
```typescript
|
|
369
|
+
Agent({
|
|
370
|
+
subagent_type: "Explore",
|
|
371
|
+
description: "模式分析 - Phase 2",
|
|
372
|
+
prompt: `继续进行系统化调试的 Phase 2:模式分析。
|
|
373
|
+
|
|
374
|
+
## Phase 1 发现
|
|
375
|
+
|
|
376
|
+
${Phase1根因调查的完整输出}
|
|
377
|
+
|
|
378
|
+
## 任务
|
|
379
|
+
|
|
380
|
+
1. 在代码库中找到类似的、正常工作的代码
|
|
381
|
+
2. 对比正常代码和异常代码的差异
|
|
382
|
+
3. 列出所有差异点(无论多小)
|
|
383
|
+
4. 理解功能依赖关系和隐含假设
|
|
384
|
+
|
|
385
|
+
## 输出格式
|
|
386
|
+
|
|
387
|
+
### 正常示例
|
|
388
|
+
- 文件: path:line
|
|
389
|
+
- 说明: 为什么这段代码能正常工作
|
|
390
|
+
|
|
391
|
+
### 差异点
|
|
392
|
+
1. 差异1: 正常代码 vs 异常代码
|
|
393
|
+
2. 差异2: ...
|
|
394
|
+
|
|
395
|
+
### 依赖关系
|
|
396
|
+
- 需要哪些前置条件
|
|
397
|
+
- 有哪些隐含假设`,
|
|
398
|
+
run_in_background: false
|
|
399
|
+
})
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
## Step 5: 展示诊断报告
|
|
403
|
+
|
|
404
|
+
**Phase 1 和 Phase 2 完成后,展示诊断报告:**
|
|
405
|
+
|
|
406
|
+
```
|
|
407
|
+
🔍 诊断报告
|
|
408
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
409
|
+
|
|
410
|
+
问题类型: xxx
|
|
411
|
+
|
|
412
|
+
根因分析
|
|
413
|
+
[来自 Phase 1 调查的根因描述]
|
|
414
|
+
|
|
415
|
+
正常示例
|
|
416
|
+
文件: path:line
|
|
417
|
+
说明: ...
|
|
418
|
+
|
|
419
|
+
差异点
|
|
420
|
+
1. ...
|
|
421
|
+
2. ...
|
|
422
|
+
|
|
423
|
+
影响范围
|
|
424
|
+
- 文件1
|
|
425
|
+
- 文件2
|
|
426
|
+
|
|
427
|
+
修复建议
|
|
428
|
+
[基于差异分析的具体修复建议]
|
|
429
|
+
|
|
430
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
## Step 6: 确认是否修复
|
|
434
|
+
|
|
435
|
+
**⛔ 调查阶段结束,必须在此暂停等待用户确认。不得跳过此步骤自动进入修复。**
|
|
436
|
+
|
|
437
|
+
AskUserQuestion: `header: "是否修复"`, `multiSelect: false`
|
|
438
|
+
**question:** 调查已完成,是否需要修复?
|
|
439
|
+
|
|
440
|
+
| label | description |
|
|
441
|
+
|-------|-------------|
|
|
442
|
+
| 需要修复 | 选择修复策略并执行 |
|
|
443
|
+
| 仅查看报告 | 不修复,仅输出诊断报告后结束 |
|
|
444
|
+
| 继续深入调查 | 根因不够清晰,继续调查 |
|
|
445
|
+
|
|
446
|
+
**用户选择 "继续深入调查"** → 回到 Step 3,带着新信息重新调查。
|
|
447
|
+
**用户选择 "仅查看报告"** → 跳到 Step 10,输出诊断报告后结束。
|
|
448
|
+
|
|
449
|
+
## Step 7: 选择修复策略
|
|
450
|
+
|
|
451
|
+
**仅在用户选择"需要修复"后执行此步骤。**
|
|
452
|
+
|
|
453
|
+
AskUserQuestion: `header: "修复策略"`, `multiSelect: false`
|
|
454
|
+
**question:** 选择修复策略?
|
|
455
|
+
|
|
456
|
+
| label | description |
|
|
457
|
+
|-------|-------------|
|
|
458
|
+
| 自动修复 (推荐) | 调用 Agent 执行修复 |
|
|
459
|
+
| 手动修复 | 仅展示具体修复建议,用户自行修改 |
|
|
460
|
+
|
|
461
|
+
## Step 8: Phase 3 & 4 - 假设测试与实施修复
|
|
462
|
+
|
|
463
|
+
**如果用户选择自动修复:**
|
|
464
|
+
|
|
465
|
+
**修复前安全检查(必须执行):**
|
|
466
|
+
```bash
|
|
467
|
+
git status --porcelain
|
|
468
|
+
git log --oneline -5
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
```typescript
|
|
472
|
+
Agent({
|
|
473
|
+
subagent_type: "general-purpose",
|
|
474
|
+
description: "假设测试与实施修复 - Phase 3 & 4",
|
|
475
|
+
prompt: `根据诊断报告执行 Phase 3(假设测试)和 Phase 4(实施修复)。
|
|
476
|
+
|
|
477
|
+
## 铁律
|
|
478
|
+
1. 形成单一假设:"我认为 X 是根因因为 Y"
|
|
479
|
+
2. 用最小改动测试假设
|
|
480
|
+
3. 只实施单一修复(不要做额外改动)
|
|
481
|
+
4. 每次只改一个变量
|
|
482
|
+
5. 不在诊断不清的情况下盲目尝试
|
|
483
|
+
6. 不做"顺便"的重构
|
|
484
|
+
|
|
485
|
+
## 诊断报告
|
|
486
|
+
${诊断报告全文}
|
|
487
|
+
|
|
488
|
+
## Phase 3: 形成假设
|
|
489
|
+
明确陈述你的假设:
|
|
490
|
+
"我认为 [具体根因] 是根因,因为 [证据]"
|
|
491
|
+
|
|
492
|
+
## Phase 4: 实施修复
|
|
493
|
+
|
|
494
|
+
### 1. 创建失败测试(如适用)
|
|
495
|
+
- 最简单的复现
|
|
496
|
+
- 自动测试优先
|
|
497
|
+
|
|
498
|
+
### 2. 实施单一修复
|
|
499
|
+
- 解决识别的根因
|
|
500
|
+
- 修改范围最小化
|
|
501
|
+
|
|
502
|
+
### 3. 输出修改内容
|
|
503
|
+
- 修改了哪些文件
|
|
504
|
+
- 具体改动是什么
|
|
505
|
+
|
|
506
|
+
## 禁止行为
|
|
507
|
+
❌ 修改与修复无关的文件
|
|
508
|
+
❌ 进行额外的重构
|
|
509
|
+
❌ 同时修复多个问题`,
|
|
510
|
+
run_in_background: false
|
|
511
|
+
})
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
**Agent 完成后:**
|
|
515
|
+
1. 检查 Git 状态
|
|
516
|
+
2. 提交修复(如果文件有变更)
|
|
517
|
+
3. 进入 Step 9 验证
|
|
518
|
+
|
|
519
|
+
## Step 9: 自动验证修复
|
|
520
|
+
|
|
521
|
+
**⛔ 自动验证流程 - 无需用户手动确认**
|
|
522
|
+
|
|
523
|
+
### 9.1 执行验证命令
|
|
524
|
+
|
|
525
|
+
根据问题类型执行验证:
|
|
526
|
+
|
|
527
|
+
| 问题类型 | 验证命令 |
|
|
528
|
+
|---------|---------|
|
|
529
|
+
| task_failure | `npm test -- --run 2>&1` |
|
|
530
|
+
| project_bug | `npm run build 2>&1` |
|
|
531
|
+
| system_bug | 验证 CLI 功能 |
|
|
532
|
+
| environment | `npm ls --depth=0 2>&1` |
|
|
533
|
+
|
|
534
|
+
**自动判断验证结果:**
|
|
535
|
+
|
|
536
|
+
```bash
|
|
537
|
+
VERIFY_RESULT=0
|
|
538
|
+
npm test -- --run > /tmp/verify-output.txt 2>&1 || VERIFY_RESULT=1
|
|
539
|
+
|
|
540
|
+
if [ $VERIFY_RESULT -eq 0 ]; then
|
|
541
|
+
echo "✅ 验证通过"
|
|
542
|
+
else
|
|
543
|
+
echo "❌ 验证未通过"
|
|
544
|
+
cat /tmp/verify-output.txt | tail -30
|
|
545
|
+
fi
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### 9.2 验证失败自动循环
|
|
549
|
+
|
|
550
|
+
```
|
|
551
|
+
验证失败 → 重试计数 +1 → 检查重试次数 →
|
|
552
|
+
├─ < 3 次 → 自动回到 Step 8 重新修复(带新信息)
|
|
553
|
+
└─ >= 3 次 → 暂停,质疑架构,进入 Step 10
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
### 9.3 达到最大重试次数(>= 3 次)
|
|
557
|
+
|
|
558
|
+
**输出警告并暂停:**
|
|
559
|
+
|
|
560
|
+
```
|
|
561
|
+
⚠️ 已尝试 3 次以上修复,验证仍未通过
|
|
562
|
+
|
|
563
|
+
这可能指示架构问题:
|
|
564
|
+
- 每次修复在其他地方产生新症状
|
|
565
|
+
- 修复需要"大规模重构"
|
|
566
|
+
- 根因分析不够深入
|
|
567
|
+
|
|
568
|
+
建议:暂停并质疑根本问题,与用户讨论是否需要架构重构。
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
**此时进入 Step 10,询问用户下一步。**
|
|
572
|
+
|
|
573
|
+
AskUserQuestion: `header: "架构问题"`, `multiSelect: false`
|
|
574
|
+
**question:** 已尝试 3 次修复仍未通过,可能存在架构问题。下一步?
|
|
575
|
+
|
|
576
|
+
| label | description |
|
|
577
|
+
|-------|-------------|
|
|
578
|
+
| 深入重新诊断 | 从 Step 3 重新开始完整诊断 |
|
|
579
|
+
| 架构重构讨论 | 讨论是否需要架构层面的改动 |
|
|
580
|
+
| 接受当前状态 | 记录修复尝试,结束调试 |
|
|
581
|
+
|
|
582
|
+
### 9.4 验证通过
|
|
583
|
+
|
|
584
|
+
**验证通过 → 自动进入 Step 10**
|
|
585
|
+
|
|
586
|
+
```
|
|
587
|
+
✅ 验证通过
|
|
588
|
+
|
|
589
|
+
修复成功,自动进入报告阶段。
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
## Step 10: 写入 Debug Report
|
|
593
|
+
|
|
594
|
+
完成调试会话:
|
|
595
|
+
```bash
|
|
596
|
+
openmatrix debug --list
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
**生成诊断报告文件(在界面输出):**
|
|
600
|
+
|
|
601
|
+
```markdown
|
|
602
|
+
# Debug Report
|
|
603
|
+
|
|
604
|
+
**会话 ID**: ${sessionId}
|
|
605
|
+
**日期**: ${timestamp}
|
|
606
|
+
**状态**: ${status}
|
|
607
|
+
|
|
608
|
+
## 问题描述
|
|
609
|
+
${description}
|
|
610
|
+
|
|
611
|
+
## 问题类型
|
|
612
|
+
${problemType}
|
|
613
|
+
|
|
614
|
+
## 诊断结果
|
|
615
|
+
### 根因
|
|
616
|
+
${rootCause}
|
|
617
|
+
|
|
618
|
+
### 影响范围
|
|
619
|
+
${impactScope}
|
|
620
|
+
|
|
621
|
+
## 修复操作
|
|
622
|
+
${operations}
|
|
623
|
+
|
|
624
|
+
## 验证结果
|
|
625
|
+
${verifyResult}
|
|
626
|
+
|
|
627
|
+
## 经验教训
|
|
628
|
+
${lessons}
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
**Git 提交修复(如果有文件变更):**
|
|
632
|
+
```bash
|
|
633
|
+
git status --porcelain
|
|
634
|
+
# 如果有未提交文件:
|
|
635
|
+
git add . && git commit -m "$(cat <<'EOF'
|
|
636
|
+
fix: 修复 bug - 问题描述
|
|
637
|
+
|
|
638
|
+
根因: ...
|
|
639
|
+
修复: ...
|
|
640
|
+
|
|
641
|
+
影响范围: ...
|
|
642
|
+
文件改动: ...
|
|
643
|
+
|
|
644
|
+
Co-Authored-By: OpenMatrix https://github.com/bigfish1913/openmatrix
|
|
645
|
+
EOF
|
|
646
|
+
)"
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
</process>
|
|
650
|
+
|
|
651
|
+
<arguments>
|
|
652
|
+
$ARGUMENTS
|
|
653
|
+
</arguments>
|
|
654
|
+
|
|
655
|
+
<examples>
|
|
656
|
+
/om:debug # 交互式调试
|
|
657
|
+
/om:debug --task TASK-003 # 调试指定失败任务
|
|
658
|
+
/om:debug "API 返回 500 错误" # 带问题描述调试
|
|
659
|
+
</examples>
|
|
660
|
+
|
|
661
|
+
<notes>
|
|
662
|
+
## 流程概览
|
|
663
|
+
|
|
664
|
+
```
|
|
665
|
+
Phase 1: 根因调查 → Phase 2: 模式分析 → 展示报告 → 用户确认
|
|
666
|
+
↓
|
|
667
|
+
Phase 3: 假设测试
|
|
668
|
+
↓
|
|
669
|
+
Phase 4: 实施修复
|
|
670
|
+
↓
|
|
671
|
+
自动验证 → 通过/重试/质疑架构
|
|
672
|
+
```
|
|
673
|
+
|
|
674
|
+
## 无根因的情况
|
|
675
|
+
|
|
676
|
+
如果系统化调查揭示问题确实是环境、时序依赖或外部因素:
|
|
677
|
+
|
|
678
|
+
1. 你已完成流程
|
|
679
|
+
2. 记录调查了什么
|
|
680
|
+
3. 实现适当处理(重试、超时、错误消息)
|
|
681
|
+
4. 添加监控/日志以便未来调查
|
|
682
|
+
|
|
683
|
+
**但:** 95% 的"无根因"情况是调查不完整。
|
|
684
|
+
|
|
685
|
+
## 实际影响
|
|
686
|
+
|
|
687
|
+
来自调试实践:
|
|
688
|
+
- 系统化方法:15-30 分钟修复
|
|
689
|
+
- 随机修复方法:2-3 小时折腾
|
|
690
|
+
- 首次修复率:95% vs 40%
|
|
691
|
+
- 引入新 bug:接近零 vs 常见
|
|
692
|
+
</notes>
|