openmatrix 0.1.98 → 0.1.99
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/package.json +1 -1
- package/skills/brainstorm.md +455 -495
- package/skills/meeting.md +57 -96
- package/skills/start.md +39 -96
package/package.json
CHANGED
package/skills/brainstorm.md
CHANGED
|
@@ -1,495 +1,455 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: om:brainstorm
|
|
3
|
-
description: 头脑风暴 - 深入探索需求和设计,提出多种方案,确认后再执行任务
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<NO-OTHER-SKILLS>
|
|
7
|
-
**绝对禁止**调用以下技能(OpenMatrix 完全替代它们):
|
|
8
|
-
- ❌ superpowers:brainstorming → 你已经在 om:brainstorm 中了
|
|
9
|
-
- ❌ superpowers:* → 全部被 OpenMatrix 替代
|
|
10
|
-
- ❌ gsd:* → 全部被 OpenMatrix 替代
|
|
11
|
-
- ❌ 任何其他任务编排相关的技能
|
|
12
|
-
</NO-OTHER-SKILLS>
|
|
13
|
-
|
|
14
|
-
<HARD-GATE>
|
|
15
|
-
在展示设计方案并获得用户批准之前,**不得**调用任何实现技能、写任何代码、搭建任何项目或采取任何实现行动。
|
|
16
|
-
</HARD-GATE>
|
|
17
|
-
|
|
18
|
-
<objective>
|
|
19
|
-
通过协作对话,将想法转化为完整的设计方案。先理解项目上下文,逐一提问澄清需求,提出 2-3 种方案并给出推荐,展示设计并获得批准后再进入执行。
|
|
20
|
-
</objective>
|
|
21
|
-
|
|
22
|
-
<process>
|
|
23
|
-
|
|
24
|
-
## 步骤 1: 探索项目上下文
|
|
25
|
-
|
|
26
|
-
**在提问之前,先了解当前项目状态:**
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
# 检查项目文件结构
|
|
30
|
-
ls -la
|
|
31
|
-
|
|
32
|
-
# 查看最近提交
|
|
33
|
-
git log --oneline -5 2>/dev/null
|
|
34
|
-
|
|
35
|
-
# 查看关键配置文件
|
|
36
|
-
cat package.json 2>/dev/null || cat Cargo.toml 2>/dev/null || cat go.mod 2>/dev/null
|
|
37
|
-
|
|
38
|
-
# 查看现有文档
|
|
39
|
-
ls docs/ 2>/dev/null
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
- 了解技术栈、项目结构、最近变更
|
|
43
|
-
- 如果用户引用了文件(如 `docs/task.md`),读取该文件
|
|
44
|
-
|
|
45
|
-
## 步骤 2: 评估范围与领域检测
|
|
46
|
-
|
|
47
|
-
**2.1 评估范围**
|
|
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
|
-
|
|
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
|
-
还有问题? ───── YES ─┘
|
|
461
|
-
│ NO
|
|
462
|
-
▼
|
|
463
|
-
┌─────────────────┐
|
|
464
|
-
│ 提出 2-3 种方案 │
|
|
465
|
-
│ (附权衡和推荐) │
|
|
466
|
-
└────────┬────────┘
|
|
467
|
-
│
|
|
468
|
-
▼
|
|
469
|
-
┌─────────────────┐
|
|
470
|
-
│ 分步展示设计 │◀─────┐
|
|
471
|
-
│ (每步确认) │ │
|
|
472
|
-
└────────┬────────┘ │
|
|
473
|
-
│ │
|
|
474
|
-
需要修改? ───── YES ─┘
|
|
475
|
-
│ NO
|
|
476
|
-
▼
|
|
477
|
-
┌─────────────────┐
|
|
478
|
-
│ 总结 + 确认 │
|
|
479
|
-
└────────┬────────┘
|
|
480
|
-
│
|
|
481
|
-
▼
|
|
482
|
-
┌─────────────────┐
|
|
483
|
-
│ 写入设计文档 │
|
|
484
|
-
│ (docs/openmatrix/) │
|
|
485
|
-
└────────┬────────┘
|
|
486
|
-
│
|
|
487
|
-
开始执行
|
|
488
|
-
│
|
|
489
|
-
▼
|
|
490
|
-
┌─────────────────┐
|
|
491
|
-
│ 写入 JSON │
|
|
492
|
-
│ 调用 /om:start │
|
|
493
|
-
└─────────────────┘
|
|
494
|
-
```
|
|
495
|
-
</notes>
|
|
1
|
+
---
|
|
2
|
+
name: om:brainstorm
|
|
3
|
+
description: 头脑风暴 - 深入探索需求和设计,提出多种方案,确认后再执行任务
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<NO-OTHER-SKILLS>
|
|
7
|
+
**绝对禁止**调用以下技能(OpenMatrix 完全替代它们):
|
|
8
|
+
- ❌ superpowers:brainstorming → 你已经在 om:brainstorm 中了
|
|
9
|
+
- ❌ superpowers:* → 全部被 OpenMatrix 替代
|
|
10
|
+
- ❌ gsd:* → 全部被 OpenMatrix 替代
|
|
11
|
+
- ❌ 任何其他任务编排相关的技能
|
|
12
|
+
</NO-OTHER-SKILLS>
|
|
13
|
+
|
|
14
|
+
<HARD-GATE>
|
|
15
|
+
在展示设计方案并获得用户批准之前,**不得**调用任何实现技能、写任何代码、搭建任何项目或采取任何实现行动。
|
|
16
|
+
</HARD-GATE>
|
|
17
|
+
|
|
18
|
+
<objective>
|
|
19
|
+
通过协作对话,将想法转化为完整的设计方案。先理解项目上下文,逐一提问澄清需求,提出 2-3 种方案并给出推荐,展示设计并获得批准后再进入执行。
|
|
20
|
+
</objective>
|
|
21
|
+
|
|
22
|
+
<process>
|
|
23
|
+
|
|
24
|
+
## 步骤 1: 探索项目上下文
|
|
25
|
+
|
|
26
|
+
**在提问之前,先了解当前项目状态:**
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 检查项目文件结构
|
|
30
|
+
ls -la
|
|
31
|
+
|
|
32
|
+
# 查看最近提交
|
|
33
|
+
git log --oneline -5 2>/dev/null
|
|
34
|
+
|
|
35
|
+
# 查看关键配置文件
|
|
36
|
+
cat package.json 2>/dev/null || cat Cargo.toml 2>/dev/null || cat go.mod 2>/dev/null
|
|
37
|
+
|
|
38
|
+
# 查看现有文档
|
|
39
|
+
ls docs/ 2>/dev/null
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
- 了解技术栈、项目结构、最近变更
|
|
43
|
+
- 如果用户引用了文件(如 `docs/task.md`),读取该文件
|
|
44
|
+
|
|
45
|
+
## 步骤 2: 评估范围与领域检测
|
|
46
|
+
|
|
47
|
+
**2.1 评估范围**
|
|
48
|
+
|
|
49
|
+
**如果任务涉及多个独立子系统**(如"构建一个包含聊天、文件存储、计费和分析的平台"),立即提出分解:
|
|
50
|
+
|
|
51
|
+
AskUserQuestion: `header: "范围"`, `multiSelect: false`
|
|
52
|
+
**question:** 这个任务涉及多个独立子系统,建议分步执行。先做哪个?
|
|
53
|
+
|
|
54
|
+
| label | description |
|
|
55
|
+
|-------|-------------|
|
|
56
|
+
| 子系统A | 描述... |
|
|
57
|
+
| 子系统B | 描述... |
|
|
58
|
+
| 全部一起做 | 不推荐,但可以尝试 |
|
|
59
|
+
|
|
60
|
+
**2.2 领域检测与 Research 集成**
|
|
61
|
+
|
|
62
|
+
**如果任务涉及不熟悉的垂直领域**(如游戏开发、支付系统、区块链、AI 应用等),主动建议调用研究:
|
|
63
|
+
|
|
64
|
+
AskUserQuestion: `header: "领域调研"`, `multiSelect: false`
|
|
65
|
+
**question:** 这个任务涉及新领域,建议先进行领域调研。研究可以帮助了解行业标准、识别关键技术选型、发现常见陷阱。
|
|
66
|
+
|
|
67
|
+
| label | description |
|
|
68
|
+
|-------|-------------|
|
|
69
|
+
| 先调研 (推荐) | 调用 /om:research 深入了解领域 |
|
|
70
|
+
| 直接头脑风暴 | 我对这个领域比较熟悉 |
|
|
71
|
+
|
|
72
|
+
用户选择「先调研」后,调用 `Skill: skill = "om:research", args = "任务描述"`。研究完成后,研究结论会作为头脑风暴的输入上下文。
|
|
73
|
+
|
|
74
|
+
## 步骤 3: 逐一澄清需求
|
|
75
|
+
|
|
76
|
+
**核心原则:一次只问一个问题。每条消息只有一个问题。**
|
|
77
|
+
|
|
78
|
+
**问题不是预定义的,而是根据具体任务动态生成。** 先检查项目上下文,再针对性地提问。
|
|
79
|
+
|
|
80
|
+
**问题应聚焦三个方面:**
|
|
81
|
+
|
|
82
|
+
### 3.1 目的(Purpose)— 为什么做这个?
|
|
83
|
+
|
|
84
|
+
根据任务动态生成选择题,示例:
|
|
85
|
+
|
|
86
|
+
AskUserQuestion: `header: "目的"`, `multiSelect: false`
|
|
87
|
+
**question:** 这个功能解决的核心痛点是什么?
|
|
88
|
+
|
|
89
|
+
| label | description |
|
|
90
|
+
|-------|-------------|
|
|
91
|
+
| 提升效率 | 自动化现有手动流程 |
|
|
92
|
+
| 新增能力 | 目前完全不具备的功能 |
|
|
93
|
+
| 替代方案 | 替换现有的第三方服务 |
|
|
94
|
+
|
|
95
|
+
### 3.2 约束(Constraints)— 有什么限制?
|
|
96
|
+
|
|
97
|
+
根据任务动态生成选择题,示例:
|
|
98
|
+
|
|
99
|
+
AskUserQuestion: `header: "数据模型"`, `multiSelect: true`
|
|
100
|
+
**question:** 客户管理的数据需要关联哪些实体?
|
|
101
|
+
|
|
102
|
+
| label | description |
|
|
103
|
+
|-------|-------------|
|
|
104
|
+
| 仅客户信息 | 独立的客户 CRUD |
|
|
105
|
+
| 客户 + 邀请人 | 需要追踪推荐关系 |
|
|
106
|
+
| 客户 + 合作历史 | 需要记录历史合作者 |
|
|
107
|
+
|
|
108
|
+
### 3.3 成功标准(Success Criteria)— 怎样算完成?
|
|
109
|
+
|
|
110
|
+
根据任务动态生成选择题,示例:
|
|
111
|
+
|
|
112
|
+
AskUserQuestion: `header: "MVP"`, `multiSelect: false`
|
|
113
|
+
**question:** 这个功能的 MVP 最小可用版本包含什么?
|
|
114
|
+
|
|
115
|
+
| label | description |
|
|
116
|
+
|-------|-------------|
|
|
117
|
+
| 基础 CRUD | 增删改查 + 列表 |
|
|
118
|
+
| CRUD + 搜索 | 支持按名称/邮箱搜索 |
|
|
119
|
+
| 完整功能 | 包含关联、分组、导出等 |
|
|
120
|
+
|
|
121
|
+
**提问策略:**
|
|
122
|
+
- **优先选择题** — 比开放式更容易回答
|
|
123
|
+
- **根据上下文定制** — 不是固定问题列表,而是基于项目状态和任务类型动态调整
|
|
124
|
+
- **每个问题只关注一个方面** — 需要深入就拆成多个问题
|
|
125
|
+
- **YAGNI** — 主动建议去掉不必要的功能
|
|
126
|
+
- **深入追问** — 如果用户选"其他",用开放式问题跟进
|
|
127
|
+
|
|
128
|
+
## 步骤 4: 提出 2-3 种方案
|
|
129
|
+
|
|
130
|
+
理解需求后,**先在界面输出方案详情**(不放在 AskUserQuestion 里),再让用户选择。
|
|
131
|
+
|
|
132
|
+
**输出方案到界面(普通文本):**
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
基于需求分析,有以下实现方案:
|
|
136
|
+
|
|
137
|
+
**方案 A(推荐): 组件化架构**
|
|
138
|
+
- 每个模块独立,通过接口通信
|
|
139
|
+
- 优点: 可测试性强、易维护
|
|
140
|
+
- 缺点: 初始代码量较多
|
|
141
|
+
|
|
142
|
+
**方案 B: 单体架构**
|
|
143
|
+
- 所有功能在一个模块内
|
|
144
|
+
- 优点: 开发快
|
|
145
|
+
- 缺点: 难以扩展
|
|
146
|
+
|
|
147
|
+
**方案 C: 微服务架构**
|
|
148
|
+
- 每个功能独立服务
|
|
149
|
+
- 优点: 高度解耦
|
|
150
|
+
- 缺点: 复杂度高,当前规模不需要
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**然后用简短的 AskUserQuestion 让用户选择:**
|
|
154
|
+
|
|
155
|
+
AskUserQuestion: `header: "技术方案"`, `multiSelect: false`
|
|
156
|
+
|
|
157
|
+
**question:** 推荐方案 A,因为...。选择哪个方案?
|
|
158
|
+
|
|
159
|
+
| label | description |
|
|
160
|
+
|-------|-------------|
|
|
161
|
+
| 方案 A (推荐) | 组件化架构 |
|
|
162
|
+
| 方案 B | 单体架构 |
|
|
163
|
+
| 方案 C | 微服务架构 |
|
|
164
|
+
|
|
165
|
+
## 步骤 5: 分步展示设计
|
|
166
|
+
|
|
167
|
+
**逐节展示设计方案,每节确认一次:**
|
|
168
|
+
|
|
169
|
+
每次展示一个设计方面:
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
📐 设计方案 - 第 1 部分: 架构
|
|
173
|
+
|
|
174
|
+
┌─────────┐ ┌─────────┐ ┌─────────┐
|
|
175
|
+
│ 输入层 │ ──→ │ 业务层 │ ──→ │ 数据层 │
|
|
176
|
+
└─────────┘ └─────────┘ └─────────┘
|
|
177
|
+
|
|
178
|
+
- 输入层: REST API + WebSocket
|
|
179
|
+
- 业务层: 核心逻辑处理
|
|
180
|
+
- 数据层: PostgreSQL + Redis 缓存
|
|
181
|
+
|
|
182
|
+
这部分设计是否合理?
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**设计覆盖:**
|
|
186
|
+
1. 架构设计
|
|
187
|
+
2. 数据模型 / 核心实体
|
|
188
|
+
3. 关键接口 / API
|
|
189
|
+
4. 错误处理策略
|
|
190
|
+
5. 测试策略
|
|
191
|
+
|
|
192
|
+
**每个部分先在界面展示设计内容,再用简短 AskUserQuestion 确认:**
|
|
193
|
+
|
|
194
|
+
AskUserQuestion: `header: "确认"`, `multiSelect: false`
|
|
195
|
+
**question:** 这部分设计是否合理?
|
|
196
|
+
|
|
197
|
+
| label | description |
|
|
198
|
+
|-------|-------------|
|
|
199
|
+
| 继续 | 设计合理,继续下一部分 |
|
|
200
|
+
| 修改 | 我有调整建议 |
|
|
201
|
+
|
|
202
|
+
## 步骤 6: 总结确认
|
|
203
|
+
|
|
204
|
+
所有设计部分确认后,**先在界面展示完整总结**,再用简短 AskUserQuestion 确认:
|
|
205
|
+
|
|
206
|
+
**输出总结到界面(普通文本):**
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
头脑风暴总结
|
|
210
|
+
|
|
211
|
+
任务: 实现客户管理系统
|
|
212
|
+
|
|
213
|
+
核心目标
|
|
214
|
+
- 客户信息管理(姓名、邮箱、邀请人)
|
|
215
|
+
- 历史合作记录追踪
|
|
216
|
+
|
|
217
|
+
架构
|
|
218
|
+
- 组件化设计,每个模块独立可测
|
|
219
|
+
|
|
220
|
+
技术方案
|
|
221
|
+
- 数据库: PostgreSQL / 缓存: Redis / API: RESTful
|
|
222
|
+
|
|
223
|
+
风险
|
|
224
|
+
- 数据迁移: 需要兼容旧格式
|
|
225
|
+
|
|
226
|
+
验收标准
|
|
227
|
+
- CRUD 接口完整 / 测试覆盖率 > 80%
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**然后让用户选择下一步:**
|
|
231
|
+
|
|
232
|
+
AskUserQuestion: `header: "下一步"`, `multiSelect: false`
|
|
233
|
+
**question:** 头脑风暴完成,是否开始执行任务?
|
|
234
|
+
|
|
235
|
+
| label | description |
|
|
236
|
+
|-------|-------------|
|
|
237
|
+
| 开始执行 (推荐) | 写入 tasks-input.json 并调用 /om:start |
|
|
238
|
+
| 继续探索 | 还有问题需要进一步讨论 |
|
|
239
|
+
| 仅生成计划 | 生成详细计划但不执行 |
|
|
240
|
+
|
|
241
|
+
## 步骤 7: 输出设计文档
|
|
242
|
+
|
|
243
|
+
总结确认后,将设计写入文档,便于后续执行时参考:
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
# 确保目录存在
|
|
247
|
+
mkdir -p docs/openmatrix
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**写入设计文档到 `docs/openmatrix/YYYY-MM-DD-<topic>-design.md`:**
|
|
251
|
+
|
|
252
|
+
```markdown
|
|
253
|
+
# 设计方案: 任务标题
|
|
254
|
+
|
|
255
|
+
日期: YYYY-MM-DD
|
|
256
|
+
|
|
257
|
+
## 核心目标
|
|
258
|
+
- 目标 1
|
|
259
|
+
- 目标 2
|
|
260
|
+
|
|
261
|
+
## 架构设计
|
|
262
|
+
(从步骤 5 确认的内容)
|
|
263
|
+
|
|
264
|
+
## 数据模型 / 核心实体
|
|
265
|
+
(从步骤 5 确认的内容)
|
|
266
|
+
|
|
267
|
+
## 关键接口 / API
|
|
268
|
+
(从步骤 5 确认的内容)
|
|
269
|
+
|
|
270
|
+
## 技术方案
|
|
271
|
+
- 方案选择: 方案 X
|
|
272
|
+
- 理由: ...
|
|
273
|
+
|
|
274
|
+
## 错误处理策略
|
|
275
|
+
(从步骤 5 确认的内容)
|
|
276
|
+
|
|
277
|
+
## 测试策略
|
|
278
|
+
(从步骤 5 确认的内容)
|
|
279
|
+
|
|
280
|
+
## 约束与风险
|
|
281
|
+
- 约束 1
|
|
282
|
+
- 风险 1 及应对
|
|
283
|
+
|
|
284
|
+
## 验收标准
|
|
285
|
+
- 标准 1
|
|
286
|
+
- 标准 2
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**先在界面告知文档已写入,再让用户选择:**
|
|
290
|
+
|
|
291
|
+
(输出到界面:设计文档已写入 `docs/openmatrix/YYYY-MM-DD-<topic>-design.md`)
|
|
292
|
+
|
|
293
|
+
AskUserQuestion: `header: "下一步"`, `multiSelect: false`
|
|
294
|
+
**question:** 设计文档已写入,下一步?
|
|
295
|
+
|
|
296
|
+
| label | description |
|
|
297
|
+
|-------|-------------|
|
|
298
|
+
| 开始执行 (推荐) | 写入 tasks-input.json 并调用 /om:start |
|
|
299
|
+
| 修改设计 | 需要调整设计方案 |
|
|
300
|
+
|
|
301
|
+
## 步骤 8: 写入 tasks-input.json 并调用 /om:start
|
|
302
|
+
|
|
303
|
+
用户选择"开始执行"后:
|
|
304
|
+
|
|
305
|
+
1. **检测状态:**
|
|
306
|
+
```bash
|
|
307
|
+
ls .openmatrix/state.json 2>/dev/null
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
2. **初始化(如需要):**
|
|
311
|
+
```bash
|
|
312
|
+
openmatrix start --init-only
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
3. **写入 `.openmatrix/tasks-input.json`:**
|
|
316
|
+
```json
|
|
317
|
+
{
|
|
318
|
+
"title": "任务标题",
|
|
319
|
+
"description": "基于头脑风暴的整体描述",
|
|
320
|
+
"goals": ["目标1: 独立功能模块", "目标2: 独立功能模块"],
|
|
321
|
+
"constraints": ["约束"],
|
|
322
|
+
"deliverables": ["交付物"],
|
|
323
|
+
"plan": "## 技术方案\n..."
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
> **注意**: `quality`、`mode`、`e2eTests` 不在此写入,由 `/om:start` 的必选问题决定。
|
|
328
|
+
|
|
329
|
+
4. **⚠️ 必须执行(不可跳过):使用 Skill 工具调用 `/om:start`**
|
|
330
|
+
|
|
331
|
+
```
|
|
332
|
+
Skill 工具: skill = "om:start"
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
这不是可选的 — 如果不调用 `/om:start`,任务不会开始执行。
|
|
336
|
+
`/om:start` 会检测到已存在的 `tasks-input.json`,然后询问必选问题(质量等级、E2E、执行模式)。
|
|
337
|
+
|
|
338
|
+
</process>
|
|
339
|
+
|
|
340
|
+
<arguments>
|
|
341
|
+
$ARGUMENTS
|
|
342
|
+
</arguments>
|
|
343
|
+
|
|
344
|
+
<examples>
|
|
345
|
+
/om:brainstorm # 交互式头脑风暴
|
|
346
|
+
/om:brainstorm docs/task.md # 基于任务文件头脑风暴
|
|
347
|
+
/om:brainstorm "实现用户登录功能" # 基于描述头脑风暴
|
|
348
|
+
</examples>
|
|
349
|
+
|
|
350
|
+
<notes>
|
|
351
|
+
## 关键原则
|
|
352
|
+
|
|
353
|
+
- **一次只问一个问题** — 不要一次问多个
|
|
354
|
+
- **优先选择题** — 比开放式更容易回答
|
|
355
|
+
- **YAGNI** — 主动建议去掉不必要的设计
|
|
356
|
+
- **提出 2-3 种方案** — 带权衡和推荐
|
|
357
|
+
- **分步确认** — 每部分设计确认后再继续
|
|
358
|
+
- **为隔离而设计** — 每个模块应有清晰的边界和接口
|
|
359
|
+
- **问题要贴合任务** — 不问泛泛的问题,而是针对具体任务深入
|
|
360
|
+
- **理解目的 > 理解实现** — 先搞清楚为什么做,再讨论怎么做
|
|
361
|
+
|
|
362
|
+
## 领域调研集成
|
|
363
|
+
|
|
364
|
+
- 检测到垂直领域(游戏、支付、区块链等)时,主动建议 `/om:research`
|
|
365
|
+
- 研究完成后,研究结论作为后续提问和设计的输入上下文
|
|
366
|
+
- 如果用户对领域熟悉,可以跳过研究直接进入头脑风暴
|
|
367
|
+
- 研究产出的文档可引用在设计文档中
|
|
368
|
+
|
|
369
|
+
## 设计文档
|
|
370
|
+
|
|
371
|
+
- 每次头脑风暴都会输出设计文档到 `docs/openmatrix/YYYY-MM-DD-<topic>-design.md`
|
|
372
|
+
- 文档包含:核心目标、架构、数据模型、接口、技术方案、错误处理、测试策略、风险、验收标准
|
|
373
|
+
- 设计文档是 `/om:start` 执行时的重要参考
|
|
374
|
+
- 文档内容来自步骤 5 逐节确认的设计
|
|
375
|
+
|
|
376
|
+
## 在已有代码库中工作
|
|
377
|
+
|
|
378
|
+
- 提出变更前,先探索现有结构,遵循现有模式
|
|
379
|
+
- 如果现有代码有问题(文件太大、边界不清、职责混乱),在设计中有针对性地改进
|
|
380
|
+
- 不要提出无关的重构建议,聚焦当前目标
|
|
381
|
+
|
|
382
|
+
## 问题深度示例
|
|
383
|
+
|
|
384
|
+
**不好的问题(太泛):**
|
|
385
|
+
- "你的技术栈是什么?"
|
|
386
|
+
- "你需要测试吗?"
|
|
387
|
+
|
|
388
|
+
**好的问题(贴合具体任务):**
|
|
389
|
+
- "客户管理的邀请人字段,是只记录最近一个邀请人,还是需要完整的邀请链?"
|
|
390
|
+
- "站内信需要支持已读/未读状态吗?还是只需要通知推送?"
|
|
391
|
+
- "物流追踪是实时推送还是定时轮询?这影响 API 设计。"
|
|
392
|
+
|
|
393
|
+
## 流程图
|
|
394
|
+
|
|
395
|
+
```
|
|
396
|
+
┌─────────────────┐
|
|
397
|
+
│ 探索项目上下文 │
|
|
398
|
+
└────────┬────────┘
|
|
399
|
+
│
|
|
400
|
+
▼
|
|
401
|
+
┌─────────────────┐
|
|
402
|
+
│ 评估范围 │
|
|
403
|
+
│ (是否需要分解) │
|
|
404
|
+
└────────┬────────┘
|
|
405
|
+
│
|
|
406
|
+
▼
|
|
407
|
+
┌─────────────────┐
|
|
408
|
+
│ 领域检测 │ YES → /om:research → 研究结论作为上下文
|
|
409
|
+
│ (是否需要调研) │──────────────────────────────────────────────┐
|
|
410
|
+
└────────┬────────┘ │
|
|
411
|
+
│ NO / 研究完成 │
|
|
412
|
+
▼ ◀────────────────────────────────────────────────────┘
|
|
413
|
+
┌─────────────────┐
|
|
414
|
+
│ 逐一澄清需求 │◀─────┐
|
|
415
|
+
│ (一次一个问题) │ │
|
|
416
|
+
│ 深入理解目的/ │ │
|
|
417
|
+
│ 约束/成功标准 │ │
|
|
418
|
+
└────────┬────────┘ │
|
|
419
|
+
│ │
|
|
420
|
+
还有问题? ───── YES ─┘
|
|
421
|
+
│ NO
|
|
422
|
+
▼
|
|
423
|
+
┌─────────────────┐
|
|
424
|
+
│ 提出 2-3 种方案 │
|
|
425
|
+
│ (附权衡和推荐) │
|
|
426
|
+
└────────┬────────┘
|
|
427
|
+
│
|
|
428
|
+
▼
|
|
429
|
+
┌─────────────────┐
|
|
430
|
+
│ 分步展示设计 │◀─────┐
|
|
431
|
+
│ (每步确认) │ │
|
|
432
|
+
└────────┬────────┘ │
|
|
433
|
+
│ │
|
|
434
|
+
需要修改? ───── YES ─┘
|
|
435
|
+
│ NO
|
|
436
|
+
▼
|
|
437
|
+
┌─────────────────┐
|
|
438
|
+
│ 总结 + 确认 │
|
|
439
|
+
└────────┬────────┘
|
|
440
|
+
│
|
|
441
|
+
▼
|
|
442
|
+
┌─────────────────┐
|
|
443
|
+
│ 写入设计文档 │
|
|
444
|
+
│ (docs/openmatrix/) │
|
|
445
|
+
└────────┬────────┘
|
|
446
|
+
│
|
|
447
|
+
开始执行
|
|
448
|
+
│
|
|
449
|
+
▼
|
|
450
|
+
┌─────────────────┐
|
|
451
|
+
│ 写入 JSON │
|
|
452
|
+
│ 调用 /om:start │
|
|
453
|
+
└─────────────────┘
|
|
454
|
+
```
|
|
455
|
+
</notes>
|
package/skills/meeting.md
CHANGED
|
@@ -47,22 +47,17 @@ description: 查看和处理所有待确认的 Meeting(阻塞问题和决策
|
|
|
47
47
|
|
|
48
48
|
4. **使用 AskUserQuestion 选择处理哪个 Meeting**
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
],
|
|
62
|
-
multiSelect: false
|
|
63
|
-
}]
|
|
64
|
-
})
|
|
65
|
-
```
|
|
50
|
+
**先在界面展示 Meeting 列表详情,再用简短 AskUserQuestion 让用户选择:**
|
|
51
|
+
|
|
52
|
+
AskUserQuestion: `header: "选择 Meeting"`, `multiSelect: false`
|
|
53
|
+
**question:** 请选择要处理的 Meeting(详情已展示在上方)
|
|
54
|
+
|
|
55
|
+
| label | description |
|
|
56
|
+
|-------|-------------|
|
|
57
|
+
| [1] TASK-001 - 数据库连接失败 | 阻塞 - 需要信息 |
|
|
58
|
+
| [2] TASK-003 - API设计决策 | 决策 - 技术选型 |
|
|
59
|
+
| 全部跳过 | 标记所有 Meeting 为跳过 |
|
|
60
|
+
| 返回 | 暂不处理 |
|
|
66
61
|
|
|
67
62
|
5. **处理单个 Meeting**
|
|
68
63
|
|
|
@@ -92,37 +87,25 @@ description: 查看和处理所有待确认的 Meeting(阻塞问题和决策
|
|
|
92
87
|
[D] ✏️ 修改方案 - 调整任务执行方案
|
|
93
88
|
```
|
|
94
89
|
|
|
95
|
-
**使用 AskUserQuestion
|
|
96
|
-
|
|
97
|
-
AskUserQuestion
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
],
|
|
108
|
-
multiSelect: false
|
|
109
|
-
}]
|
|
110
|
-
})
|
|
111
|
-
```
|
|
90
|
+
**使用 AskUserQuestion(阻塞详情已展示在上方):**
|
|
91
|
+
|
|
92
|
+
AskUserQuestion: `header: "处理阻塞"`, `multiSelect: false`
|
|
93
|
+
**question:** 请选择操作
|
|
94
|
+
|
|
95
|
+
| label | description |
|
|
96
|
+
|-------|-------------|
|
|
97
|
+
| 提供信息 | 提供解决问题所需的信息 |
|
|
98
|
+
| 跳过任务 | 标记为可选,继续执行下游任务 |
|
|
99
|
+
| 重试 | 使用新信息重试此任务 |
|
|
100
|
+
| 修改方案 | 调整任务执行方案 |
|
|
101
|
+
| 返回列表 | 暂不处理 |
|
|
112
102
|
|
|
113
103
|
6. **处理具体选择**
|
|
114
104
|
|
|
115
105
|
**如果选择"提供信息":**
|
|
116
|
-
|
|
117
|
-
AskUserQuestion
|
|
118
|
-
|
|
119
|
-
question: "请提供解决此阻塞所需的信息:",
|
|
120
|
-
header: "详细信息",
|
|
121
|
-
options: [], // 允许自由输入
|
|
122
|
-
multiSelect: false
|
|
123
|
-
}]
|
|
124
|
-
})
|
|
125
|
-
```
|
|
106
|
+
|
|
107
|
+
AskUserQuestion: `header: "详细信息"`, `multiSelect: false`
|
|
108
|
+
**question:** 请提供解决此阻塞所需的信息
|
|
126
109
|
|
|
127
110
|
然后执行:
|
|
128
111
|
```bash
|
|
@@ -131,19 +114,14 @@ description: 查看和处理所有待确认的 Meeting(阻塞问题和决策
|
|
|
131
114
|
```
|
|
132
115
|
|
|
133
116
|
**如果选择"跳过任务":**
|
|
134
|
-
|
|
135
|
-
AskUserQuestion
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
],
|
|
143
|
-
multiSelect: false
|
|
144
|
-
}]
|
|
145
|
-
})
|
|
146
|
-
```
|
|
117
|
+
|
|
118
|
+
AskUserQuestion: `header: "确认"`, `multiSelect: false`
|
|
119
|
+
**question:** 确定要跳过此任务吗?
|
|
120
|
+
|
|
121
|
+
| label | description |
|
|
122
|
+
|-------|-------------|
|
|
123
|
+
| 确认跳过 | 标记为可选,继续下游 |
|
|
124
|
+
| 取消 | 返回 |
|
|
147
125
|
|
|
148
126
|
然后执行:
|
|
149
127
|
```bash
|
|
@@ -156,16 +134,9 @@ description: 查看和处理所有待确认的 Meeting(阻塞问题和决策
|
|
|
156
134
|
```
|
|
157
135
|
|
|
158
136
|
**如果选择"修改方案":**
|
|
159
|
-
|
|
160
|
-
AskUserQuestion
|
|
161
|
-
|
|
162
|
-
question: "请描述修改后的方案:",
|
|
163
|
-
header: "新方案",
|
|
164
|
-
options: [], // 允许自由输入
|
|
165
|
-
multiSelect: false
|
|
166
|
-
}]
|
|
167
|
-
})
|
|
168
|
-
```
|
|
137
|
+
|
|
138
|
+
AskUserQuestion: `header: "新方案"`, `multiSelect: false`
|
|
139
|
+
**question:** 请描述修改后的方案
|
|
169
140
|
|
|
170
141
|
然后执行:
|
|
171
142
|
```bash
|
|
@@ -204,23 +175,18 @@ description: 查看和处理所有待确认的 Meeting(阻塞问题和决策
|
|
|
204
175
|
[C] 自定义方案
|
|
205
176
|
```
|
|
206
177
|
|
|
207
|
-
**使用 AskUserQuestion
|
|
208
|
-
|
|
209
|
-
AskUserQuestion
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
],
|
|
220
|
-
multiSelect: false
|
|
221
|
-
}]
|
|
222
|
-
})
|
|
223
|
-
```
|
|
178
|
+
**使用 AskUserQuestion(方案详情已展示在上方):**
|
|
179
|
+
|
|
180
|
+
AskUserQuestion: `header: "技术决策"`, `multiSelect: false`
|
|
181
|
+
**question:** 请做出决策
|
|
182
|
+
|
|
183
|
+
| label | description |
|
|
184
|
+
|-------|-------------|
|
|
185
|
+
| 选择方案 1: REST | 简单直观,团队熟悉 |
|
|
186
|
+
| 选择方案 2: GraphQL | 灵活查询,强类型 |
|
|
187
|
+
| 自定义方案 | 输入其他方案 |
|
|
188
|
+
| 需要更多信息 | 暂不决策,等待调研 |
|
|
189
|
+
| 返回列表 | 返回 Meeting 列表 |
|
|
224
190
|
|
|
225
191
|
执行决策:
|
|
226
192
|
```bash
|
|
@@ -257,19 +223,14 @@ description: 查看和处理所有待确认的 Meeting(阻塞问题和决策
|
|
|
257
223
|
9. **批量处理**
|
|
258
224
|
|
|
259
225
|
如果选择"全部跳过":
|
|
260
|
-
|
|
261
|
-
AskUserQuestion
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
],
|
|
269
|
-
multiSelect: false
|
|
270
|
-
}]
|
|
271
|
-
})
|
|
272
|
-
```
|
|
226
|
+
|
|
227
|
+
AskUserQuestion: `header: "批量操作"`, `multiSelect: false`
|
|
228
|
+
**question:** 确定要跳过所有 Meeting 吗?
|
|
229
|
+
|
|
230
|
+
| label | description |
|
|
231
|
+
|-------|-------------|
|
|
232
|
+
| 确认全部跳过 | 标记所有为可选 |
|
|
233
|
+
| 取消 | 返回列表 |
|
|
273
234
|
|
|
274
235
|
```bash
|
|
275
236
|
openmatrix meeting --skip-all --message "批量跳过"
|
package/skills/start.md
CHANGED
|
@@ -124,92 +124,50 @@ git init
|
|
|
124
124
|
|
|
125
125
|
---
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
### Step 4: 必选问题(不可跳过,不可使用默认值,必须通过 AskUserQuestion 让用户选择)
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
**不允许使用任何默认值。必须通过 AskUserQuestion 让用户选择。**
|
|
131
|
-
**如果没有执行 Step 4 就进入 Step 5+,任务执行失败。**
|
|
129
|
+
根据 `goalTypes` 字段判断需要询问哪些问题:
|
|
132
130
|
|
|
133
|
-
|
|
131
|
+
| goalTypes | 需要询问 |
|
|
132
|
+
|-----------|---------|
|
|
133
|
+
| `development` | 4.1 质量等级 → 4.2 E2E → 4.3 执行模式 |
|
|
134
|
+
| `testing` | 仅 4.3 执行模式 |
|
|
135
|
+
| `documentation` / `other` | 仅 4.3 执行模式 |
|
|
134
136
|
|
|
135
|
-
|
|
137
|
+
#### 4.1 质量等级(仅 `goalTypes: development`)
|
|
136
138
|
|
|
137
|
-
|
|
138
|
-
|---------|---------------|
|
|
139
|
-
| **开发任务**(新功能、Bug修复、重构) | 4.1 质量等级 + 4.2 E2E + 4.3 执行模式 |
|
|
140
|
-
| **测试任务**(纯测试、写测试用例) | 仅 4.3 执行模式 |
|
|
141
|
-
| **非开发任务**(文档、配置、纯阅读) | 仅 4.3 执行模式 |
|
|
139
|
+
AskUserQuestion: `header: "质量等级"`, `multiSelect: false`
|
|
142
140
|
|
|
143
|
-
|
|
144
|
-
- `development` → 开发任务 → 问 4.1 + 4.2 + 4.3
|
|
145
|
-
- `testing` → 测试任务 → 仅问 4.3
|
|
146
|
-
- `documentation` / `other` → 非开发任务 → 仅问 4.3
|
|
141
|
+
**question:** 选择质量等级(决定测试覆盖、Lint、安全扫描等要求)
|
|
147
142
|
|
|
148
|
-
|
|
143
|
+
| label | description |
|
|
144
|
+
|-------|-------------|
|
|
145
|
+
| `strict` | TDD + >80%覆盖率 + 严格Lint + 安全扫描 — 生产级代码 |
|
|
146
|
+
| `balanced (推荐)` | >60%覆盖率 + Lint + 安全扫描 — 日常开发 |
|
|
147
|
+
| `fast` | 无质量门禁 — 快速原型/验证 |
|
|
149
148
|
|
|
150
|
-
#### 4.
|
|
149
|
+
#### 4.2 E2E 测试(仅 `development` 且选 strict/balanced,选 `fast` 跳过)
|
|
151
150
|
|
|
152
|
-
|
|
151
|
+
AskUserQuestion: `header: "E2E 测试"`, `multiSelect: false`
|
|
153
152
|
|
|
154
|
-
|
|
155
|
-
AskUserQuestion({
|
|
156
|
-
questions: [
|
|
157
|
-
{
|
|
158
|
-
question: "选择质量等级(决定测试覆盖、Lint、安全扫描等要求):",
|
|
159
|
-
header: "质量等级",
|
|
160
|
-
options: [
|
|
161
|
-
{ label: "strict", description: "TDD + >80%覆盖率 + 严格Lint + 安全扫描 — 生产级代码" },
|
|
162
|
-
{ label: "balanced (推荐)", description: ">60%覆盖率 + Lint + 安全扫描 — 日常开发" },
|
|
163
|
-
{ label: "fast", description: "无质量门禁 — 快速原型/验证" }
|
|
164
|
-
],
|
|
165
|
-
multiSelect: false
|
|
166
|
-
}
|
|
167
|
-
]
|
|
168
|
-
})
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
#### 4.2 E2E 测试(仅开发任务且选 strict/balanced 时)
|
|
172
|
-
|
|
173
|
-
如果开发任务且用户选择了 `strict` 或 `balanced`,继续询问:
|
|
174
|
-
|
|
175
|
-
```typescript
|
|
176
|
-
AskUserQuestion({
|
|
177
|
-
questions: [
|
|
178
|
-
{
|
|
179
|
-
question: "是否启用端到端 (E2E) 测试?(适用于 Web/Mobile/GUI 项目,耗时较长)",
|
|
180
|
-
header: "E2E 测试",
|
|
181
|
-
options: [
|
|
182
|
-
{ label: "启用 E2E 测试", description: "使用 Playwright/Cypress 等框架进行端到端测试" },
|
|
183
|
-
{ label: "不启用 (推荐)", description: "仅进行单元测试和集成测试,节省时间" }
|
|
184
|
-
],
|
|
185
|
-
multiSelect: false
|
|
186
|
-
}
|
|
187
|
-
]
|
|
188
|
-
})
|
|
189
|
-
```
|
|
153
|
+
**question:** 是否启用端到端 (E2E) 测试?(适用于 Web/Mobile/GUI 项目,耗时较长)
|
|
190
154
|
|
|
191
|
-
|
|
155
|
+
| label | description |
|
|
156
|
+
|-------|-------------|
|
|
157
|
+
| `不启用 (推荐)` | 仅进行单元测试和集成测试,节省时间 |
|
|
158
|
+
| `启用 E2E 测试` | 使用 Playwright/Cypress 等框架进行端到端测试 |
|
|
192
159
|
|
|
193
160
|
#### 4.3 执行模式(所有任务必选)
|
|
194
161
|
|
|
195
|
-
|
|
162
|
+
AskUserQuestion: `header: "执行模式"`, `multiSelect: false`
|
|
196
163
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
{ label: "全自动执行 (推荐)", description: "全自动执行,无需人工审批,遇到阻塞自动 Meeting" },
|
|
205
|
-
{ label: "关键节点确认", description: "plan/merge/deploy 时暂停确认" },
|
|
206
|
-
{ label: "每阶段确认", description: "每个阶段(develop/verify/accept)完成后暂停" }
|
|
207
|
-
],
|
|
208
|
-
multiSelect: false
|
|
209
|
-
}
|
|
210
|
-
]
|
|
211
|
-
})
|
|
212
|
-
```
|
|
164
|
+
**question:** 选择执行模式(控制 AI 执行过程中的审批节点)
|
|
165
|
+
|
|
166
|
+
| label | description |
|
|
167
|
+
|-------|-------------|
|
|
168
|
+
| `全自动执行 (推荐)` | 全自动执行,无需人工审批,遇到阻塞自动 Meeting |
|
|
169
|
+
| `关键节点确认` | plan/merge/deploy 时暂停确认 |
|
|
170
|
+
| `每阶段确认` | 每个阶段(develop/verify/accept)完成后暂停 |
|
|
213
171
|
|
|
214
172
|
### Step 5: 可选问题(仅复杂任务)
|
|
215
173
|
|
|
@@ -376,31 +334,16 @@ openmatrix step --json
|
|
|
376
334
|
|
|
377
335
|
**交互式审批流程(非全自动模式):**
|
|
378
336
|
|
|
379
|
-
当到达审批点时,使用 `openmatrix approve --json`(不带 ID
|
|
337
|
+
当到达审批点时,使用 `openmatrix approve --json`(不带 ID)查看待审批项,**先在界面展示审批内容摘要**,再用简短 AskUserQuestion 请求确认:
|
|
380
338
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
[审批内容摘要]
|
|
391
|
-
|
|
392
|
-
是否批准?",
|
|
393
|
-
header: "审批",
|
|
394
|
-
options: [
|
|
395
|
-
{ label: "批准", description: "同意继续执行" },
|
|
396
|
-
{ label: "拒绝", description: "拒绝并停止执行" },
|
|
397
|
-
{ label: "查看详情", description: "查看完整审批内容后再决定" }
|
|
398
|
-
],
|
|
399
|
-
multiSelect: false
|
|
400
|
-
}
|
|
401
|
-
]
|
|
402
|
-
})
|
|
403
|
-
```
|
|
339
|
+
AskUserQuestion: `header: "审批"`, `multiSelect: false`
|
|
340
|
+
**question:** 是否批准此审批请求?(详情已展示在上方)
|
|
341
|
+
|
|
342
|
+
| label | description |
|
|
343
|
+
|-------|-------------|
|
|
344
|
+
| 批准 | 同意继续执行 |
|
|
345
|
+
| 拒绝 | 拒绝并停止执行 |
|
|
346
|
+
| 查看详情 | 查看完整审批内容后再决定 |
|
|
404
347
|
|
|
405
348
|
用户选择后,执行对应命令:
|
|
406
349
|
- 批准: `openmatrix approve <approval-id> -d approve --json`
|