openmatrix 0.2.15 → 0.2.17

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/skills/resume.md CHANGED
@@ -1,68 +1,260 @@
1
- ---
2
- name: om:resume
3
- description: "Use when resuming interrupted or paused task execution. Triggers on: 恢复, resume, continue task, 继续执行, interrupted, 中断, paused, 暂停, retry from checkpoint, 从断点继续."
4
- ---
5
-
6
- <NO-OTHER-SKILLS>
7
- 执行此技能时,不得调用 superpowers、gsd 或其他任务编排相关的技能。OpenMatrix 独立运行,不依赖外部任务编排系统。
8
- </NO-OTHER-SKILLS>
9
-
10
- <objective>
11
- 恢复因中断、超时、失败等原因暂停的任务。
12
- </objective>
13
-
14
- <process>
15
- 1. 读取 `.openmatrix/state.json` 获取当前状态
16
- 2. 识别可恢复的任务:
17
- - status=in_progress (中断)
18
- - status=retry_queue (等待重试)
19
- - status=failed (可重试)
20
- - 全局 status=paused
21
-
22
- 3. 展示可恢复任务列表:
23
-
24
- ```
25
- 🔄 可恢复任务
26
-
27
- [1] TASK-001: 任务名称 (中断)
28
- [2] TASK-003: 任务名称 (重试队列, 已重试2次)
29
- [3] TASK-005: 任务名称 (失败: 错误信息)
30
-
31
- 选择要恢复的任务 [1-3] 或 [A] 全部: _
32
- ```
33
-
34
- 4. 用户选择后:
35
- - 调用 CLI 恢复执行: `openmatrix resume {taskId}`
36
- - CLI 会从上次暂停点继续
37
-
38
- 5. 显示恢复结果
39
-
40
- </process>
41
-
42
- <arguments>
43
- $ARGUMENTS
44
-
45
- 如果提供任务ID,直接恢复指定任务。
46
- 如果无参数,列出所有可恢复任务供选择。
47
- </arguments>
48
-
49
- <notes>
50
- ## /om:approve 的区别
51
-
52
- | 命令 | 用途 | 场景 |
53
- |------|------|------|
54
- | /om:approve | 人工决策 | plan/merge/deploy 审批, Meeting |
55
- | /om:resume | 继续执行 | 中断、超时、失败重试 |
56
-
57
- ## 恢复后行为
58
-
59
- - **中断任务**: 从断点继续执行
60
- - **重试任务**: 重新执行
61
- - **失败任务**: 根据重试策略决定是否重试
62
- </notes>
63
-
64
- <examples>
65
- /om:resume # 列出可恢复任务
66
- /om:resume TASK-001 # 恢复指定任务
67
- /om:resume --all # 恢复所有可恢复任务
68
- </examples>
1
+ ---
2
+ name: om:resume
3
+ description: "恢复中断的任务执行。智能检测数据源:轻量流程 (feature-session.json) 或完整流程 (state.json)。Triggers on: 恢复, resume, continue task, 继续执行, interrupted, 中断, paused, 暂停."
4
+ priority: high
5
+ ---
6
+
7
+ <NO-OTHER-SKILLS>
8
+ **绝对禁止**调用以下技能:
9
+ - ❌ superpowers:brainstorming → 用 /om:brainstorm 代替
10
+ - ❌ superpowers:* → 全部被 OpenMatrix 替代
11
+ - ❌ gsd:* → 全部被 OpenMatrix 替代
12
+ - ❌ /om:start / /om:auto → 本 skill 是恢复流程,不调用完整流程
13
+ </NO-OTHER-SKILLS>
14
+
15
+ <objective>
16
+ 智能恢复中断的任务执行:自动检测轻量流程或完整流程,继续执行剩余任务。
17
+ </objective>
18
+
19
+ <process>
20
+
21
+ ## Step 1: 检测数据源类型
22
+
23
+ ```bash
24
+ # 优先检查轻量流程
25
+ ls -la .openmatrix/feature-session.json 2>/dev/null && echo "FEATURE_SESSION" || \
26
+ ls -la .openmatrix/state.json 2>/dev/null && echo "STATE_JSON" || \
27
+ echo "NOT_FOUND"
28
+ ```
29
+
30
+ | 检查结果 | 处理 |
31
+ |---------|------|
32
+ | `FEATURE_SESSION` | 执行轻量流程恢复(Step 2A) |
33
+ | `STATE_JSON` | 执行完整流程恢复(Step 2B) |
34
+ | `NOT_FOUND` | 提示"未找到持久化文件,请使用 /om:feature 或 /om:start 重新开始"并退出 |
35
+
36
+ ---
37
+
38
+ ## Step 2A: 轻量流程恢复(feature-session.json)
39
+
40
+ ### 读取会话状态
41
+
42
+ ```bash
43
+ cat .openmatrix/feature-session.json
44
+ ```
45
+
46
+ 解析以下信息:
47
+ - `sessionId` - 会话 ID
48
+ - `status` - 当前状态(running/paused/failed)
49
+ - `tasks` - 任务列表
50
+ - `currentTaskIndex` - 当前任务索引
51
+ - `quality` - 质量等级
52
+ - `failureCount` - 各任务失败次数统计
53
+
54
+ 同时读取:
55
+ - `.openmatrix/feature-context.md` - 项目上下文
56
+ - `.openmatrix/feature-progress.md` - Agent 执行进度
57
+
58
+ ### 恢复 TodoWrite 状态
59
+
60
+ ```typescript
61
+ TodoWrite({
62
+ todos: tasks.map((task, index) => ({
63
+ activeForm: `正在执行 ${task.content}`,
64
+ content: task.content,
65
+ status: index < currentTaskIndex ? "completed" :
66
+ index === currentTaskIndex ? "in_progress" : "pending"
67
+ }))
68
+ })
69
+ ```
70
+
71
+ ### 展示恢复状态
72
+
73
+ ```
74
+ 🔄 恢复轻量会话:${sessionId}
75
+
76
+ 📊 当前状态:
77
+ - 质量等级:${quality}
78
+ - 已完成任务:${completedCount}/${totalCount}
79
+ - 当前任务:${currentTask.content}
80
+ - 失败次数:${failureCount[currentTaskIndex] || 0}
81
+
82
+ 📝 已完成的决策(来自 feature-progress.md):
83
+ ${显示前序任务的关键决策}
84
+ ```
85
+
86
+ ### 继续执行当前任务
87
+
88
+ 从 `currentTaskIndex` 位置继续:
89
+
90
+ **如果当前任务是 in_progress 状态(之前失败):**
91
+
92
+ AskUserQuestion: `header: "继续方式"`, `multiSelect: false`
93
+ **question:** 当前任务之前验证失败,如何继续?
94
+
95
+ | label | description |
96
+ |-------|-------------|
97
+ | `重试当前任务` | 重新执行当前任务块 |
98
+ | `跳过当前任务` | 标记为完成,继续下一任务(风险较高) |
99
+ | `重新拆分` | 返回 /om:feature 重新规划 |
100
+
101
+ **如果当前任务是 pending 状态(正常恢复):**
102
+
103
+ 调用 Agent 执行:
104
+
105
+ ```typescript
106
+ Agent({
107
+ subagent_type: "general-purpose",
108
+ description: currentTask.content,
109
+ prompt: `你是实现专家。执行以下任务块。
110
+
111
+ ## 项目上下文(请读取文件)
112
+ 请先读取 .openmatrix/feature-context.md 了解项目上下文。
113
+
114
+ ## 前序任务结果(请读取文件)
115
+ 请读取 .openmatrix/feature-progress.md 了解前序 Agent 的决策和发现。
116
+
117
+ ## 当前任务
118
+ - 任务名称:${currentTask.content}
119
+ - 预估文件:${currentTask.files}
120
+ - 质量等级:${quality}
121
+
122
+ ## 质量要求
123
+ ${quality === 'strict' ? `
124
+ - 必须使用 TDD:先写测试,再写实现
125
+ - 测试覆盖率要求:>80%
126
+ - 必须通过严格 Lint
127
+ - 必须通过安全扫描
128
+ ` : quality === 'balanced' ? `
129
+ - 测试覆盖率要求:>60%
130
+ - 必须通过 Lint
131
+ - 必须通过安全扫描
132
+ ` : `
133
+ - 无质量门禁要求
134
+ `}
135
+
136
+ ## 禁止行为
137
+ ❌ 执行 git commit(由主流程处理)
138
+ ❌ 执行 git checkout/merge/pull/push/rebase/branch
139
+ ❌ 修改与当前任务无关的文件
140
+
141
+ ✅ 允许:git status, git diff, git log`,
142
+ run_in_background: true
143
+ })
144
+ ```
145
+
146
+ ### 验证(按质量等级)
147
+
148
+ | 质量等级 | 验证命令 |
149
+ |---------|---------|
150
+ | `strict` | `npm test -- --run && npm run lint && npm audit --audit-level=moderate` |
151
+ | `balanced` | `npm test -- --run && npm run lint && npm audit --audit-level=moderate` |
152
+ | `fast` | 跳过验证 |
153
+
154
+ 验证失败处理:
155
+ - 更新 `failureCount`
156
+ - 同一任务失败 3 次,提示质疑拆分方案
157
+ - 停止执行,提示再次使用 `/om:resume`
158
+
159
+ ### Git 提交与状态更新
160
+
161
+ 验证通过后提交并更新 `currentTaskIndex`。
162
+
163
+ ---
164
+
165
+ ## Step 2B: 完整流程恢复(state.json)
166
+
167
+ ### 读取全局状态
168
+
169
+ ```bash
170
+ cat .openmatrix/state.json
171
+ ```
172
+
173
+ ### 识别可恢复的任务
174
+
175
+ - status=in_progress (中断)
176
+ - status=retry_queue (等待重试)
177
+ - status=failed (可重试)
178
+ - 全局 status=paused
179
+
180
+ ### 展示可恢复任务列表
181
+
182
+ ```
183
+ 🔄 可恢复任务
184
+
185
+ [1] TASK-001: 任务名称 (中断)
186
+ [2] TASK-003: 任务名称 (重试队列, 已重试2次)
187
+ [3] TASK-005: 任务名称 (失败: 错误信息)
188
+
189
+ 选择要恢复的任务 [1-3] 或 [A] 全部: _
190
+ ```
191
+
192
+ ### 用户选择后
193
+
194
+ 调用 CLI 恢复执行: `openmatrix resume {taskId}`
195
+
196
+ CLI 会从上次暂停点继续。
197
+
198
+ ### 显示恢复结果
199
+
200
+ ---
201
+
202
+ </process>
203
+
204
+ <arguments>
205
+ $ARGUMENTS
206
+
207
+ 如果提供任务ID,直接恢复指定任务。
208
+ 如果无参数,自动检测数据源并列出可恢复任务供选择。
209
+ </arguments>
210
+
211
+ <notes>
212
+
213
+ ## 数据源检测优先级
214
+
215
+ | 优先级 | 数据源 | 来源 skill |
216
+ |-------|--------|-----------|
217
+ | 1 | `.openmatrix/feature-session.json` | /om:feature |
218
+ | 2 | `.openmatrix/state.json` | /om:start |
219
+
220
+ ## 与 /om:approve 的区别
221
+
222
+ | 命令 | 用途 | 场景 |
223
+ |------|------|------|
224
+ | /om:approve | 人工决策 | plan/merge/deploy 审批, Meeting |
225
+ | /om:resume | 继续执行 | 中断、超时、失败重试 |
226
+
227
+ ## 恢复后行为
228
+
229
+ **轻量流程**:
230
+ - 从断点继续执行任务块
231
+ - 验证失败可重试
232
+
233
+ **完整流程**:
234
+ - 中断任务:从断点继续
235
+ - 重试任务:重新执行
236
+ - 失败任务:根据重试策略决定
237
+
238
+ ## 失败次数限制
239
+
240
+ 同一任务失败 3 次以上:
241
+ - 建议用户质疑拆分方案
242
+ - 提示可能需要切换到 `/om:start`
243
+
244
+ ## 持久化文件说明
245
+
246
+ | 文件 | 来源 | 内容 |
247
+ |-----|------|------|
248
+ | `feature-session.json` | /om:feature | 会话状态、任务列表、质量等级、失败次数 |
249
+ | `feature-context.md` | /om:feature | 项目上下文 |
250
+ | `feature-progress.md` | /om:feature | Agent 执行决策 |
251
+ | `state.json` | /om:start | 全局状态、任务状态、配置 |
252
+ | `tasks/*.json` | /om:start | 单个任务详情 |
253
+
254
+ </notes>
255
+
256
+ <examples>
257
+ /om:resume # 自动检测数据源,列出可恢复任务
258
+ /om:resume TASK-001 # 恢复指定任务(完整流程)
259
+ /om:resume --all # 恢复所有可恢复任务
260
+ </examples>
package/skills/start.md CHANGED
@@ -382,14 +382,77 @@ openmatrix complete TASK-XXX --success --summary "决策: xxx; 文件: xxx"
382
382
  # 提交验证(防止 commit 静默失败):
383
383
  git status --porcelain # 检查是否有未提交的文件
384
384
  # 如果有未提交文件 → 必须手动提交:
385
- git add -A && git commit -m "feat(TASK-XXX): 任务标题"
385
+ git add . && git commit -m "feat(TASK-XXX): 任务标题"
386
386
 
387
387
  openmatrix step --json # 获取下一个任务 + 检查是否全部完成
388
388
  ```
389
389
  `openmatrix step` 会从磁盘读取真实状态,不依赖上下文记忆。
390
390
  </LOOP-ENFORCEMENT>
391
391
 
392
- 对每个任务**必须使用 Agent 工具**(禁止用 gsd-executor 或其他技能替代):
392
+ #### 11.1 歧义检测机制
393
+
394
+ **Agent 输出中可能包含歧义报告(JSON 格式):**
395
+
396
+ 当 Agent 输出包含以下标记时,表示检测到歧义:
397
+ ```
398
+ <AMBIGUITY_REPORT>
399
+ {
400
+ "ambiguities": [
401
+ {
402
+ "type": "missing_info" | "conflicting_req" | "unclear_scope" | "tech_choice" | "edge_case",
403
+ "severity": "critical" | "high" | "medium" | "low",
404
+ "description": "歧义描述",
405
+ "suggestions": ["建议1", "建议2"]
406
+ }
407
+ ],
408
+ "overallSeverity": "critical" | "high" | "medium" | "low"
409
+ }
410
+ </AMBIGUITY_REPORT>
411
+ ```
412
+
413
+ **5 种歧义类型说明:**
414
+
415
+ | 类型 | 说明 | 示例 |
416
+ |------|------|------|
417
+ | `missing_info` | 缺失关键信息 | "未指定数据库类型" |
418
+ | `conflicting_req` | 需求冲突 | "既要高性能又要低成本" |
419
+ | `unclear_scope` | 范围不清晰 | "是否包含历史数据处理?" |
420
+ | `tech_choice` | 技术选型歧义 | "用 REST 还是 GraphQL?" |
421
+ | `edge_case` | 边界情况未定义 | "超过限制时如何处理?" |
422
+
423
+ #### 11.2 歧义处理策略
424
+
425
+ 根据 `overallSeverity` 和执行模式选择处理方式:
426
+
427
+ | 执行模式 | Critical/High | Medium/Low |
428
+ |---------|--------------|------------|
429
+ | **全自动执行** | Meeting + 继续执行 | Meeting + 继续执行 |
430
+ | **关键节点确认** | AskUserQuestion | Meeting + 继续执行 |
431
+ | **每阶段确认** | AskUserQuestion | Meeting + 继续执行 |
432
+
433
+ **Meeting 处理(写入阻塞记录):**
434
+ ```bash
435
+ # 将歧义信息写入 Meeting 记录,继续执行其他任务
436
+ openmatrix meeting --create --task TASK-XXX --reason "歧义: ${description}" --severity ${severity}
437
+ ```
438
+
439
+ **AskUserQuestion 处理(交互确认):**
440
+
441
+ AskUserQuestion: `header: "歧义确认"`, `multiSelect: false`
442
+ **question:** 检测到 ${severity} 级歧义:${description}。请确认处理方式
443
+
444
+ | label | description |
445
+ |-------|-------------|
446
+ | 提供信息 | 回答歧义相关问题,继续执行 |
447
+ | 跳过任务 | 标记当前任务为可选,继续执行其他任务 |
448
+ | 修改方案 | 根据歧义调整任务方案后继续 |
449
+
450
+ 用户选择后:
451
+ - **提供信息** → 将用户输入作为上下文注入,继续执行当前任务
452
+ - **跳过任务** → `openmatrix complete TASK-XXX --skip --reason "用户选择跳过"`
453
+ - **修改方案** → 更新任务方案,重新执行当前任务
454
+
455
+ #### 11.3 执行 Agent 任务
393
456
 
394
457
  ```typescript
395
458
  Agent({
@@ -538,7 +601,7 @@ openmatrix meeting --list
538
601
 
539
602
  所有任务完成后,执行最终 Git 提交(**必须使用 HEREDOC 格式**):
540
603
  ```bash
541
- git add -A && git commit -m "$(cat <<'EOF'
604
+ git add . && git commit -m "$(cat <<'EOF'
542
605
  feat: 完成所有任务 - 任务总标题
543
606
 
544
607
  改动点1