openmatrix 0.1.0
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/README.md +512 -0
- package/dist/agents/agent-runner.d.ts +152 -0
- package/dist/agents/agent-runner.js +656 -0
- package/dist/agents/base-agent.d.ts +46 -0
- package/dist/agents/base-agent.js +17 -0
- package/dist/agents/impl/coder-agent.d.ts +17 -0
- package/dist/agents/impl/coder-agent.js +96 -0
- package/dist/agents/impl/executor-agent.d.ts +32 -0
- package/dist/agents/impl/executor-agent.js +168 -0
- package/dist/agents/impl/index.d.ts +6 -0
- package/dist/agents/impl/index.js +17 -0
- package/dist/agents/impl/planner-agent.d.ts +24 -0
- package/dist/agents/impl/planner-agent.js +126 -0
- package/dist/agents/impl/researcher-agent.d.ts +17 -0
- package/dist/agents/impl/researcher-agent.js +133 -0
- package/dist/agents/impl/reviewer-agent.d.ts +17 -0
- package/dist/agents/impl/reviewer-agent.js +120 -0
- package/dist/agents/impl/tester-agent.d.ts +17 -0
- package/dist/agents/impl/tester-agent.js +110 -0
- package/dist/cli/commands/approve.d.ts +2 -0
- package/dist/cli/commands/approve.js +87 -0
- package/dist/cli/commands/meeting.d.ts +2 -0
- package/dist/cli/commands/meeting.js +245 -0
- package/dist/cli/commands/report.d.ts +2 -0
- package/dist/cli/commands/report.js +202 -0
- package/dist/cli/commands/resume.d.ts +2 -0
- package/dist/cli/commands/resume.js +104 -0
- package/dist/cli/commands/retry.d.ts +2 -0
- package/dist/cli/commands/retry.js +79 -0
- package/dist/cli/commands/start.d.ts +2 -0
- package/dist/cli/commands/start.js +252 -0
- package/dist/cli/commands/status.d.ts +2 -0
- package/dist/cli/commands/status.js +226 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +26 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +9 -0
- package/dist/orchestrator/ai-reviewer.d.ts +50 -0
- package/dist/orchestrator/ai-reviewer.js +326 -0
- package/dist/orchestrator/approval-manager.d.ts +62 -0
- package/dist/orchestrator/approval-manager.js +160 -0
- package/dist/orchestrator/executor.d.ts +114 -0
- package/dist/orchestrator/executor.js +325 -0
- package/dist/orchestrator/full-test-runner.d.ts +122 -0
- package/dist/orchestrator/full-test-runner.js +335 -0
- package/dist/orchestrator/git-commit-manager.d.ts +75 -0
- package/dist/orchestrator/git-commit-manager.js +248 -0
- package/dist/orchestrator/interactive-question-generator.d.ts +90 -0
- package/dist/orchestrator/interactive-question-generator.js +312 -0
- package/dist/orchestrator/meeting-manager.d.ts +85 -0
- package/dist/orchestrator/meeting-manager.js +222 -0
- package/dist/orchestrator/phase-executor.d.ts +198 -0
- package/dist/orchestrator/phase-executor.js +796 -0
- package/dist/orchestrator/question-generator.d.ts +22 -0
- package/dist/orchestrator/question-generator.js +102 -0
- package/dist/orchestrator/retry-manager.d.ts +41 -0
- package/dist/orchestrator/retry-manager.js +83 -0
- package/dist/orchestrator/scheduler.d.ts +62 -0
- package/dist/orchestrator/scheduler.js +148 -0
- package/dist/orchestrator/state-machine.d.ts +53 -0
- package/dist/orchestrator/state-machine.js +124 -0
- package/dist/orchestrator/task-parser.d.ts +7 -0
- package/dist/orchestrator/task-parser.js +63 -0
- package/dist/orchestrator/task-planner.d.ts +71 -0
- package/dist/orchestrator/task-planner.js +316 -0
- package/dist/storage/file-store.d.ts +12 -0
- package/dist/storage/file-store.js +80 -0
- package/dist/storage/state-manager.d.ts +31 -0
- package/dist/storage/state-manager.js +202 -0
- package/dist/types/index.d.ts +193 -0
- package/dist/types/index.js +30 -0
- package/dist/utils/logger.d.ts +41 -0
- package/dist/utils/logger.js +166 -0
- package/dist/utils/progress-reporter.d.ts +116 -0
- package/dist/utils/progress-reporter.js +287 -0
- package/package.json +50 -0
- package/scripts/build-check.js +19 -0
- package/scripts/install-skills.js +51 -0
- package/skills/approve.md +253 -0
- package/skills/meeting.md +346 -0
- package/skills/report.md +100 -0
- package/skills/resume.md +68 -0
- package/skills/retry.md +61 -0
- package/skills/start.md +449 -0
- package/skills/status.md +46 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: om:approve
|
|
3
|
+
description: 审批待处理项(包括计划、合并、部署、Meeting)
|
|
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. **获取待审批列表**
|
|
16
|
+
```bash
|
|
17
|
+
openmatrix approve --list
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
2. **如果没有待审批项**
|
|
21
|
+
```
|
|
22
|
+
✅ 没有待审批项
|
|
23
|
+
|
|
24
|
+
当前执行状态:
|
|
25
|
+
- 运行中任务: X
|
|
26
|
+
- 已完成: Y
|
|
27
|
+
- 总计: Z
|
|
28
|
+
|
|
29
|
+
使用 /om:status 查看详情
|
|
30
|
+
```
|
|
31
|
+
如果有多个,让用户选择要处理的审批
|
|
32
|
+
|
|
33
|
+
3. **展示审批内容** (根据类型区分)
|
|
34
|
+
|
|
35
|
+
**Plan 审批:**
|
|
36
|
+
```
|
|
37
|
+
🔔 待审批: APPR-001
|
|
38
|
+
|
|
39
|
+
📋 类型: 📝 Plan 审批
|
|
40
|
+
🎯 任务: TASK-XXX
|
|
41
|
+
|
|
42
|
+
## 执行计划
|
|
43
|
+
|
|
44
|
+
### Phase 1: 设计阶段
|
|
45
|
+
└─ TASK-001: 架构设计 (15min)
|
|
46
|
+
|
|
47
|
+
### Phase 2: 开发阶段
|
|
48
|
+
├─ TASK-002: 数据模型 (20min)
|
|
49
|
+
└─ TASK-003: API 接口 (30min)
|
|
50
|
+
|
|
51
|
+
📊 统计
|
|
52
|
+
- 总任务: 3
|
|
53
|
+
- 预计耗时: ~1小时
|
|
54
|
+
|
|
55
|
+
## 选项
|
|
56
|
+
|
|
57
|
+
[A] ✅ 批准 - 按此计划执行
|
|
58
|
+
[B] ✏️ 修改 - 需要调整计划
|
|
59
|
+
[C] ❌ 拒绝 - 重新规划
|
|
60
|
+
|
|
61
|
+
请选择: _
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Meeting 审批 (阻塞问题):**
|
|
65
|
+
```
|
|
66
|
+
🔔 待审批: APPR-002
|
|
67
|
+
|
|
68
|
+
📋 类型: 🔴 Meeting (阻塞)
|
|
69
|
+
🎯 任务: TASK-XXX
|
|
70
|
+
|
|
71
|
+
## 阻塞问题描述
|
|
72
|
+
|
|
73
|
+
**原因**: [阻塞原因]
|
|
74
|
+
**时间**: [发生时间]
|
|
75
|
+
|
|
76
|
+
## 影响范围
|
|
77
|
+
|
|
78
|
+
- TASK-XXX: 下游任务1
|
|
79
|
+
- TASK-YYY: 下游任务2
|
|
80
|
+
|
|
81
|
+
## 可选操作
|
|
82
|
+
|
|
83
|
+
[A] 💡 提供信息 - 提供解决阻塞所需的信息
|
|
84
|
+
[B] ⏭️ 跳过任务 - 标记为可选,继续执行
|
|
85
|
+
[C] 🔄 修改方案 - 调整任务方案
|
|
86
|
+
[D] ❌ 取消执行 - 停止整个流程
|
|
87
|
+
|
|
88
|
+
请选择: _
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Meeting 审批 (技术决策):**
|
|
92
|
+
```
|
|
93
|
+
🔔 待审批: APPR-003
|
|
94
|
+
|
|
95
|
+
📋 类型: 🤔 Meeting (决策)
|
|
96
|
+
🎯 任务: TASK-XXX
|
|
97
|
+
|
|
98
|
+
## 决策点
|
|
99
|
+
|
|
100
|
+
**问题**: [需要决策的技术问题]
|
|
101
|
+
|
|
102
|
+
## 可选方案
|
|
103
|
+
|
|
104
|
+
1. 方案A - [描述] (推荐)
|
|
105
|
+
- 优点: ...
|
|
106
|
+
- 缺点: ...
|
|
107
|
+
|
|
108
|
+
2. 方案B - [描述]
|
|
109
|
+
- 优点: ...
|
|
110
|
+
- 缺点: ...
|
|
111
|
+
|
|
112
|
+
## 选项
|
|
113
|
+
|
|
114
|
+
[A] 选择方案1 (推荐)
|
|
115
|
+
[B] 选择方案2
|
|
116
|
+
[C] 自定义方案 - 输入您自己的方案
|
|
117
|
+
[D] 需要更多信息 - 暂不决策,先获取更多信息
|
|
118
|
+
|
|
119
|
+
请选择: _
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
4. **处理用户选择**
|
|
123
|
+
|
|
124
|
+
使用 `AskUserQuestion` 工具进行交互:
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
AskUserQuestion({
|
|
128
|
+
questions: [{
|
|
129
|
+
question: "请选择审批操作:",
|
|
130
|
+
header: "审批",
|
|
131
|
+
options: [
|
|
132
|
+
{ label: "批准", description: "批准并继续执行" },
|
|
133
|
+
{ label: "修改", description: "需要修改后重新提交" },
|
|
134
|
+
{ label: "拒绝", description: "拒绝此请求" }
|
|
135
|
+
],
|
|
136
|
+
multiSelect: false
|
|
137
|
+
}]
|
|
138
|
+
})
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
如果选择"提供信息"或"自定义方案",追加问题:
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
AskUserQuestion({
|
|
145
|
+
questions: [{
|
|
146
|
+
question: "请输入详细信息:",
|
|
147
|
+
header: "详情",
|
|
148
|
+
options: [] // 允许自由输入
|
|
149
|
+
}]
|
|
150
|
+
})
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
5. **执行审批**
|
|
154
|
+
```bash
|
|
155
|
+
openmatrix approve <approvalId> --action <approve|reject|modify> [--message "备注"]
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
6. **更新状态**
|
|
159
|
+
|
|
160
|
+
- 写入审批结果到 `approvals/{id}.json`
|
|
161
|
+
- 更新状态: approved / rejected
|
|
162
|
+
- 记录决策时间、决策人、决策理由
|
|
163
|
+
|
|
164
|
+
7. **后续处理**
|
|
165
|
+
|
|
166
|
+
**如果批准:**
|
|
167
|
+
- 更新关联任务状态
|
|
168
|
+
- 如果是 Meeting,解决 Meeting 并记录解决方案
|
|
169
|
+
- 自动继续执行
|
|
170
|
+
|
|
171
|
+
**如果拒绝/修改:**
|
|
172
|
+
- 任务进入相应状态
|
|
173
|
+
- 显示后续操作建议
|
|
174
|
+
|
|
175
|
+
</process>
|
|
176
|
+
|
|
177
|
+
<arguments>
|
|
178
|
+
$ARGUMENTS
|
|
179
|
+
|
|
180
|
+
如果提供审批ID,直接处理指定审批。
|
|
181
|
+
如果无参数,列出所有待审批项供选择。
|
|
182
|
+
</arguments>
|
|
183
|
+
|
|
184
|
+
<examples>
|
|
185
|
+
/om:approve # 列出所有待审批
|
|
186
|
+
/om:approve APPR-001 # 直接处理指定审批
|
|
187
|
+
</examples>
|
|
188
|
+
|
|
189
|
+
<notes>
|
|
190
|
+
## 审批类型说明
|
|
191
|
+
|
|
192
|
+
| 类型 | 图标 | 触发条件 | 处理方式 |
|
|
193
|
+
|------|------|---------|---------|
|
|
194
|
+
| plan | 📝 | 任务拆解完成 | 批准/修改/拒绝 |
|
|
195
|
+
| merge | 🔀 | 开发完成 | 批准/拒绝 |
|
|
196
|
+
| deploy | 🚀 | 部署前确认 | 批准/拒绝 |
|
|
197
|
+
| meeting | 🔴/🤔 | 阻塞/决策 | 交互式解决 |
|
|
198
|
+
|
|
199
|
+
## Meeting 审批特殊处理
|
|
200
|
+
|
|
201
|
+
Meeting 审批需要更细致的交互:
|
|
202
|
+
|
|
203
|
+
1. **阻塞问题**
|
|
204
|
+
- 提供信息 → 记录到任务,恢复执行
|
|
205
|
+
- 跳过任务 → 标记可选,继续下游
|
|
206
|
+
- 修改方案 → 调整参数,重新执行
|
|
207
|
+
- 取消执行 → 停止流程
|
|
208
|
+
|
|
209
|
+
2. **技术决策**
|
|
210
|
+
- 选择方案 → 记录决策,继续执行
|
|
211
|
+
- 自定义方案 → 记录新方案,继续执行
|
|
212
|
+
- 需要更多信息 → 暂停,等待调研
|
|
213
|
+
|
|
214
|
+
## CLI 命令
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
# 列出待审批
|
|
218
|
+
openmatrix approve --list
|
|
219
|
+
|
|
220
|
+
# 处理审批
|
|
221
|
+
openmatrix approve APPR-001 --action approve --message "同意此方案"
|
|
222
|
+
openmatrix approve APPR-001 --action reject --message "需要重新设计"
|
|
223
|
+
openmatrix approve APPR-001 --action modify --message "增加测试覆盖率要求"
|
|
224
|
+
|
|
225
|
+
# Meeting 专用
|
|
226
|
+
openmatrix approve APPR-002 --action provide-info --info "数据库连接字符串是..."
|
|
227
|
+
openmatrix approve APPR-002 --action skip --message "此任务可选"
|
|
228
|
+
openmatrix approve APPR-002 --action cancel --message "需求变更,停止执行"
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## 与执行循环的集成
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
执行循环检测到 pending approval
|
|
235
|
+
│
|
|
236
|
+
▼
|
|
237
|
+
调用 /om:approve
|
|
238
|
+
│
|
|
239
|
+
▼
|
|
240
|
+
用户审批决策
|
|
241
|
+
│
|
|
242
|
+
▼
|
|
243
|
+
更新审批状态
|
|
244
|
+
│
|
|
245
|
+
▼
|
|
246
|
+
如果是 Meeting:
|
|
247
|
+
├─ 解决 Meeting
|
|
248
|
+
└─ 恢复任务状态
|
|
249
|
+
│
|
|
250
|
+
▼
|
|
251
|
+
继续执行循环
|
|
252
|
+
```
|
|
253
|
+
</notes>
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: om:meeting
|
|
3
|
+
description: 查看和处理所有待确认的 Meeting(阻塞问题和决策点)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<NO-OTHER-SKILLS>
|
|
7
|
+
执行此技能时,不得调用 superpowers、gsd 或其他任务编排相关的技能。OpenMatrix 独立运行,不依赖外部任务编排系统。
|
|
8
|
+
</NO-OTHER-SKILLS>
|
|
9
|
+
|
|
10
|
+
<objective>
|
|
11
|
+
查看所有执行过程中记录的 Meeting,以交互式方式让用户确认或提供解决方案。
|
|
12
|
+
</objective>
|
|
13
|
+
|
|
14
|
+
<process>
|
|
15
|
+
1. **获取 Meeting 列表**
|
|
16
|
+
```bash
|
|
17
|
+
openmatrix meeting --list
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
2. **如果没有待处理 Meeting**
|
|
21
|
+
```
|
|
22
|
+
✅ 没有待处理的 Meeting
|
|
23
|
+
|
|
24
|
+
当前状态:
|
|
25
|
+
- 已解决: X
|
|
26
|
+
- 总计: Y
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
3. **展示 Meeting 列表**
|
|
30
|
+
```
|
|
31
|
+
📋 待处理 Meeting (X个)
|
|
32
|
+
|
|
33
|
+
┌─────────────────────────────────────────┐
|
|
34
|
+
│ [1] 🔴 TASK-001 - 数据库连接失败 │
|
|
35
|
+
│ 阻塞原因: 无法连接到远程数据库 │
|
|
36
|
+
│ 影响: 2个下游任务 │
|
|
37
|
+
│ │
|
|
38
|
+
│ [2] 🤔 TASK-003 - API设计决策 │
|
|
39
|
+
│ 问题: 选择 REST 还是 GraphQL │
|
|
40
|
+
│ 方案: 待决策 │
|
|
41
|
+
│ │
|
|
42
|
+
│ [3] 🔴 TASK-005 - 第三方API密钥缺失 │
|
|
43
|
+
│ 阻塞原因: 需要申请 API Key │
|
|
44
|
+
│ 影响: 1个下游任务 │
|
|
45
|
+
└─────────────────────────────────────────┘
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
4. **使用 AskUserQuestion 选择处理哪个 Meeting**
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
AskUserQuestion({
|
|
52
|
+
questions: [{
|
|
53
|
+
question: "请选择要处理的 Meeting:",
|
|
54
|
+
header: "选择 Meeting",
|
|
55
|
+
options: [
|
|
56
|
+
{ label: "[1] TASK-001 - 数据库连接失败", description: "阻塞 - 需要信息" },
|
|
57
|
+
{ label: "[2] TASK-003 - API设计决策", description: "决策 - 技术选型" },
|
|
58
|
+
{ label: "[3] TASK-005 - API密钥缺失", description: "阻塞 - 需要信息" },
|
|
59
|
+
{ label: "全部跳过", description: "标记所有 Meeting 为跳过" },
|
|
60
|
+
{ label: "返回", description: "暂不处理" }
|
|
61
|
+
],
|
|
62
|
+
multiSelect: false
|
|
63
|
+
}]
|
|
64
|
+
})
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
5. **处理单个 Meeting**
|
|
68
|
+
|
|
69
|
+
根据 Meeting 类型展示不同的选项:
|
|
70
|
+
|
|
71
|
+
**🔴 阻塞问题 Meeting:**
|
|
72
|
+
```
|
|
73
|
+
📋 Meeting: APPR-001
|
|
74
|
+
🎯 任务: TASK-001 - 数据库连接失败
|
|
75
|
+
|
|
76
|
+
## 阻塞详情
|
|
77
|
+
|
|
78
|
+
**原因**: 无法连接到远程数据库
|
|
79
|
+
**尝试**: 已检查网络连通性,防火墙已放行
|
|
80
|
+
**时间**: 2024-03-25 10:30:00
|
|
81
|
+
|
|
82
|
+
## 影响范围
|
|
83
|
+
|
|
84
|
+
- TASK-002: 用户数据同步 (依赖 TASK-001)
|
|
85
|
+
- TASK-004: 数据备份任务 (依赖 TASK-001)
|
|
86
|
+
|
|
87
|
+
## 可用操作
|
|
88
|
+
|
|
89
|
+
[A] 💡 提供信息 - 提供解决问题所需的信息
|
|
90
|
+
[B] ⏭️ 跳过任务 - 标记此任务为可选,继续下游
|
|
91
|
+
[C] 🔄 重试 - 使用新信息重试此任务
|
|
92
|
+
[D] ✏️ 修改方案 - 调整任务执行方案
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**使用 AskUserQuestion:**
|
|
96
|
+
```typescript
|
|
97
|
+
AskUserQuestion({
|
|
98
|
+
questions: [{
|
|
99
|
+
question: "请选择操作:",
|
|
100
|
+
header: "处理阻塞",
|
|
101
|
+
options: [
|
|
102
|
+
{ label: "💡 提供信息", description: "提供解决问题所需的信息" },
|
|
103
|
+
{ label: "⏭️ 跳过任务", description: "标记为可选,继续执行下游任务" },
|
|
104
|
+
{ label: "🔄 重试", description: "使用新信息重试此任务" },
|
|
105
|
+
{ label: "✏️ 修改方案", description: "调整任务执行方案" },
|
|
106
|
+
{ label: "返回列表", description: "暂不处理" }
|
|
107
|
+
],
|
|
108
|
+
multiSelect: false
|
|
109
|
+
}]
|
|
110
|
+
})
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
6. **处理具体选择**
|
|
114
|
+
|
|
115
|
+
**如果选择"提供信息":**
|
|
116
|
+
```typescript
|
|
117
|
+
AskUserQuestion({
|
|
118
|
+
questions: [{
|
|
119
|
+
question: "请提供解决此阻塞所需的信息:",
|
|
120
|
+
header: "详细信息",
|
|
121
|
+
options: [], // 允许自由输入
|
|
122
|
+
multiSelect: false
|
|
123
|
+
}]
|
|
124
|
+
})
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
然后执行:
|
|
128
|
+
```bash
|
|
129
|
+
openmatrix meeting APPR-001 --action provide-info \
|
|
130
|
+
--info "数据库连接字符串是: postgresql://user:pass@host/db"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**如果选择"跳过任务":**
|
|
134
|
+
```typescript
|
|
135
|
+
AskUserQuestion({
|
|
136
|
+
questions: [{
|
|
137
|
+
question: "确定要跳过此任务吗?",
|
|
138
|
+
header: "确认",
|
|
139
|
+
options: [
|
|
140
|
+
{ label: "确认跳过", description: "标记为可选,继续下游" },
|
|
141
|
+
{ label: "取消", description: "返回" }
|
|
142
|
+
],
|
|
143
|
+
multiSelect: false
|
|
144
|
+
}]
|
|
145
|
+
})
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
然后执行:
|
|
149
|
+
```bash
|
|
150
|
+
openmatrix meeting APPR-001 --action skip --message "任务可选,跳过执行"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**如果选择"重试":**
|
|
154
|
+
```bash
|
|
155
|
+
openmatrix meeting APPR-001 --action retry
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**如果选择"修改方案":**
|
|
159
|
+
```typescript
|
|
160
|
+
AskUserQuestion({
|
|
161
|
+
questions: [{
|
|
162
|
+
question: "请描述修改后的方案:",
|
|
163
|
+
header: "新方案",
|
|
164
|
+
options: [], // 允许自由输入
|
|
165
|
+
multiSelect: false
|
|
166
|
+
}]
|
|
167
|
+
})
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
然后执行:
|
|
171
|
+
```bash
|
|
172
|
+
openmatrix meeting APPR-001 --action modify \
|
|
173
|
+
--new-plan "使用本地 SQLite 替代 PostgreSQL"
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
7. **处理决策型 Meeting**
|
|
177
|
+
|
|
178
|
+
**🤔 技术决策 Meeting:**
|
|
179
|
+
```
|
|
180
|
+
📋 Meeting: APPR-002
|
|
181
|
+
🎯 任务: TASK-003 - API 设计决策
|
|
182
|
+
|
|
183
|
+
## 决策问题
|
|
184
|
+
|
|
185
|
+
**问题**: 选择 REST 还是 GraphQL?
|
|
186
|
+
|
|
187
|
+
## 可选方案
|
|
188
|
+
|
|
189
|
+
**方案 1: REST API** (推荐)
|
|
190
|
+
- ✅ 简单直观,团队熟悉
|
|
191
|
+
- ✅ 调试方便
|
|
192
|
+
- ❌ 可能需要多次请求
|
|
193
|
+
|
|
194
|
+
**方案 2: GraphQL**
|
|
195
|
+
- ✅ 灵活查询,一次请求
|
|
196
|
+
- ✅ 强类型
|
|
197
|
+
- ❌ 学习成本较高
|
|
198
|
+
- ❌ 需要额外工具
|
|
199
|
+
|
|
200
|
+
## 操作
|
|
201
|
+
|
|
202
|
+
[A] 选择方案 1 - REST (推荐)
|
|
203
|
+
[B] 选择方案 2 - GraphQL
|
|
204
|
+
[C] 自定义方案
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**使用 AskUserQuestion:**
|
|
208
|
+
```typescript
|
|
209
|
+
AskUserQuestion({
|
|
210
|
+
questions: [{
|
|
211
|
+
question: "请做出决策:",
|
|
212
|
+
header: "技术决策",
|
|
213
|
+
options: [
|
|
214
|
+
{ label: "选择方案 1: REST", description: "简单直观,团队熟悉" },
|
|
215
|
+
{ label: "选择方案 2: GraphQL", description: "灵活查询,强类型" },
|
|
216
|
+
{ label: "自定义方案", description: "输入其他方案" },
|
|
217
|
+
{ label: "需要更多信息", description: "暂不决策,等待调研" },
|
|
218
|
+
{ label: "返回列表", description: "返回 Meeting 列表" }
|
|
219
|
+
],
|
|
220
|
+
multiSelect: false
|
|
221
|
+
}]
|
|
222
|
+
})
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
执行决策:
|
|
226
|
+
```bash
|
|
227
|
+
openmatrix meeting APPR-002 --action decide \
|
|
228
|
+
--decision "REST" --reason "团队熟悉,快速开发"
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
8. **处理完成**
|
|
232
|
+
|
|
233
|
+
处理一个 Meeting 后:
|
|
234
|
+
```
|
|
235
|
+
✅ Meeting APPR-001 已解决
|
|
236
|
+
|
|
237
|
+
操作: 提供信息
|
|
238
|
+
状态: 任务已恢复执行
|
|
239
|
+
|
|
240
|
+
📋 剩余 Meeting (2个):
|
|
241
|
+
- APPR-002: API设计决策
|
|
242
|
+
- APPR-003: API密钥缺失
|
|
243
|
+
|
|
244
|
+
是否继续处理? [Y/n]: _
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
如果是 "跳过" 或 "取消":
|
|
248
|
+
```
|
|
249
|
+
⏭️ Meeting APPR-001 已跳过
|
|
250
|
+
|
|
251
|
+
任务 TASK-001 标记为可选
|
|
252
|
+
下游任务可继续执行
|
|
253
|
+
|
|
254
|
+
📋 剩余 Meeting (2个): ...
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
9. **批量处理**
|
|
258
|
+
|
|
259
|
+
如果选择"全部跳过":
|
|
260
|
+
```typescript
|
|
261
|
+
AskUserQuestion({
|
|
262
|
+
questions: [{
|
|
263
|
+
question: "确定要跳过所有 Meeting 吗?",
|
|
264
|
+
header: "批量操作",
|
|
265
|
+
options: [
|
|
266
|
+
{ label: "确认全部跳过", description: "标记所有为可选" },
|
|
267
|
+
{ label: "取消", description: "返回列表" }
|
|
268
|
+
],
|
|
269
|
+
multiSelect: false
|
|
270
|
+
}]
|
|
271
|
+
})
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
openmatrix meeting --skip-all --message "批量跳过"
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
</process>
|
|
279
|
+
|
|
280
|
+
<arguments>
|
|
281
|
+
$ARGUMENTS
|
|
282
|
+
|
|
283
|
+
- 无参数: 列出所有待处理 Meeting
|
|
284
|
+
- Meeting ID: 直接处理指定 Meeting
|
|
285
|
+
</arguments>
|
|
286
|
+
|
|
287
|
+
<examples>
|
|
288
|
+
/om:meeting # 查看所有待处理 Meeting
|
|
289
|
+
/om:meeting APPR-001 # 直接处理指定 Meeting
|
|
290
|
+
</examples>
|
|
291
|
+
|
|
292
|
+
<notes>
|
|
293
|
+
## Meeting 类型
|
|
294
|
+
|
|
295
|
+
| 类型 | 图标 | 说明 |
|
|
296
|
+
|------|------|------|
|
|
297
|
+
| 阻塞 | 🔴 | 任务执行遇到阻塞,需要信息或决策 |
|
|
298
|
+
| 决策 | 🤔 | 技术选型或设计方案决策 |
|
|
299
|
+
|
|
300
|
+
## 操作类型
|
|
301
|
+
|
|
302
|
+
| 操作 | 说明 | 后续 |
|
|
303
|
+
|------|------|------|
|
|
304
|
+
| provide-info | 提供解决信息 | 任务恢复执行 |
|
|
305
|
+
| skip | 跳过任务 | 标记可选,下游继续 |
|
|
306
|
+
| retry | 重试任务 | 重新执行当前任务 |
|
|
307
|
+
| modify | 修改方案 | 更新任务后重试 |
|
|
308
|
+
| decide | 做出决策 | 记录决策并继续 |
|
|
309
|
+
| cancel | 取消任务 | 停止相关下游任务 |
|
|
310
|
+
|
|
311
|
+
## CLI 命令
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
# 列出所有 Meeting
|
|
315
|
+
openmatrix meeting --list
|
|
316
|
+
|
|
317
|
+
# 处理指定 Meeting
|
|
318
|
+
openmatrix meeting APPR-001 --action provide-info --info "..."
|
|
319
|
+
openmatrix meeting APPR-001 --action skip --message "..."
|
|
320
|
+
openmatrix meeting APPR-001 --action retry
|
|
321
|
+
openmatrix meeting APPR-001 --action modify --new-plan "..."
|
|
322
|
+
|
|
323
|
+
# 批量操作
|
|
324
|
+
openmatrix meeting --skip-all --message "批量跳过"
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
## 与执行循环的关系
|
|
328
|
+
|
|
329
|
+
```
|
|
330
|
+
执行任务中...
|
|
331
|
+
├── 任务A 完成 ✓
|
|
332
|
+
├── 任务B 阻塞 → 创建Meeting → 跳过,继续
|
|
333
|
+
└── 任务C 完成 ✓
|
|
334
|
+
|
|
335
|
+
执行完成!
|
|
336
|
+
📋 有待处理的 Meeting (1个)
|
|
337
|
+
↓
|
|
338
|
+
用户执行 /om:meeting
|
|
339
|
+
↓
|
|
340
|
+
交互式处理 Meeting
|
|
341
|
+
├── 提供信息 / 跳过 / 重试
|
|
342
|
+
└── 解决阻塞
|
|
343
|
+
↓
|
|
344
|
+
恢复执行或标记完成
|
|
345
|
+
```
|
|
346
|
+
</notes>
|
package/skills/report.md
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: om:report
|
|
3
|
+
description: 生成任务执行报告
|
|
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. **收集数据**
|
|
16
|
+
- 全局状态 (state.json)
|
|
17
|
+
- 所有任务 (tasks/)
|
|
18
|
+
- 审批历史 (approvals/)
|
|
19
|
+
- Agent 执行日志 (agents/)
|
|
20
|
+
|
|
21
|
+
2. **生成报告**
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
📊 OpenMatrix 执行报告
|
|
25
|
+
=====================
|
|
26
|
+
|
|
27
|
+
🆔 Run ID: run-20240323-abc1
|
|
28
|
+
📅 时间: 2024-03-23 10:00 - 12:30
|
|
29
|
+
⏱️ 总耗时: 2小时30分钟
|
|
30
|
+
|
|
31
|
+
## 📈 任务统计
|
|
32
|
+
|
|
33
|
+
| 状态 | 数量 | 占比 |
|
|
34
|
+
|------|------|------|
|
|
35
|
+
| ✅ 完成 | 8 | 80% |
|
|
36
|
+
| ❌ 失败 | 1 | 10% |
|
|
37
|
+
| ⏳ 跳过 | 1 | 10% |
|
|
38
|
+
|
|
39
|
+
## 📋 任务详情
|
|
40
|
+
|
|
41
|
+
### ✅ 已完成
|
|
42
|
+
- TASK-001: 需求分析 (15min)
|
|
43
|
+
- TASK-002: 数据库设计 (20min)
|
|
44
|
+
- TASK-003: API 开发 (45min)
|
|
45
|
+
...
|
|
46
|
+
|
|
47
|
+
### ❌ 失败
|
|
48
|
+
- TASK-007: 集成测试
|
|
49
|
+
原因: 测试用例失败
|
|
50
|
+
重试: 3次后仍失败
|
|
51
|
+
|
|
52
|
+
### ⏳ 跳过
|
|
53
|
+
- TASK-008: 性能优化
|
|
54
|
+
原因: 依赖任务失败
|
|
55
|
+
|
|
56
|
+
## 🔔 审批记录
|
|
57
|
+
|
|
58
|
+
| ID | 类型 | 决策 | 时间 |
|
|
59
|
+
|----|----|------|------|
|
|
60
|
+
| APPR-001 | plan | ✅ 批准 | 10:05 |
|
|
61
|
+
| APPR-002 | merge | ✅ 批准 | 11:30 |
|
|
62
|
+
|
|
63
|
+
## 🤖 Agent 执行
|
|
64
|
+
|
|
65
|
+
| Agent | 任务数 | 成功率 |
|
|
66
|
+
|-------|--------|--------|
|
|
67
|
+
| planner | 2 | 100% |
|
|
68
|
+
| coder | 4 | 75% |
|
|
69
|
+
| tester | 2 | 50% |
|
|
70
|
+
|
|
71
|
+
## 📝 建议
|
|
72
|
+
|
|
73
|
+
1. TASK-007 集成测试失败,建议检查测试用例
|
|
74
|
+
2. 考虑增加代码审查环节
|
|
75
|
+
|
|
76
|
+
## 📁 产出物
|
|
77
|
+
|
|
78
|
+
- src/api/users.ts
|
|
79
|
+
- src/api/auth.ts
|
|
80
|
+
- tests/integration/*.test.ts
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
3. **保存报告**
|
|
84
|
+
- 保存到 `.openmatrix/reports/report-{timestamp}.md`
|
|
85
|
+
- 可选输出到指定路径
|
|
86
|
+
|
|
87
|
+
</process>
|
|
88
|
+
|
|
89
|
+
<arguments>
|
|
90
|
+
$ARGUMENTS
|
|
91
|
+
|
|
92
|
+
--format json|markdown 输出格式
|
|
93
|
+
--output path 输出路径
|
|
94
|
+
</arguments>
|
|
95
|
+
|
|
96
|
+
<examples>
|
|
97
|
+
/om:report # 生成并显示报告
|
|
98
|
+
/om:report --output report.md # 保存到文件
|
|
99
|
+
/om:report --format json # JSON 格式
|
|
100
|
+
</examples>
|