openmatrix 0.2.14 → 0.2.16
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/agents/agent-runner.d.ts +4 -0
- package/dist/agents/agent-runner.js +86 -0
- package/dist/orchestrator/executor.d.ts +32 -2
- package/dist/orchestrator/executor.js +119 -1
- package/dist/orchestrator/meeting-manager.d.ts +16 -1
- package/dist/orchestrator/meeting-manager.js +113 -0
- package/dist/types/index.d.ts +66 -1
- package/package.json +2 -1
- package/skills/auto.md +64 -3
- package/skills/debug.md +1 -1
- package/skills/feature.md +229 -64
- package/skills/resume-feature.md +227 -0
- package/skills/start.md +66 -3
package/skills/auto.md
CHANGED
|
@@ -154,7 +154,7 @@ openmatrix complete TASK-XXX --success # 标记完成 + 更新统计(含
|
|
|
154
154
|
# 提交验证(防止 commit 静默失败):
|
|
155
155
|
git status --porcelain # 检查是否有未提交的文件
|
|
156
156
|
# 如果有未提交文件 → 必须手动提交:
|
|
157
|
-
git add
|
|
157
|
+
git add . && git commit -m "feat(TASK-XXX): 任务标题"
|
|
158
158
|
|
|
159
159
|
openmatrix step --json # 获取下一个任务 + 检查是否全部完成
|
|
160
160
|
```
|
|
@@ -167,7 +167,68 @@ openmatrix step --json # 获取下一个任务 + 检查是
|
|
|
167
167
|
4. 如果返回 `status: "blocked"` → 有阻塞任务需要处理
|
|
168
168
|
</LOOP-ENFORCEMENT>
|
|
169
169
|
|
|
170
|
-
|
|
170
|
+
#### 6.1 歧义检测机制(全自动模式)
|
|
171
|
+
|
|
172
|
+
**Agent 输出中可能包含歧义报告(JSON 格式):**
|
|
173
|
+
|
|
174
|
+
当 Agent 输出包含以下标记时,表示检测到歧义:
|
|
175
|
+
```
|
|
176
|
+
<AMBIGUITY_REPORT>
|
|
177
|
+
{
|
|
178
|
+
"ambiguities": [
|
|
179
|
+
{
|
|
180
|
+
"type": "missing_info" | "conflicting_req" | "unclear_scope" | "tech_choice" | "edge_case",
|
|
181
|
+
"severity": "critical" | "high" | "medium" | "low",
|
|
182
|
+
"description": "歧义描述",
|
|
183
|
+
"suggestions": ["建议1", "建议2"]
|
|
184
|
+
}
|
|
185
|
+
],
|
|
186
|
+
"overallSeverity": "critical" | "high" | "medium" | "low"
|
|
187
|
+
}
|
|
188
|
+
</AMBIGUITY_REPORT>
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**5 种歧义类型说明:**
|
|
192
|
+
|
|
193
|
+
| 类型 | 说明 | 示例 |
|
|
194
|
+
|------|------|------|
|
|
195
|
+
| `missing_info` | 缺失关键信息 | "未指定数据库类型" |
|
|
196
|
+
| `conflicting_req` | 需求冲突 | "既要高性能又要低成本" |
|
|
197
|
+
| `unclear_scope` | 范围不清晰 | "是否包含历史数据处理?" |
|
|
198
|
+
| `tech_choice` | 技术选型歧义 | "用 REST 还是 GraphQL?" |
|
|
199
|
+
| `edge_case` | 边界情况未定义 | "超过限制时如何处理?" |
|
|
200
|
+
|
|
201
|
+
#### 6.2 歧义处理策略(全自动模式)
|
|
202
|
+
|
|
203
|
+
**在 `/om:auto` 全自动模式下,所有歧义都写入 Meeting 继续执行,不中断流程:**
|
|
204
|
+
|
|
205
|
+
| 严重程度 | 处理方式 |
|
|
206
|
+
|---------|---------|
|
|
207
|
+
| **Critical** | Meeting + 继续执行其他任务 |
|
|
208
|
+
| **High** | Meeting + 继续执行其他任务 |
|
|
209
|
+
| **Medium** | Meeting + 继续执行其他任务 |
|
|
210
|
+
| **Low** | Meeting + 继续执行其他任务 |
|
|
211
|
+
|
|
212
|
+
**全自动模式特点:**
|
|
213
|
+
- ❌ **不使用 AskUserQuestion** — 全自动执行,零人工干预
|
|
214
|
+
- ✅ **所有歧义写入 Meeting** — 执行完成后统一展示
|
|
215
|
+
- ✅ **继续执行其他任务** — 最大化并行度,无阻塞等待
|
|
216
|
+
|
|
217
|
+
**Meeting 处理流程:**
|
|
218
|
+
```bash
|
|
219
|
+
# 检测到歧义时,写入 Meeting 记录并继续执行
|
|
220
|
+
openmatrix meeting --create --task TASK-XXX --reason "歧义: ${description}" --severity ${overallSeverity}
|
|
221
|
+
|
|
222
|
+
# 继续执行下一个任务
|
|
223
|
+
openmatrix step --json
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**执行完成后提示用户:**
|
|
227
|
+
```
|
|
228
|
+
⚠️ 检测到 N 个歧义记录,请使用 `/om:meeting` 统一处理
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
#### 6.3 执行 Agent 任务
|
|
171
232
|
|
|
172
233
|
```typescript
|
|
173
234
|
Agent({
|
|
@@ -246,7 +307,7 @@ openmatrix step --json
|
|
|
246
307
|
Agent-1 完成 → 写入 context.md → Agent-2 读取 Agent-1 的上下文 → 写入 context.md → ...
|
|
247
308
|
```
|
|
248
309
|
```bash
|
|
249
|
-
git add
|
|
310
|
+
git add . && git commit -m "$(cat <<'EOF'
|
|
250
311
|
feat: 任务标题
|
|
251
312
|
|
|
252
313
|
改动点1
|
package/skills/debug.md
CHANGED
package/skills/feature.md
CHANGED
|
@@ -20,16 +20,18 @@ priority: high
|
|
|
20
20
|
## 执行顺序 - 必须严格按此顺序,不得跳过
|
|
21
21
|
|
|
22
22
|
```
|
|
23
|
+
Step 0: Git 前置检查与持久化初始化(必须执行)
|
|
23
24
|
Step 1: 接收任务输入(参数、文件、或询问用户)
|
|
24
25
|
Step 2: AI 自动判断任务边界(不符合条件才询问切换)
|
|
25
|
-
Step 3:
|
|
26
|
-
Step 4:
|
|
27
|
-
Step 5:
|
|
28
|
-
Step 6:
|
|
29
|
-
Step 7:
|
|
30
|
-
Step 8:
|
|
31
|
-
Step 9:
|
|
32
|
-
Step 10:
|
|
26
|
+
Step 3: 收集项目上下文(技术栈、目录结构、CLAUDE.md)
|
|
27
|
+
Step 4: AI 拆分为 2-5 个小任务块
|
|
28
|
+
Step 5: 用 TodoWrite 管理任务状态
|
|
29
|
+
Step 6: 问答确认(质量等级、E2E测试、执行计划)
|
|
30
|
+
Step 7: 逐个执行小任务(含跨 Agent 上下文传递)
|
|
31
|
+
Step 8: 验证(按质量等级)
|
|
32
|
+
Step 9: 分步 Git 提交
|
|
33
|
+
Step 10: 全部任务完成后整体验证
|
|
34
|
+
Step 11: 输出执行摘要并清理
|
|
33
35
|
```
|
|
34
36
|
|
|
35
37
|
**铁律:不验证不得提交,验证失败必须停止**
|
|
@@ -44,6 +46,39 @@ Step 10: 输出执行摘要并清理
|
|
|
44
46
|
|
|
45
47
|
<process>
|
|
46
48
|
|
|
49
|
+
## Step 0: Git 前置检查与持久化初始化(必须执行)
|
|
50
|
+
|
|
51
|
+
**检查 Git 仓库:**
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
ls -la .git 2>/dev/null || echo "NOT_INITIALIZED"
|
|
55
|
+
git status --porcelain
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
| 检查结果 | 处理 |
|
|
59
|
+
|---------|------|
|
|
60
|
+
| `NOT_INITIALIZED` | AskUserQuestion 是否初始化 git |
|
|
61
|
+
| 有未提交文件 | AskUserQuestion 处理方式(暂存/忽略/取消) |
|
|
62
|
+
| 干净 | 继续执行 |
|
|
63
|
+
|
|
64
|
+
**初始化持久化状态:**
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
mkdir -p .openmatrix
|
|
68
|
+
cat > .openmatrix/feature-session.json << 'EOF'
|
|
69
|
+
{
|
|
70
|
+
"sessionId": "FEATURE-$(date +%Y%m%d%H%M%S)",
|
|
71
|
+
"status": "running",
|
|
72
|
+
"tasks": [],
|
|
73
|
+
"currentTaskIndex": 0,
|
|
74
|
+
"quality": null,
|
|
75
|
+
"failureCount": {}
|
|
76
|
+
}
|
|
77
|
+
EOF
|
|
78
|
+
echo '' > .openmatrix/feature-context.md
|
|
79
|
+
echo '' > .openmatrix/feature-progress.md
|
|
80
|
+
```
|
|
81
|
+
|
|
47
82
|
## Step 1: 接收任务输入
|
|
48
83
|
|
|
49
84
|
**检查 `$ARGUMENTS`:**
|
|
@@ -82,7 +117,7 @@ AskUserQuestion: `header: "任务描述"`, `multiSelect: false`
|
|
|
82
117
|
|
|
83
118
|
| 结果 | 处理 |
|
|
84
119
|
|------|------|
|
|
85
|
-
| ✅ 全部满足 | 继续执行 Step 3 |
|
|
120
|
+
| ✅ 全部满足 | 继续执行 Step 3 收集上下文 |
|
|
86
121
|
| ❌ 不满足 | 输出建议并询问是否切换到 `/om:start` |
|
|
87
122
|
|
|
88
123
|
**如果需要切换,询问:**
|
|
@@ -95,7 +130,35 @@ AskUserQuestion: `header: "任务复杂度"`, `multiSelect: false`
|
|
|
95
130
|
| 切换到 /om:start | 使用完整流程 |
|
|
96
131
|
| 继续用 /om:feature | 强制使用轻量流程(可能无法完整追踪) |
|
|
97
132
|
|
|
98
|
-
## Step 3:
|
|
133
|
+
## Step 3: 收集项目上下文并写入文件
|
|
134
|
+
|
|
135
|
+
**收集并写入上下文文件:**
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
mkdir -p .openmatrix
|
|
139
|
+
|
|
140
|
+
# 写入上下文文件头
|
|
141
|
+
echo "# 项目上下文" > .openmatrix/feature-context.md
|
|
142
|
+
echo "" >> .openmatrix/feature-context.md
|
|
143
|
+
|
|
144
|
+
# 收集技术栈并写入文件
|
|
145
|
+
echo "## 技术栈" >> .openmatrix/feature-context.md
|
|
146
|
+
cat package.json 2>/dev/null | grep -E '"(react|vue|angular|next|express|fastify|koa|typeorm|prisma|sequelize|mongoose|jest|vitest|playwright|cypress)"' >> .openmatrix/feature-context.md || echo "未检测到常见框架" >> .openmatrix/feature-context.md
|
|
147
|
+
echo "" >> .openmatrix/feature-context.md
|
|
148
|
+
|
|
149
|
+
# 收集目录结构并写入文件
|
|
150
|
+
echo "## 目录结构" >> .openmatrix/feature-context.md
|
|
151
|
+
find . -maxdepth 2 -type d -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' -not -path '*/.openmatrix/*' 2>/dev/null | head -30 >> .openmatrix/feature-context.md
|
|
152
|
+
echo "" >> .openmatrix/feature-context.md
|
|
153
|
+
|
|
154
|
+
# 读取 CLAUDE.md 并写入文件
|
|
155
|
+
echo "## 项目规范(来自 CLAUDE.md)" >> .openmatrix/feature-context.md
|
|
156
|
+
cat CLAUDE.md 2>/dev/null | head -50 >> .openmatrix/feature-context.md || echo "无 CLAUDE.md" >> .openmatrix/feature-context.md
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
上下文已写入 `.openmatrix/feature-context.md`,后续 Agent 会读取此文件。
|
|
160
|
+
|
|
161
|
+
## Step 4: AI 拆分为 2-5 个小任务块
|
|
99
162
|
|
|
100
163
|
**调用 Agent 进行任务拆分:**
|
|
101
164
|
|
|
@@ -108,11 +171,14 @@ Agent({
|
|
|
108
171
|
## 用户需求
|
|
109
172
|
${taskDescription}
|
|
110
173
|
|
|
174
|
+
${projectContext}
|
|
175
|
+
|
|
111
176
|
## 拆分原则
|
|
112
177
|
1. 拆分粒度:每个小块 ≤ 30 分钟工作量
|
|
113
178
|
2. 拆分方向:数据层 → API层 → UI层 / 核心逻辑 → 边界处理
|
|
114
179
|
3. 依赖关系:确保后续任务可依赖前面的成果
|
|
115
|
-
4.
|
|
180
|
+
4. 文件预估:基于项目目录结构,预估每个任务涉及的文件路径
|
|
181
|
+
5. 技术栈对齐:使用项目已有的框架和库,不引入新依赖
|
|
116
182
|
|
|
117
183
|
## 输出格式
|
|
118
184
|
请按以下格式输出:
|
|
@@ -125,7 +191,7 @@ ${taskDescription}
|
|
|
125
191
|
拆分为 N 个小任务:
|
|
126
192
|
1. [任务名称]
|
|
127
193
|
描述:[简要描述]
|
|
128
|
-
预估文件:[
|
|
194
|
+
预估文件:[基于项目结构的文件路径列表]
|
|
129
195
|
预估时间:[分钟]
|
|
130
196
|
|
|
131
197
|
2. [任务名称]
|
|
@@ -137,12 +203,13 @@ ${taskDescription}
|
|
|
137
203
|
|
|
138
204
|
## 注意事项
|
|
139
205
|
- 如果任务过于复杂无法拆分,明确说明并建议使用完整流程
|
|
140
|
-
-
|
|
206
|
+
- 保持任务块独立性,便于验证和提交
|
|
207
|
+
- 文件路径必须基于实际项目结构`,
|
|
141
208
|
run_in_background: false
|
|
142
209
|
})
|
|
143
210
|
```
|
|
144
211
|
|
|
145
|
-
## Step
|
|
212
|
+
## Step 5: 用 TodoWrite 管理任务状态
|
|
146
213
|
|
|
147
214
|
**将拆分的任务写入 TodoWrite:**
|
|
148
215
|
|
|
@@ -156,13 +223,13 @@ TodoWrite({
|
|
|
156
223
|
})
|
|
157
224
|
```
|
|
158
225
|
|
|
159
|
-
|
|
226
|
+
状态同时在会话和 `.openmatrix/feature-session.json` 中管理。
|
|
160
227
|
|
|
161
|
-
## Step
|
|
228
|
+
## Step 6: 问答确认
|
|
162
229
|
|
|
163
230
|
**⛔ 执行前必须确认所有配置**
|
|
164
231
|
|
|
165
|
-
**
|
|
232
|
+
**6.1 质量等级(必选)**
|
|
166
233
|
|
|
167
234
|
AskUserQuestion: `header: "质量等级"`, `multiSelect: false`
|
|
168
235
|
|
|
@@ -174,7 +241,7 @@ AskUserQuestion: `header: "质量等级"`, `multiSelect: false`
|
|
|
174
241
|
| `balanced (推荐)` | >60%覆盖率 + Lint + 安全扫描 — 日常开发 |
|
|
175
242
|
| `fast` | 无质量门禁 — 快速原型/验证 |
|
|
176
243
|
|
|
177
|
-
**
|
|
244
|
+
**6.2 E2E 测试(仅 strict/balanced)**
|
|
178
245
|
|
|
179
246
|
AskUserQuestion: `header: "E2E 测试"`, `multiSelect: false`
|
|
180
247
|
|
|
@@ -186,7 +253,7 @@ AskUserQuestion: `header: "E2E 测试"`, `multiSelect: false`
|
|
|
186
253
|
| `视觉验证` | 需要浏览器可视化验证 UI 样式 |
|
|
187
254
|
| `不需要 (推荐)` | 仅单元测试和集成测试 |
|
|
188
255
|
|
|
189
|
-
**
|
|
256
|
+
**6.3 确认拆分计划**
|
|
190
257
|
|
|
191
258
|
AskUserQuestion: `header: "确认计划"`, `multiSelect: false`
|
|
192
259
|
|
|
@@ -197,16 +264,65 @@ AskUserQuestion: `header: "确认计划"`, `multiSelect: false`
|
|
|
197
264
|
| `开始执行 (推荐)` | 按计划逐个执行 |
|
|
198
265
|
| `调整计划` | 重新拆分任务 |
|
|
199
266
|
|
|
200
|
-
## Step
|
|
267
|
+
## Step 7: 逐个执行小任务
|
|
201
268
|
|
|
202
269
|
**对 TodoWrite 中的每个任务(按顺序):**
|
|
203
270
|
|
|
204
|
-
**
|
|
271
|
+
**7.1 更新状态为 in_progress**
|
|
205
272
|
```typescript
|
|
206
273
|
TodoWrite({ todos: [...] }) // 当前任务标记 in_progress
|
|
207
274
|
```
|
|
208
275
|
|
|
209
|
-
**
|
|
276
|
+
**7.2 歧义检测与处理**
|
|
277
|
+
|
|
278
|
+
Agent 输出中可能包含歧义报告:
|
|
279
|
+
|
|
280
|
+
当 Agent 输出包含以下标记时,表示检测到歧义:
|
|
281
|
+
```
|
|
282
|
+
<AMBIGUITY_REPORT>
|
|
283
|
+
{
|
|
284
|
+
"ambiguities": [
|
|
285
|
+
{
|
|
286
|
+
"type": "missing_info" | "conflicting_req" | "unclear_scope" | "tech_choice" | "edge_case",
|
|
287
|
+
"severity": "critical" | "high" | "medium" | "low",
|
|
288
|
+
"description": "歧义描述",
|
|
289
|
+
"suggestions": ["建议1", "建议2"]
|
|
290
|
+
}
|
|
291
|
+
],
|
|
292
|
+
"overallSeverity": "critical" | "high" | "medium" | "low"
|
|
293
|
+
}
|
|
294
|
+
</AMBIGUITY_REPORT>
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
**5 种歧义类型说明:**
|
|
298
|
+
|
|
299
|
+
| 类型 | 说明 | 示例 |
|
|
300
|
+
|------|------|------|
|
|
301
|
+
| `missing_info` | 缺失关键信息 | "未指定数据库类型" |
|
|
302
|
+
| `conflicting_req` | 需求冲突 | "既要高性能又要低成本" |
|
|
303
|
+
| `unclear_scope` | 范围不清晰 | "是否包含历史数据处理?" |
|
|
304
|
+
| `tech_choice` | 技术选型歧义 | "用 REST 还是 GraphQL?" |
|
|
305
|
+
| `edge_case` | 边界情况未定义 | "超过限制时如何处理?" |
|
|
306
|
+
|
|
307
|
+
**歧义处理策略(轻量模式):**
|
|
308
|
+
|
|
309
|
+
| 严重程度 | 处理方式 |
|
|
310
|
+
|---------|---------|
|
|
311
|
+
| **Critical/High** | AskUserQuestion 立即确认 |
|
|
312
|
+
| **Medium/Low** | 写入进度文件,继续执行 |
|
|
313
|
+
|
|
314
|
+
**AskUserQuestion 处理(仅 Critical/High):**
|
|
315
|
+
|
|
316
|
+
AskUserQuestion: `header: "歧义确认"`, `multiSelect: false`
|
|
317
|
+
**question:** 检测到 ${severity} 级歧义:${description}。请确认处理方式
|
|
318
|
+
|
|
319
|
+
| label | description |
|
|
320
|
+
|-------|-------------|
|
|
321
|
+
| 提供信息 | 回答歧义相关问题,继续执行 |
|
|
322
|
+
| 跳过任务块 | 标记当前任务块为可选,继续执行下一个 |
|
|
323
|
+
| 修改方案 | 根据歧义调整方案后继续 |
|
|
324
|
+
|
|
325
|
+
**7.3 调用 Agent 执行**
|
|
210
326
|
|
|
211
327
|
```typescript
|
|
212
328
|
Agent({
|
|
@@ -214,7 +330,16 @@ Agent({
|
|
|
214
330
|
description: task.content,
|
|
215
331
|
prompt: `你是实现专家。执行以下任务块。
|
|
216
332
|
|
|
217
|
-
##
|
|
333
|
+
## 项目上下文(请读取文件)
|
|
334
|
+
请先读取 .openmatrix/feature-context.md 了解项目上下文。
|
|
335
|
+
|
|
336
|
+
## 前序任务结果(请读取文件)
|
|
337
|
+
请读取 .openmatrix/feature-progress.md 了解前序 Agent 的决策和发现。
|
|
338
|
+
|
|
339
|
+
## 整体任务
|
|
340
|
+
${taskDescription}
|
|
341
|
+
|
|
342
|
+
## 当前任务
|
|
218
343
|
- 任务名称:${task.content}
|
|
219
344
|
- 预估文件:${task.files}
|
|
220
345
|
- 质量等级:${quality}
|
|
@@ -236,16 +361,17 @@ ${quality === 'strict' ? `
|
|
|
236
361
|
`}
|
|
237
362
|
|
|
238
363
|
## 实施原则
|
|
239
|
-
1.
|
|
240
|
-
2.
|
|
241
|
-
3.
|
|
242
|
-
4.
|
|
364
|
+
1. 先阅读预估文件中的现有代码,理解上下文后再动手
|
|
365
|
+
2. 只修改当前任务相关的文件
|
|
366
|
+
3. 不做"顺便"的重构或优化
|
|
367
|
+
4. 确保代码风格与项目现有代码一致
|
|
368
|
+
5. 完成后运行相关测试验证
|
|
243
369
|
|
|
244
370
|
## 完成后输出
|
|
245
371
|
请按以下格式输出(不超过3行):
|
|
246
|
-
1.
|
|
372
|
+
1. 关键决策:[做了什么决策及原因]
|
|
247
373
|
2. 创建/修改的文件列表
|
|
248
|
-
3.
|
|
374
|
+
3. 对后续任务的建议或注意事项
|
|
249
375
|
|
|
250
376
|
## 禁止行为
|
|
251
377
|
❌ 执行 git commit(由主流程处理)
|
|
@@ -263,47 +389,79 @@ ${quality === 'strict' ? `
|
|
|
263
389
|
})
|
|
264
390
|
```
|
|
265
391
|
|
|
266
|
-
**
|
|
392
|
+
**7.3 等待 Agent 完成,写入进度文件**
|
|
393
|
+
|
|
394
|
+
Agent 完成后,将输出中的关键决策和建议写入 `.openmatrix/feature-progress.md` 文件:
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
# Agent 完成后,追加写入进度文件
|
|
398
|
+
echo "" >> .openmatrix/feature-progress.md
|
|
399
|
+
echo "## 任务 N: ${task.content}" >> .openmatrix/feature-progress.md
|
|
400
|
+
echo "${agentOutput}" >> .openmatrix/feature-progress.md
|
|
401
|
+
echo "" >> .openmatrix/feature-progress.md
|
|
402
|
+
```
|
|
267
403
|
|
|
268
|
-
|
|
404
|
+
这样后续 Agent 能通过读取文件获取前序 Agent 的决策和发现。
|
|
405
|
+
|
|
406
|
+
## Step 8: 验证(按质量等级)
|
|
269
407
|
|
|
270
408
|
**⛔ 验证不通过不得提交,必须停止等待修复**
|
|
271
409
|
|
|
272
410
|
每个任务完成后,根据质量等级执行验证:
|
|
273
411
|
|
|
274
|
-
**
|
|
412
|
+
**8.1 执行验证命令**
|
|
275
413
|
|
|
276
414
|
| 质量等级 | 验证命令 |
|
|
277
415
|
|---------|---------|
|
|
278
|
-
| `strict` | `npm test -- --run && npm run lint && npm run test:coverage` |
|
|
279
|
-
| `balanced` | `npm test -- --run && npm run lint` |
|
|
416
|
+
| `strict` | `npm test -- --run && npm run lint && npm run test:coverage && npm audit --audit-level=moderate` |
|
|
417
|
+
| `balanced` | `npm test -- --run && npm run lint && npm audit --audit-level=moderate` |
|
|
280
418
|
| `fast` | 跳过验证 |
|
|
281
419
|
|
|
282
|
-
|
|
420
|
+
**覆盖率阈值检查说明:**
|
|
421
|
+
- strict 模式要求 >80% 覆盖率,`npm run test:coverage` 命令应输出覆盖率报告
|
|
422
|
+
- balanced 模式要求 >60% 覆盖率,建议定期检查覆盖率报告
|
|
423
|
+
|
|
424
|
+
**8.2 E2E 验证(如果用户选择)**
|
|
283
425
|
- 功能测试:`npm run test:e2e`
|
|
284
426
|
- 视觉验证:启动 Playwright 截图对比
|
|
285
427
|
|
|
286
|
-
**
|
|
428
|
+
**8.3 验证结果自动判断**
|
|
287
429
|
|
|
288
|
-
|
|
289
|
-
**question:** 任务验证通过了吗?
|
|
430
|
+
验证命令执行后,根据退出码自动判断结果:
|
|
290
431
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
432
|
+
```bash
|
|
433
|
+
# 执行验证命令并捕获结果
|
|
434
|
+
if npm test -- --run && npm run lint; then
|
|
435
|
+
# 验证成功
|
|
436
|
+
echo "✅ 验证通过"
|
|
437
|
+
else
|
|
438
|
+
# 验证失败
|
|
439
|
+
echo "❌ 验证失败"
|
|
440
|
+
npm test -- --run 2>&1 | tail -30 # 展示失败详情
|
|
441
|
+
exit 1
|
|
442
|
+
fi
|
|
443
|
+
```
|
|
295
444
|
|
|
296
|
-
|
|
297
|
-
-
|
|
445
|
+
**验证失败处理:**
|
|
446
|
+
- 自动展示验证失败详情(最后 30 行输出)
|
|
298
447
|
- 停止执行流程
|
|
299
|
-
- 提示用户修复后使用 `/om:resume` 继续
|
|
448
|
+
- 提示用户修复后使用 `/om:resume-feature` 继续
|
|
449
|
+
|
|
450
|
+
**验证成功处理:**
|
|
451
|
+
- 继续执行 Step 9 Git 提交
|
|
300
452
|
|
|
301
|
-
## Step
|
|
453
|
+
## Step 9: 分步 Git 提交
|
|
302
454
|
|
|
303
455
|
**⛔ 验证通过后必须立即提交,不得积累多个任务块**
|
|
304
456
|
|
|
457
|
+
**只提交本次任务修改的文件(而非 `git add -A`):**
|
|
458
|
+
|
|
305
459
|
```bash
|
|
306
|
-
|
|
460
|
+
# 获取本次任务修改的文件列表(从 Agent 输出中提取)
|
|
461
|
+
git status --porcelain
|
|
462
|
+
|
|
463
|
+
# 只提交任务涉及的文件
|
|
464
|
+
git add ${modifiedFiles}
|
|
307
465
|
git commit -m "$(cat <<'EOF'
|
|
308
466
|
feat(feature): ${originalTask} - ${currentChunk}
|
|
309
467
|
|
|
@@ -319,18 +477,18 @@ EOF
|
|
|
319
477
|
1. **更新 TodoWrite 状态为 completed**
|
|
320
478
|
2. **继续下一个任务**
|
|
321
479
|
|
|
322
|
-
## Step
|
|
480
|
+
## Step 10: 全部任务完成后
|
|
323
481
|
|
|
324
482
|
**检查 TodoWrite 所有任务状态为 `completed`:**
|
|
325
483
|
|
|
326
|
-
**
|
|
484
|
+
**10.1 运行最终整体验证**
|
|
327
485
|
```bash
|
|
328
486
|
npm test -- --run
|
|
329
487
|
```
|
|
330
488
|
|
|
331
|
-
**
|
|
489
|
+
**10.2 收集所有任务的执行摘要**
|
|
332
490
|
|
|
333
|
-
## Step
|
|
491
|
+
## Step 11: 输出执行摘要并清理
|
|
334
492
|
|
|
335
493
|
**展示执行摘要:**
|
|
336
494
|
|
|
@@ -356,8 +514,8 @@ ${decisions}
|
|
|
356
514
|
|
|
357
515
|
**清理操作:**
|
|
358
516
|
- TodoWrite 所有任务保持 completed 状态
|
|
359
|
-
-
|
|
360
|
-
-
|
|
517
|
+
- 持久化文件可选择保留或手动清理
|
|
518
|
+
- 任务完成后状态标记为 `completed`
|
|
361
519
|
|
|
362
520
|
</process>
|
|
363
521
|
|
|
@@ -410,12 +568,12 @@ $ARGUMENTS
|
|
|
410
568
|
|
|
411
569
|
## 与其他指令的区别
|
|
412
570
|
|
|
413
|
-
| 指令 | 适用场景 | 任务文件 | 问答 | 验证 |
|
|
414
|
-
|
|
415
|
-
| `/om:feature` | 小需求(≤100字,单一功能) | ❌ | 质量+E2E | 按等级 |
|
|
416
|
-
| `/om:start` | 标准任务 | ✅ | 质量+E2E+模式 | 按等级 |
|
|
417
|
-
| `/om:brainstorm` | 复杂任务 | ✅ | 设计问答 | 按等级 |
|
|
418
|
-
| `/om:auto` | 全自动执行 | ✅ | 无 | 按等级 |
|
|
571
|
+
| 指令 | 适用场景 | 任务文件 | 问答 | 验证 | 持久化 |
|
|
572
|
+
|-----|---------|:-------:|:----:|:----:|:-----:|
|
|
573
|
+
| `/om:feature` | 小需求(≤100字,单一功能) | ❌ | 质量+E2E | 按等级 | 必须 |
|
|
574
|
+
| `/om:start` | 标准任务 | ✅ | 质量+E2E+模式 | 按等级 | 必须 |
|
|
575
|
+
| `/om:brainstorm` | 复杂任务 | ✅ | 设计问答 | 按等级 | 必须 |
|
|
576
|
+
| `/om:auto` | 全自动执行 | ✅ | 无 | 按等级 | 必须 |
|
|
419
577
|
|
|
420
578
|
## 路由触发条件
|
|
421
579
|
|
|
@@ -428,13 +586,14 @@ $ARGUMENTS
|
|
|
428
586
|
## 错误处理流程
|
|
429
587
|
|
|
430
588
|
```
|
|
431
|
-
验证失败 → 停止执行 → 展示错误详情 → 提示用户修复 →
|
|
589
|
+
验证失败 → 停止执行 → 展示错误详情 → 提示用户修复 → 使用 /om:resume-feature 恢复
|
|
432
590
|
```
|
|
433
591
|
|
|
434
592
|
| 错误 | 处理 |
|
|
435
593
|
|-----|-----|
|
|
436
594
|
| 测试失败 | 停止,提示用户修复 |
|
|
437
595
|
| Lint 错误 | 停止,提示用户修复 |
|
|
596
|
+
| 安全扫描失败 | 停止,提示用户修复 |
|
|
438
597
|
| Agent 超时 | 询问重试或跳过 |
|
|
439
598
|
| Git 失败 | 提示手动处理 |
|
|
440
599
|
|
|
@@ -470,8 +629,14 @@ type: feat/fix/test/refactor/docs
|
|
|
470
629
|
|
|
471
630
|
## 恢复执行
|
|
472
631
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
632
|
+
如果验证失败需要修复:
|
|
633
|
+
|
|
634
|
+
使用 `/om:resume-feature` 继续执行(读取 `.openmatrix/feature-session.json`)
|
|
635
|
+
|
|
636
|
+
## 挡久化文件说明
|
|
637
|
+
|
|
638
|
+
执行过程中产生以下文件:
|
|
639
|
+
- `.openmatrix/feature-session.json` - 会话状态(任务列表、当前索引、质量等级)
|
|
640
|
+
- `.openmatrix/feature-context.md` - 项目上下文
|
|
641
|
+
- `.openmatrix/feature-progress.md` - Agent 执行进度
|
|
477
642
|
</notes>
|