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
package/skills/resume.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: om:resume
|
|
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. 读取 `.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>
|
package/skills/retry.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: om:retry
|
|
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
|
+
|
|
17
|
+
```
|
|
18
|
+
❌ 失败任务列表
|
|
19
|
+
|
|
20
|
+
[1] TASK-003: API 接口开发
|
|
21
|
+
失败原因: 超时
|
|
22
|
+
重试次数: 2/3
|
|
23
|
+
失败时间: 2024-03-23 10:30
|
|
24
|
+
|
|
25
|
+
[2] TASK-007: 集成测试
|
|
26
|
+
失败原因: 测试用例失败
|
|
27
|
+
重试次数: 0/3
|
|
28
|
+
失败时间: 2024-03-23 11:00
|
|
29
|
+
|
|
30
|
+
选择要重试的任务 [1-2] 或 [A] 全部: _
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
2. **用户选择后**
|
|
34
|
+
- 重置任务状态为 `pending`
|
|
35
|
+
- 重置 retryCount(可选)
|
|
36
|
+
- 调用 CLI: `openmatrix retry {taskId}`
|
|
37
|
+
|
|
38
|
+
3. **显示重试结果**
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
🔄 重试任务: TASK-003
|
|
42
|
+
|
|
43
|
+
✅ 任务已加入执行队列
|
|
44
|
+
状态: pending
|
|
45
|
+
等待调度...
|
|
46
|
+
|
|
47
|
+
使用 /om:status 查看执行进度
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
</process>
|
|
51
|
+
|
|
52
|
+
<arguments>
|
|
53
|
+
$ARGUMENTS
|
|
54
|
+
</arguments>
|
|
55
|
+
|
|
56
|
+
<examples>
|
|
57
|
+
/om:retry # 列出失败任务
|
|
58
|
+
/om:retry TASK-003 # 重试指定任务
|
|
59
|
+
/om:retry --all # 重试所有失败任务
|
|
60
|
+
/om:retry --reset # 重试并重置重试计数
|
|
61
|
+
</examples>
|
package/skills/start.md
ADDED
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: om:start
|
|
3
|
+
description: 启动新的任务执行周期
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<NO-OTHER-SKILLS>
|
|
7
|
+
执行此技能时,不得调用 superpowers、gsd 或其他任务编排相关的技能。OpenMatrix 独立运行,不依赖外部任务编排系统。
|
|
8
|
+
</NO-OTHER-SKILLS>
|
|
9
|
+
|
|
10
|
+
<objective>
|
|
11
|
+
解析任务文档,通过交互式问答澄清需求(3-7个问题,支持多轮追问),确认后启动执行。
|
|
12
|
+
</objective>
|
|
13
|
+
|
|
14
|
+
<process>
|
|
15
|
+
1. **检查当前状态**
|
|
16
|
+
- 读取 `.openmatrix/state.json`
|
|
17
|
+
- 如果 `status === 'running'`,提示用户先完成或暂停
|
|
18
|
+
|
|
19
|
+
2. **检查 Git 仓库**
|
|
20
|
+
- 检查当前目录是否存在 `.git` 文件夹
|
|
21
|
+
- 如果没有:
|
|
22
|
+
- 询问用户是否初始化 Git 仓库 (使用 AskUserQuestion)
|
|
23
|
+
- 如果用户确认,执行 `git init`
|
|
24
|
+
- 创建初始 commit: `git add -A && git commit -m "Initial commit"`
|
|
25
|
+
- 检查是否有远程仓库配置:
|
|
26
|
+
- 如果没有远程仓库,提示用户添加: `git remote add origin <url>`
|
|
27
|
+
|
|
28
|
+
3. **解析任务输入**
|
|
29
|
+
- 如果 `$ARGUMENTS` 提供文件路径 → 读取文件内容
|
|
30
|
+
- 如果 `$ARGUMENTS` 是任务描述 → 直接使用
|
|
31
|
+
- 如果无参数 → **使用 AskUserQuestion 询问用户要执行的任务**
|
|
32
|
+
|
|
33
|
+
4. **⚠️ 交互式问答 (必须执行)**
|
|
34
|
+
|
|
35
|
+
**重要**: 除非用户明确指定 `--skip-questions`,否则必须执行交互式问答。
|
|
36
|
+
|
|
37
|
+
使用 `AskUserQuestion` 工具,逐个提出以下问题:
|
|
38
|
+
|
|
39
|
+
**问题 0: 质量级别 (最重要,第一个问)**
|
|
40
|
+
```typescript
|
|
41
|
+
AskUserQuestion({
|
|
42
|
+
questions: [{
|
|
43
|
+
question: "选择质量级别 (决定 TDD、覆盖率、安全扫描等):",
|
|
44
|
+
header: "质量级别",
|
|
45
|
+
options: [
|
|
46
|
+
{
|
|
47
|
+
label: "🚀 strict (推荐生产代码)",
|
|
48
|
+
description: "TDD + 80%覆盖率 + 严格Lint + 安全扫描 + AI验收"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
label: "⚖️ balanced (日常开发)",
|
|
52
|
+
description: "60%覆盖率 + Lint + 安全扫描 + AI验收"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
label: "⚡ fast (快速原型)",
|
|
56
|
+
description: "无质量门禁,最快速度"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
multiSelect: false
|
|
60
|
+
}]
|
|
61
|
+
})
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**问题 1: 任务目标**
|
|
65
|
+
```typescript
|
|
66
|
+
AskUserQuestion({
|
|
67
|
+
questions: [{
|
|
68
|
+
question: "这个任务的主要目标是什么?",
|
|
69
|
+
header: "目标",
|
|
70
|
+
options: [
|
|
71
|
+
{ label: "实现新功能", description: "添加新的功能特性" },
|
|
72
|
+
{ label: "修复 Bug", description: "修复已知问题" },
|
|
73
|
+
{ label: "重构优化", description: "改进代码结构或性能" },
|
|
74
|
+
{ label: "其他", description: "其他类型任务" }
|
|
75
|
+
],
|
|
76
|
+
multiSelect: false
|
|
77
|
+
}]
|
|
78
|
+
})
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**问题 2: 技术栈** (根据任务内容动态生成)
|
|
82
|
+
```typescript
|
|
83
|
+
AskUserQuestion({
|
|
84
|
+
questions: [{
|
|
85
|
+
question: "使用什么技术栈?",
|
|
86
|
+
header: "技术栈",
|
|
87
|
+
options: [
|
|
88
|
+
{ label: "TypeScript", description: "类型安全的 JavaScript" },
|
|
89
|
+
{ label: "Python", description: "Python 语言" },
|
|
90
|
+
{ label: "Go", description: "Go 语言" },
|
|
91
|
+
{ label: "其他", description: "其他技术栈" }
|
|
92
|
+
],
|
|
93
|
+
multiSelect: true
|
|
94
|
+
}]
|
|
95
|
+
})
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**问题 3: 文档要求**
|
|
99
|
+
```typescript
|
|
100
|
+
AskUserQuestion({
|
|
101
|
+
questions: [{
|
|
102
|
+
question: "需要什么级别的文档?",
|
|
103
|
+
header: "文档",
|
|
104
|
+
options: [
|
|
105
|
+
{ label: "完整文档", description: "API + 使用指南 + 架构" },
|
|
106
|
+
{ label: "基础文档", description: "README + API" },
|
|
107
|
+
{ label: "最小文档", description: "仅 README" },
|
|
108
|
+
{ label: "无需文档", description: "不生成文档" }
|
|
109
|
+
],
|
|
110
|
+
multiSelect: false
|
|
111
|
+
}]
|
|
112
|
+
})
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**多轮追问**: 如果用户选择"其他",必须追问详情:
|
|
116
|
+
```typescript
|
|
117
|
+
if (answer.includes("其他")) {
|
|
118
|
+
AskUserQuestion({
|
|
119
|
+
questions: [{
|
|
120
|
+
question: "请详细描述:",
|
|
121
|
+
header: "详情",
|
|
122
|
+
options: [] // 允许自由输入
|
|
123
|
+
}]
|
|
124
|
+
})
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
5. **任务拆解**
|
|
129
|
+
- 根据用户回答拆解任务
|
|
130
|
+
- 生成子任务列表和依赖图
|
|
131
|
+
|
|
132
|
+
6. **展示执行计划**
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
📋 执行计划
|
|
136
|
+
|
|
137
|
+
## Phase 1: 设计阶段
|
|
138
|
+
└─ TASK-001: 架构设计 (15min)
|
|
139
|
+
|
|
140
|
+
## Phase 2: 开发阶段
|
|
141
|
+
├─ TASK-002: 数据模型 (20min)
|
|
142
|
+
├─ TASK-003: API 接口 (30min)
|
|
143
|
+
└─ TASK-004: 前端页面 (40min)
|
|
144
|
+
|
|
145
|
+
## Phase 3: 测试阶段
|
|
146
|
+
├─ TASK-005: 单元测试 (20min)
|
|
147
|
+
└─ TASK-006: 集成测试 (15min)
|
|
148
|
+
|
|
149
|
+
## Phase 4: 收尾阶段
|
|
150
|
+
├─ TASK-007: 文档编写 (15min)
|
|
151
|
+
└─ TASK-008: 代码审查 (10min)
|
|
152
|
+
|
|
153
|
+
📊 统计
|
|
154
|
+
总任务: 8
|
|
155
|
+
预计耗时: ~2.5小时
|
|
156
|
+
审批点: plan, merge
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
6. **执行模式确认** (使用 AskUserQuestion)
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
AskUserQuestion({
|
|
163
|
+
questions: [{
|
|
164
|
+
question: "请选择执行模式:",
|
|
165
|
+
header: "执行模式",
|
|
166
|
+
options: [
|
|
167
|
+
{
|
|
168
|
+
label: "每阶段确认 (推荐)",
|
|
169
|
+
description: "每个阶段完成后暂停,等待确认,适合重要任务"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
label: "关键节点确认",
|
|
173
|
+
description: "仅在 plan/merge/deploy 时暂停,平衡速度和控制"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
label: "全自动执行",
|
|
177
|
+
description: "无需确认,自动完成所有任务,适合简单低风险任务"
|
|
178
|
+
}
|
|
179
|
+
],
|
|
180
|
+
multiSelect: false
|
|
181
|
+
}]
|
|
182
|
+
})
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
7. **开始执行** (⚠️ 严格模式)
|
|
186
|
+
|
|
187
|
+
**重要**: 从此步骤开始,除非遇到 meeting 审批或失败,否则**不得暂停询问用户**。
|
|
188
|
+
|
|
189
|
+
用户选择执行模式后:
|
|
190
|
+
|
|
191
|
+
a) 调用 CLI 初始化状态:
|
|
192
|
+
```bash
|
|
193
|
+
openmatrix start --mode <mode>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
b) CLI 返回 SubagentTask 列表
|
|
197
|
+
|
|
198
|
+
c) **执行循环** (由 Skill 驱动):
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
while (有待执行任务) {
|
|
202
|
+
1. 读取状态文件获取 SubagentTask
|
|
203
|
+
2. 调用 Agent 工具执行 Subagent
|
|
204
|
+
3. Subagent 完成后,更新状态文件
|
|
205
|
+
4. Git 提交 (如果配置了自动提交)
|
|
206
|
+
5. Phase 验收测试 (verify phase)
|
|
207
|
+
6. **检查是否需要审批**:
|
|
208
|
+
- 如果配置了 auto 模式 (`approvalPoints` 为空):
|
|
209
|
+
- **plan/merge/deploy 审批**: 自动批准 ✓
|
|
210
|
+
- **meeting 审批**: 不自动批准,只记录并跳过阻塞任务,供最后统一处理
|
|
211
|
+
- 如果配置了非 auto 模式: 在配置的审批点暂停等待确认
|
|
212
|
+
- 其他情况: 暂停等待人工确认
|
|
213
|
+
|
|
214
|
+
**Meeting 处理** (auto 模式):
|
|
215
|
+
```
|
|
216
|
+
执行任务中...
|
|
217
|
+
├── 任务A 完成 ✓
|
|
218
|
+
├── 任务B 阻塞 → 创建Meeting → **跳过任务,继续执行** ↷
|
|
219
|
+
├── 任务C 完成 ✓
|
|
220
|
+
└── 任务D 阻塞 → 创建Meeting → **跳过任务,继续执行** ↷
|
|
221
|
+
|
|
222
|
+
执行完成!
|
|
223
|
+
📋 有待处理的 Meeting (2个):
|
|
224
|
+
- APPR-001: 数据库连接失败 (TASK-B)
|
|
225
|
+
- APPR-002: API设计决策 (TASK-D)
|
|
226
|
+
|
|
227
|
+
请使用 /om:meeting 查看并处理
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Meeting 保持 `pending` 状态,用户最后使用 `/om:meeting` 以交互式方式处理
|
|
231
|
+
7. 继续下一个任务
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**⚠️ 重要**: 在 **auto 模式** 下,Skill **不得**询问用户任何确认问题:
|
|
236
|
+
- 不得询问"是否继续执行"
|
|
237
|
+
- 不得询问"是否执行下一 Phase"
|
|
238
|
+
- 不得询问"是否处理 Meeting"
|
|
239
|
+
- **plan/merge/deploy 自动批准,meeting 记录但不批准,最后统一展示**
|
|
240
|
+
|
|
241
|
+
d) 执行 Agent 工具示例:
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
// 使用 Agent 工具执行 Subagent
|
|
245
|
+
Agent({
|
|
246
|
+
subagent_type: task.subagent_type,
|
|
247
|
+
description: task.description,
|
|
248
|
+
prompt: task.prompt,
|
|
249
|
+
isolation: task.isolation
|
|
250
|
+
})
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
**⚠️ 执行约束 - 必须遵守**
|
|
254
|
+
|
|
255
|
+
当执行 Agent 工具时,**禁止**向用户询问以下问题:
|
|
256
|
+
- "是否继续执行?"
|
|
257
|
+
- "是否执行下一阶段?"
|
|
258
|
+
- "是否继续 Phase X?"
|
|
259
|
+
- "任务量较大,是否需要分批次?"
|
|
260
|
+
|
|
261
|
+
**正确的行为**:
|
|
262
|
+
- 如果当前是 auto 模式 (`approvalPoints` 为空数组),Agent 执行完毕后**直接继续**,无任何确认
|
|
263
|
+
- 只有遇到 **meeting** 类型的审批时才暂停
|
|
264
|
+
- 其他情况下,让 Agent 完整执行任务并在完成后自动返回结果
|
|
265
|
+
|
|
266
|
+
8. **状态更新**
|
|
267
|
+
|
|
268
|
+
每个 Subagent 完成后,更新任务状态:
|
|
269
|
+
```bash
|
|
270
|
+
openmatrix complete <taskId> --success/--failed
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
</process>
|
|
274
|
+
|
|
275
|
+
<arguments>
|
|
276
|
+
$ARGUMENTS
|
|
277
|
+
</arguments>
|
|
278
|
+
|
|
279
|
+
<examples>
|
|
280
|
+
/om:start # 交互式输入任务
|
|
281
|
+
/om:start docs/task.md # 从文件读取任务
|
|
282
|
+
/om:start "实现用户登录功能" # 直接描述任务
|
|
283
|
+
</examples>
|
|
284
|
+
|
|
285
|
+
<notes>
|
|
286
|
+
## 质量级别详解
|
|
287
|
+
|
|
288
|
+
| 级别 | TDD | 覆盖率 | Lint | 安全扫描 | AI验收 | 适用场景 |
|
|
289
|
+
|------|:---:|:------:|:----:|:--------:|:------:|---------|
|
|
290
|
+
| **strict** | ✅ | 80% | ✅ 严格 | ✅ | ✅ | 生产代码、核心功能 |
|
|
291
|
+
| **balanced** | ❌ | 60% | ✅ | ✅ | ✅ | 日常开发 (默认) |
|
|
292
|
+
| **fast** | ❌ | 0% | ❌ | ❌ | ❌ | 快速原型、POC |
|
|
293
|
+
|
|
294
|
+
### strict 模式 (推荐生产代码)
|
|
295
|
+
```
|
|
296
|
+
🧪 TDD 阶段: 先写测试 (RED) → 测试必须失败
|
|
297
|
+
✨ 开发阶段: 再写代码 (GREEN) → 测试必须通过
|
|
298
|
+
✅ 验证阶段: 6道质量门禁
|
|
299
|
+
├── Gate 1: 编译检查 (必须通过)
|
|
300
|
+
├── Gate 2: 测试运行 (必须通过)
|
|
301
|
+
├── Gate 3: 覆盖率 >= 80% (必须达标)
|
|
302
|
+
├── Gate 4: Lint 无 error (必须通过)
|
|
303
|
+
├── Gate 5: 安全扫描无高危 (必须通过)
|
|
304
|
+
└── Gate 6: 验收标准全部满足
|
|
305
|
+
🎉 验收阶段: AI Reviewer 最终确认
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### balanced 模式 (日常开发)
|
|
309
|
+
```
|
|
310
|
+
✨ 开发阶段: 编写代码
|
|
311
|
+
✅ 验证阶段: 4道质量门禁
|
|
312
|
+
├── Gate 1: 编译检查
|
|
313
|
+
├── Gate 2: 测试运行
|
|
314
|
+
├── Gate 3: 覆盖率 >= 60%
|
|
315
|
+
└── Gate 4: 验收标准
|
|
316
|
+
🎉 验收阶段: AI Reviewer 确认
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### fast 模式 (快速原型)
|
|
320
|
+
```
|
|
321
|
+
✨ 开发阶段: 编写代码
|
|
322
|
+
✅ 验证阶段: 仅编译检查
|
|
323
|
+
🎉 完成
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
## 交互式问答流程图
|
|
327
|
+
|
|
328
|
+
```
|
|
329
|
+
┌─────────────────┐
|
|
330
|
+
│ 开始任务解析 │
|
|
331
|
+
└────────┬────────┘
|
|
332
|
+
│
|
|
333
|
+
▼
|
|
334
|
+
┌─────────────────┐
|
|
335
|
+
│ 问题0: 质量级别 │ ◀── 最重要,第一个问
|
|
336
|
+
│ strict/balanced │
|
|
337
|
+
│ /fast │
|
|
338
|
+
└────────┬────────┘
|
|
339
|
+
│
|
|
340
|
+
▼
|
|
341
|
+
┌─────────────────┐
|
|
342
|
+
│ 问题1: 任务目标 │
|
|
343
|
+
└────────┬────────┘
|
|
344
|
+
│
|
|
345
|
+
▼
|
|
346
|
+
┌─────────────────┐
|
|
347
|
+
│ 问题2: 技术栈 │
|
|
348
|
+
└────────┬────────┘
|
|
349
|
+
│
|
|
350
|
+
▼
|
|
351
|
+
┌─────────────────┐
|
|
352
|
+
│ 问题3: 文档要求 │
|
|
353
|
+
└────────┬────────┘
|
|
354
|
+
│
|
|
355
|
+
▼
|
|
356
|
+
┌─────────────────┐
|
|
357
|
+
│ 展示执行计划 │
|
|
358
|
+
│ (含质量配置) │
|
|
359
|
+
└────────┬────────┘
|
|
360
|
+
│
|
|
361
|
+
▼
|
|
362
|
+
┌─────────────────┐
|
|
363
|
+
│ 确认执行模式 │
|
|
364
|
+
└────────┬────────┘
|
|
365
|
+
│
|
|
366
|
+
▼
|
|
367
|
+
┌─────────────────┐
|
|
368
|
+
│ 开始执行 │
|
|
369
|
+
│ (应用质量配置) │
|
|
370
|
+
└─────────────────┘
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## 执行模式对比
|
|
374
|
+
|
|
375
|
+
| 模式 | 审批点 | Phase间确认 | 适用场景 |
|
|
376
|
+
|------|--------|-------------|---------|
|
|
377
|
+
| 每阶段确认 | 每阶段结束 | ✅ 是 | 重要任务 |
|
|
378
|
+
| 关键节点确认 | plan/merge/deploy | ❌ 否 | 常规任务 |
|
|
379
|
+
| 全自动执行 | 无 | ❌ 否 | 简单任务 |
|
|
380
|
+
|
|
381
|
+
## CLI 和 Skill 协作
|
|
382
|
+
|
|
383
|
+
```
|
|
384
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
385
|
+
│ Skill │────▶│ CLI │────▶│ 状态文件 │
|
|
386
|
+
│ (用户交互) │ │ (状态管理) │ │ (.openmat) │
|
|
387
|
+
└─────────────┘ └─────────────┘ └─────────────┘
|
|
388
|
+
│ │
|
|
389
|
+
│ 读取 SubagentTask │
|
|
390
|
+
│◀───────────────────────────────────────┘
|
|
391
|
+
│
|
|
392
|
+
│ 调用 Agent 工具
|
|
393
|
+
▼
|
|
394
|
+
┌─────────────┐
|
|
395
|
+
│ Subagent │
|
|
396
|
+
│ (任务执行) │
|
|
397
|
+
└─────────────┘
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
## SubagentTask 格式
|
|
401
|
+
|
|
402
|
+
```typescript
|
|
403
|
+
{
|
|
404
|
+
subagent_type: 'general-purpose' | 'Explore' | 'Plan',
|
|
405
|
+
description: string, // 简短描述 (3-5词)
|
|
406
|
+
prompt: string, // 完整执行提示词
|
|
407
|
+
isolation?: 'worktree', // 是否隔离
|
|
408
|
+
taskId: string,
|
|
409
|
+
agentType: AgentType,
|
|
410
|
+
timeout: number,
|
|
411
|
+
needsApproval: boolean
|
|
412
|
+
}
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
## Git 自动提交
|
|
416
|
+
|
|
417
|
+
当配置了自动提交时,每个子任务完成后自动执行:
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
git add -A
|
|
421
|
+
git commit -m "feat(task-id): 任务标题
|
|
422
|
+
|
|
423
|
+
- 修改内容1
|
|
424
|
+
- 修改内容2
|
|
425
|
+
|
|
426
|
+
影响范围: [模块名]
|
|
427
|
+
任务ID: TASK-XXX
|
|
428
|
+
RunID: run-XXX"
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
## Phase 验收流程
|
|
432
|
+
|
|
433
|
+
每个 Phase 完成后:
|
|
434
|
+
|
|
435
|
+
1. **Verify Phase**
|
|
436
|
+
- 运行测试: `npm test`
|
|
437
|
+
- 构建检查: `npm run build`
|
|
438
|
+
- 代码检查: `npm run lint` (如有)
|
|
439
|
+
|
|
440
|
+
2. **AI Reviewer**
|
|
441
|
+
- 代码质量审查
|
|
442
|
+
- 安全性检查
|
|
443
|
+
- 性能评估
|
|
444
|
+
|
|
445
|
+
3. **结果输出**
|
|
446
|
+
- ✅ 通过 → 进入下一 Phase
|
|
447
|
+
- ⚠️ 警告 → 记录但继续
|
|
448
|
+
- ❌ 失败 → 暂停等待处理
|
|
449
|
+
</notes>
|
package/skills/status.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: om:status
|
|
3
|
+
description: 查看当前任务执行状态
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<NO-OTHER-SKILLS>
|
|
7
|
+
执行此技能时,不得调用 superpowers、gsd 或其他任务编排相关的技能。OpenMatrix 独立运行,不依赖外部任务编排系统。
|
|
8
|
+
</NO-OTHER-SKILLS>
|
|
9
|
+
|
|
10
|
+
<objective>
|
|
11
|
+
显示 OpenMatrix 任务执行状态概览。
|
|
12
|
+
</objective>
|
|
13
|
+
|
|
14
|
+
<process>
|
|
15
|
+
1. 读取 `.openmatrix/state.json` 获取全局状态
|
|
16
|
+
2. 读取 `.openmatrix/tasks/` 下所有任务
|
|
17
|
+
3. 读取 `.openmatrix/approvals/` 下待处理审批
|
|
18
|
+
4. 展示格式化状态概览
|
|
19
|
+
|
|
20
|
+
## 输出格式
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
📊 OpenMatrix Status
|
|
24
|
+
|
|
25
|
+
Run ID: run-xxx
|
|
26
|
+
Status: running | paused | completed
|
|
27
|
+
Phase: planning | execution | verification
|
|
28
|
+
|
|
29
|
+
📈 Statistics
|
|
30
|
+
Total: X | ✅ Completed: X | 🔄 In Progress: X | ⏳ Pending: X | ❌ Failed: X
|
|
31
|
+
|
|
32
|
+
📋 Tasks
|
|
33
|
+
✅ TASK-001: 任务名称
|
|
34
|
+
🔄 TASK-002: 任务名称
|
|
35
|
+
⏳ TASK-003: 任务名称
|
|
36
|
+
❌ TASK-004: 任务名称 (失败原因)
|
|
37
|
+
|
|
38
|
+
🔴 Pending Approvals
|
|
39
|
+
APPR-001: 计划审批 (TASK-002)
|
|
40
|
+
APPR-002: Meeting - 阻塞问题 (TASK-003)
|
|
41
|
+
|
|
42
|
+
💡 Next Actions
|
|
43
|
+
/om:approve - 处理待审批
|
|
44
|
+
/om:resume - 恢复暂停任务
|
|
45
|
+
```
|
|
46
|
+
</process>
|