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/README.md
ADDED
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
# OpenMatrix
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+
**唯一同时实现 TDD + 严格质量门禁 + 全自动执行的 AI 任务编排系统**
|
|
6
|
+
|
|
7
|
+
*自动化 ≠ 牺牲质量 | 高质量 ≠ 手动操作*
|
|
8
|
+
|
|
9
|
+
[](https://badge.fury.io/js/openmatrix)
|
|
10
|
+
[](https://opensource.org/licenses/MIT)
|
|
11
|
+
[](https://nodejs.org/)
|
|
12
|
+
[](https://claude.ai/code)
|
|
13
|
+
|
|
14
|
+
**[中文文档](#中文文档)** | **[English](#english)**
|
|
15
|
+
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# 中文文档
|
|
21
|
+
|
|
22
|
+
## 一句话介绍
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
/om:start 实现用户登录
|
|
26
|
+
# 第一个问题让你选择质量级别,然后全自动执行 + 严格质量保证
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 完整流程图
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
35
|
+
│ OpenMatrix 完整执行流程 │
|
|
36
|
+
└─────────────────────────────────────────────────────────────────────────────────┘
|
|
37
|
+
|
|
38
|
+
用户输入: /om:start 实现用户登录功能
|
|
39
|
+
│
|
|
40
|
+
▼
|
|
41
|
+
┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
42
|
+
│ 阶段 0: 交互式问答 │
|
|
43
|
+
├─────────────────────────────────────────────────────────────────────────────────┤
|
|
44
|
+
│ │
|
|
45
|
+
│ Q0: 选择质量级别? ◀─── 最重要,第一个问 │
|
|
46
|
+
│ ├── 🚀 strict → TDD + 80%覆盖率 + 6道门禁 + AI验收 │
|
|
47
|
+
│ ├── ⚖️ balanced → 60%覆盖率 + 4道门禁 + AI验收 │
|
|
48
|
+
│ └── ⚡ fast → 无质量门禁 │
|
|
49
|
+
│ │
|
|
50
|
+
│ Q1: 任务目标? (新功能/Bug修复/重构) │
|
|
51
|
+
│ Q2: 技术栈? (TypeScript/Python/Go...) │
|
|
52
|
+
│ Q3: 文档要求? (完整/基础/最小/无) │
|
|
53
|
+
│ │
|
|
54
|
+
└─────────────────────────────────────────────────────────────────────────────────┘
|
|
55
|
+
│
|
|
56
|
+
▼
|
|
57
|
+
┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
58
|
+
│ 阶段 1: 任务规划 (Planner Agent) │
|
|
59
|
+
├─────────────────────────────────────────────────────────────────────────────────┤
|
|
60
|
+
│ │
|
|
61
|
+
│ 输入: 用户回答 + 任务描述 │
|
|
62
|
+
│ 输出: 执行计划 + 子任务列表 + 依赖图 │
|
|
63
|
+
│ │
|
|
64
|
+
│ 📋 执行计划示例: │
|
|
65
|
+
│ ├── TASK-001: 数据模型设计 (Planner, 15min) │
|
|
66
|
+
│ ├── TASK-002: API 接口实现 (Coder, 30min) │
|
|
67
|
+
│ ├── TASK-003: 单元测试 (Tester, 20min) │
|
|
68
|
+
│ └── TASK-004: 代码审查 (Reviewer, 10min) │
|
|
69
|
+
│ │
|
|
70
|
+
└─────────────────────────────────────────────────────────────────────────────────┘
|
|
71
|
+
│
|
|
72
|
+
▼
|
|
73
|
+
┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
74
|
+
│ 阶段 2: 任务执行 (根据质量级别) │
|
|
75
|
+
├─────────────────────────────────────────────────────────────────────────────────┤
|
|
76
|
+
│ │
|
|
77
|
+
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
|
78
|
+
│ │ strict 模式 (4阶段) │ │
|
|
79
|
+
│ │ │ │
|
|
80
|
+
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
|
|
81
|
+
│ │ │ TDD │────▶│ Develop │────▶│ Verify │────▶│ Accept │ │ │
|
|
82
|
+
│ │ │ 🧪 RED │ │ ✨ GREEN│ │ ✅ 6门禁│ │ 🎉 AI │ │ │
|
|
83
|
+
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
|
|
84
|
+
│ │ │ │ │ │ │ │
|
|
85
|
+
│ │ ▼ ▼ ▼ ▼ │ │
|
|
86
|
+
│ │ Tester 先写 Coder 写代码 6道质量门禁 Reviewer │ │
|
|
87
|
+
│ │ 测试(必须失败) (测试必须通过) (见下方) 最终验收 │ │
|
|
88
|
+
│ │ │ │
|
|
89
|
+
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
|
90
|
+
│ │
|
|
91
|
+
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
|
92
|
+
│ │ balanced 模式 (3阶段) │ │
|
|
93
|
+
│ │ │ │
|
|
94
|
+
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
|
|
95
|
+
│ │ │ Develop │────▶│ Verify │────▶│ Accept │ │ │
|
|
96
|
+
│ │ │ ✨ 编码 │ │ ✅ 4门禁│ │ 🎉 AI │ │ │
|
|
97
|
+
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
|
|
98
|
+
│ │ │ │
|
|
99
|
+
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
|
100
|
+
│ │
|
|
101
|
+
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
|
102
|
+
│ │ fast 模式 (1阶段) │ │
|
|
103
|
+
│ │ │ │
|
|
104
|
+
│ │ ┌─────────┐ ┌─────────┐ │ │
|
|
105
|
+
│ │ │ Develop │────▶│ Done │ │ │
|
|
106
|
+
│ │ │ ✨ 编码 │ │ 🏁 完成 │ │ │
|
|
107
|
+
│ │ └─────────┘ └─────────┘ │ │
|
|
108
|
+
│ │ │ │
|
|
109
|
+
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
|
110
|
+
│ │
|
|
111
|
+
└─────────────────────────────────────────────────────────────────────────────────┘
|
|
112
|
+
│
|
|
113
|
+
▼
|
|
114
|
+
┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
115
|
+
│ 阶段 3: 质量门禁 (Verify 阶段) │
|
|
116
|
+
├─────────────────────────────────────────────────────────────────────────────────┤
|
|
117
|
+
│ │
|
|
118
|
+
│ ┌──────────────────────────────────────────────────────────────────────────┐ │
|
|
119
|
+
│ │ 6 Quality Gates │ │
|
|
120
|
+
│ │ │ │
|
|
121
|
+
│ │ 🚪 Gate 1: 编译检查 │ │
|
|
122
|
+
│ │ │ $ npm run build │ │
|
|
123
|
+
│ │ └── → ✅ PASS (无编译错误) / ❌ FAIL (阻止继续) │ │
|
|
124
|
+
│ │ │ │
|
|
125
|
+
│ │ 🚪 Gate 2: 测试运行 │ │
|
|
126
|
+
│ │ │ $ npm test │ │
|
|
127
|
+
│ │ └── → ✅ PASS (所有测试通过) / ❌ FAIL (阻止继续) │ │
|
|
128
|
+
│ │ │ │
|
|
129
|
+
│ │ 🚪 Gate 3: 覆盖率检查 (strict: 80%, balanced: 60%) │ │
|
|
130
|
+
│ │ │ $ npm test -- --coverage │ │
|
|
131
|
+
│ │ └── → ✅ PASS (达标) / ⚠️ WARN (不达标但继续) │ │
|
|
132
|
+
│ │ │ │
|
|
133
|
+
│ │ 🚪 Gate 4: Lint 检查 (strict: 无error, balanced: 无严重error) │ │
|
|
134
|
+
│ │ │ $ npm run lint │ │
|
|
135
|
+
│ │ └── → ✅ PASS / ❌ FAIL (strict模式阻止) │ │
|
|
136
|
+
│ │ │ │
|
|
137
|
+
│ │ 🚪 Gate 5: 安全扫描 │ │
|
|
138
|
+
│ │ │ $ npm audit --audit-level=high │ │
|
|
139
|
+
│ │ └── → ✅ PASS (无高危漏洞) / ❌ FAIL (阻止继续) │ │
|
|
140
|
+
│ │ │ │
|
|
141
|
+
│ │ 🚪 Gate 6: 验收标准 │ │
|
|
142
|
+
│ │ │ 逐项检查用户定义的验收标准 │ │
|
|
143
|
+
│ │ └── → ✅ PASS (全部满足) / ❌ FAIL (阻止继续) │ │
|
|
144
|
+
│ │ │ │
|
|
145
|
+
│ └──────────────────────────────────────────────────────────────────────────┘ │
|
|
146
|
+
│ │
|
|
147
|
+
└─────────────────────────────────────────────────────────────────────────────────┘
|
|
148
|
+
│
|
|
149
|
+
▼
|
|
150
|
+
┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
151
|
+
│ 阶段 4: AI 验收 (Accept 阶段) │
|
|
152
|
+
├─────────────────────────────────────────────────────────────────────────────────┤
|
|
153
|
+
│ │
|
|
154
|
+
│ Reviewer Agent 执行: │
|
|
155
|
+
│ ├── 📄 读取 verify-report.md │
|
|
156
|
+
│ ├── ✅ 验证所有验收标准已满足 │
|
|
157
|
+
│ ├── 🔍 确认代码可以合并 │
|
|
158
|
+
│ ├── 📊 生成质量报告 (quality-report.json) │
|
|
159
|
+
│ └── 📝 生成验收报告 (accept-report.md) │
|
|
160
|
+
│ │
|
|
161
|
+
│ 输出示例: │
|
|
162
|
+
│ ┌──────────────────────────────────────────────────────────────────────────┐ │
|
|
163
|
+
│ │ ACCEPT_PASSED │ │
|
|
164
|
+
│ │ Quality Score: A │ │
|
|
165
|
+
│ │ ├── Tests: ✅ 15/15 passed, 82% coverage │ │
|
|
166
|
+
│ │ ├── Build: ✅ Success │ │
|
|
167
|
+
│ │ ├── Lint: ✅ No errors (3 warnings) │ │
|
|
168
|
+
│ │ ├── Security: ✅ No vulnerabilities │ │
|
|
169
|
+
│ │ └── Criteria: ✅ 5/5 acceptance criteria met │ │
|
|
170
|
+
│ └──────────────────────────────────────────────────────────────────────────┘ │
|
|
171
|
+
│ │
|
|
172
|
+
└─────────────────────────────────────────────────────────────────────────────────┘
|
|
173
|
+
│
|
|
174
|
+
▼
|
|
175
|
+
┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
176
|
+
│ 阶段 5: Meeting 处理 (如有阻塞) │
|
|
177
|
+
├─────────────────────────────────────────────────────────────────────────────────┤
|
|
178
|
+
│ │
|
|
179
|
+
│ 执行过程中遇到阻塞 → 创建 Meeting → 继续执行其他任务 │
|
|
180
|
+
│ │
|
|
181
|
+
│ 执行日志: │
|
|
182
|
+
│ ├── TASK-001: ✅ 完成 │
|
|
183
|
+
│ ├── TASK-002: ⚠️ 阻塞 → 创建 Meeting-001 → 跳过 ↷ │
|
|
184
|
+
│ ├── TASK-003: ✅ 完成 │
|
|
185
|
+
│ ├── TASK-004: ⚠️ 阻塞 → 创建 Meeting-002 → 跳过 ↷ │
|
|
186
|
+
│ └── TASK-005: ✅ 完成 │
|
|
187
|
+
│ │
|
|
188
|
+
│ 执行完成! 📋 有 2 个待处理 Meeting │
|
|
189
|
+
│ │
|
|
190
|
+
│ 用户执行: /om:meeting │
|
|
191
|
+
│ ├── [1] Meeting-001: 数据库连接失败 (TASK-002) │
|
|
192
|
+
│ │ ├── 💡 提供信息 → 重新执行 TASK-002 → ✅ 完成 │
|
|
193
|
+
│ │ ├── ⏭️ 跳过任务 → 标记为 skipped │
|
|
194
|
+
│ │ └── 🔄 重试 → 重新执行 TASK-002 │
|
|
195
|
+
│ └── [2] Meeting-002: API设计决策 (TASK-004) │
|
|
196
|
+
│ ├── 💡 提供信息 → 重新执行 TASK-004 → ✅ 完成 │
|
|
197
|
+
│ ├── ⏭️ 跳过任务 → 标记为 skipped │
|
|
198
|
+
│ └── 🔄 重试 → 重新执行 TASK-004 │
|
|
199
|
+
│ │
|
|
200
|
+
│ Meeting 处理完成后: │
|
|
201
|
+
│ └── 重新执行被阻塞的任务 (TASK-002, TASK-004) │
|
|
202
|
+
│ └── 每个任务仍需经过完整的 Phase 流程 (Develop → Verify → Accept) │
|
|
203
|
+
│ │
|
|
204
|
+
└─────────────────────────────────────────────────────────────────────────────────┘
|
|
205
|
+
│
|
|
206
|
+
▼
|
|
207
|
+
┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
208
|
+
│ 阶段 6: 最终报告 │
|
|
209
|
+
├─────────────────────────────────────────────────────────────────────────────────┤
|
|
210
|
+
│ │
|
|
211
|
+
│ /om:report │
|
|
212
|
+
│ │
|
|
213
|
+
│ 📊 执行报告: │
|
|
214
|
+
│ ├── 总任务: 5 │
|
|
215
|
+
│ ├── 完成: 5 (含 2 个 Meeting 处理后完成) │
|
|
216
|
+
│ ├── 跳过: 0 │
|
|
217
|
+
│ ├── 质量评分: A │
|
|
218
|
+
│ ├── 总耗时: 35 分钟 (含 Meeting 处理) │
|
|
219
|
+
│ └── Git 提交: 5 commits │
|
|
220
|
+
│ │
|
|
221
|
+
│ 📁 产出文件: │
|
|
222
|
+
│ ├── .openmatrix/state.json # 全局状态 │
|
|
223
|
+
│ ├── .openmatrix/tasks/TASK-001/ # 任务详情 │
|
|
224
|
+
│ │ ├── task.json # 任务定义 │
|
|
225
|
+
│ │ └── artifacts/ # 产出物 │
|
|
226
|
+
│ │ ├── result.md # 实现说明 │
|
|
227
|
+
│ │ ├── verify-report.md # 验证报告 │
|
|
228
|
+
│ │ ├── quality-report.json # 质量报告 │
|
|
229
|
+
│ │ └── accept-report.md # 验收报告 │
|
|
230
|
+
│ └── .openmatrix/approvals/ # 审批记录 (含 Meeting) │
|
|
231
|
+
│ │
|
|
232
|
+
└─────────────────────────────────────────────────────────────────────────────────┘
|
|
233
|
+
|
|
234
|
+
🎉 完成!
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 为什么选择 OpenMatrix?
|
|
240
|
+
|
|
241
|
+
### 与 superpowers / gsd 对比
|
|
242
|
+
|
|
243
|
+
| 特性 | OpenMatrix | superpowers | gsd |
|
|
244
|
+
|------|:----------:|:-----------:|:---:|
|
|
245
|
+
| **100% 自动化** | ✅ auto 模式 | ❌ 50% | ❌ 60% |
|
|
246
|
+
| **TDD 内置** | ✅ strict 模式 | ❌ 需手动 | ❌ 无 |
|
|
247
|
+
| **覆盖率强制** | ✅ 60-80% | ❌ 无 | ❌ 无 |
|
|
248
|
+
| **安全扫描** | ✅ npm audit | ❌ 无 | ❌ 无 |
|
|
249
|
+
| **AI 验收** | ✅ Reviewer Agent | ❌ 无 | 部分 |
|
|
250
|
+
| **阻塞不中断** | ✅ Meeting 机制 | ❌ 停止 | ❌ 停止 |
|
|
251
|
+
| **质量报告** | ✅ JSON + MD | ❌ 无 | 部分 |
|
|
252
|
+
| **上手难度** | ⚡ 一句话开始 | 中等 | 较高 |
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## 快速开始
|
|
257
|
+
|
|
258
|
+
### 安装
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
# 克隆并安装
|
|
262
|
+
git clone https://github.com/bigfish1913/openmatrix.git
|
|
263
|
+
cd openmatrix && npm install && npm run build && npm link
|
|
264
|
+
|
|
265
|
+
# 复制 Skills
|
|
266
|
+
mkdir -p ~/.claude/commands/om
|
|
267
|
+
cp skills/*.md ~/.claude/commands/om/
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### 第一次使用
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
/om:start 实现用户登录功能
|
|
274
|
+
|
|
275
|
+
# 系统会先问:
|
|
276
|
+
┌─────────────────────────────────────────────────────────┐
|
|
277
|
+
│ 问题 0: 选择质量级别 │
|
|
278
|
+
├─────────────────────────────────────────────────────────┤
|
|
279
|
+
│ 🚀 strict → TDD + 80%覆盖率 + AI验收 (推荐生产代码) │
|
|
280
|
+
│ ⚖️ balanced → 60%覆盖率 + AI验收 (日常开发) │
|
|
281
|
+
│ ⚡ fast → 无质量门禁 (快速原型) │
|
|
282
|
+
└─────────────────────────────────────────────────────────┘
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 核心特性
|
|
288
|
+
|
|
289
|
+
### 1️⃣ 三级质量配置 (第一个问题就让你选)
|
|
290
|
+
|
|
291
|
+
| 级别 | TDD | 覆盖率 | Lint | 安全 | AI验收 | 适用场景 |
|
|
292
|
+
|:----:|:---:|:------:|:----:|:----:|:------:|---------|
|
|
293
|
+
| **strict** | ✅ | 80% | ✅ 严格 | ✅ | ✅ | 🏭 **生产代码** |
|
|
294
|
+
| **balanced** | ❌ | 60% | ✅ | ✅ | ✅ | 📦 日常开发 |
|
|
295
|
+
| **fast** | ❌ | 0% | ❌ | ❌ | ❌ | 🏃 快速原型 |
|
|
296
|
+
|
|
297
|
+
### 2️⃣ 六道质量门禁 (Verify 阶段)
|
|
298
|
+
|
|
299
|
+
```
|
|
300
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
301
|
+
│ Verify 阶段 - 质量门禁 │
|
|
302
|
+
├─────────────────────────────────────────────────────────────┤
|
|
303
|
+
│ 🚪 Gate 1: 编译检查 npm run build → 必须通过 │
|
|
304
|
+
│ 🚪 Gate 2: 测试运行 npm test → 必须通过 │
|
|
305
|
+
│ 🚪 Gate 3: 覆盖率检查 >= 60%/80% → 可配置 │
|
|
306
|
+
│ 🚪 Gate 4: Lint 检查 无 error → 可配置 │
|
|
307
|
+
│ 🚪 Gate 5: 安全扫描 npm audit → 无高危漏洞 │
|
|
308
|
+
│ 🚪 Gate 6: 验收标准 用户定义 → 必须全部满足 │
|
|
309
|
+
└─────────────────────────────────────────────────────────────┘
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### 3️⃣ TDD 模式 (strict 级别)
|
|
313
|
+
|
|
314
|
+
```
|
|
315
|
+
传统开发: 代码 → 测试 → Bug → 修复 → 回归 → ... (循环多次)
|
|
316
|
+
|
|
317
|
+
OpenMatrix TDD (strict):
|
|
318
|
+
🧪 测试阶段: 先写测试 (RED - 测试必须失败)
|
|
319
|
+
✨ 开发阶段: 再写代码 (GREEN - 测试必须通过)
|
|
320
|
+
✅ 验证阶段: 6道质量门禁
|
|
321
|
+
🎉 验收阶段: AI Reviewer 最终确认
|
|
322
|
+
|
|
323
|
+
结果: 第一次就写对,无需返工
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### 4️⃣ Meeting 机制 (阻塞不中断)
|
|
327
|
+
|
|
328
|
+
```
|
|
329
|
+
❌ 其他方案:
|
|
330
|
+
TASK-001 ✓ → TASK-002 阻塞 ⏸️ → 等用户... (浪费时间)
|
|
331
|
+
|
|
332
|
+
✅ OpenMatrix:
|
|
333
|
+
TASK-001 ✓ → TASK-002 阻塞 → 创建Meeting → 跳过 ↷
|
|
334
|
+
TASK-003 ✓ → TASK-004 ✓ → 完成!
|
|
335
|
+
→ 用户用 /om:meeting 统一处理所有阻塞
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### 5️⃣ AI 验收 (Accept 阶段)
|
|
339
|
+
|
|
340
|
+
```
|
|
341
|
+
Accept 阶段由 Reviewer Agent 执行:
|
|
342
|
+
├── 检查 verify-report.md
|
|
343
|
+
├── 验证所有验收标准
|
|
344
|
+
├── 确认代码可合并
|
|
345
|
+
└── 生成 accept-report.md
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## 执行流程
|
|
351
|
+
|
|
352
|
+
### strict 模式 (推荐生产代码)
|
|
353
|
+
|
|
354
|
+
```
|
|
355
|
+
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
|
|
356
|
+
│ TDD │────▶│ Develop │────▶│ Verify │────▶│ Accept │
|
|
357
|
+
│ 🧪 RED │ │ ✨ GREEN│ │ ✅ 6门禁│ │ 🎉 AI │
|
|
358
|
+
└─────────┘ └─────────┘ └─────────┘ └─────────┘
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### balanced 模式 (日常开发)
|
|
362
|
+
|
|
363
|
+
```
|
|
364
|
+
┌─────────┐ ┌─────────┐ ┌─────────┐
|
|
365
|
+
│ Develop │────▶│ Verify │────▶│ Accept │
|
|
366
|
+
│ ✨ 编码 │ │ ✅ 4门禁│ │ 🎉 AI │
|
|
367
|
+
└─────────┘ └─────────┘ └─────────┘
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
## Skills 命令
|
|
373
|
+
|
|
374
|
+
| 命令 | 用途 |
|
|
375
|
+
|------|------|
|
|
376
|
+
| `/om:start` | 启动新任务 (第一个问题选质量级别) |
|
|
377
|
+
| `/om:status` | 查看状态 |
|
|
378
|
+
| `/om:approve` | 审批决策 |
|
|
379
|
+
| `/om:meeting` | 处理阻塞问题 |
|
|
380
|
+
| `/om:resume` | 恢复中断 |
|
|
381
|
+
| `/om:retry` | 重试失败 |
|
|
382
|
+
| `/om:report` | 生成报告 |
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
## 质量报告
|
|
387
|
+
|
|
388
|
+
每个任务完成后生成:
|
|
389
|
+
|
|
390
|
+
```json
|
|
391
|
+
{
|
|
392
|
+
"taskId": "TASK-001",
|
|
393
|
+
"overall": "pass",
|
|
394
|
+
"tests": { "passed": 15, "failed": 0, "coverage": 82 },
|
|
395
|
+
"build": { "success": true },
|
|
396
|
+
"lint": { "errors": 0, "warnings": 3 },
|
|
397
|
+
"security": { "vulnerabilities": [] },
|
|
398
|
+
"acceptance": { "met": 5, "total": 5 }
|
|
399
|
+
}
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## 常见问题
|
|
405
|
+
|
|
406
|
+
### Q: 哪种质量级别适合我?
|
|
407
|
+
|
|
408
|
+
| 你的场景 | 推荐级别 |
|
|
409
|
+
|---------|---------|
|
|
410
|
+
| 🏭 生产代码、核心功能 | **strict** |
|
|
411
|
+
| 📦 日常功能开发 | **balanced** |
|
|
412
|
+
| 🏃 快速原型、POC | **fast** |
|
|
413
|
+
|
|
414
|
+
### Q: OpenMatrix 和 superpowers 可以一起用吗?
|
|
415
|
+
|
|
416
|
+
**A**: 可以!OpenMatrix 自动执行任务,superpowers 提供额外技能。
|
|
417
|
+
|
|
418
|
+
### Q: Meeting 是什么?
|
|
419
|
+
|
|
420
|
+
**A**: 遇到阻塞时创建记录,但**不停止执行**。最后用 `/om:meeting` 统一处理。
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## 配置
|
|
425
|
+
|
|
426
|
+
`.openmatrixrc.json`:
|
|
427
|
+
|
|
428
|
+
```json
|
|
429
|
+
{
|
|
430
|
+
"quality": {
|
|
431
|
+
"tdd": false,
|
|
432
|
+
"minCoverage": 60,
|
|
433
|
+
"strictLint": true,
|
|
434
|
+
"securityScan": true
|
|
435
|
+
},
|
|
436
|
+
"approvalPoints": ["plan", "merge"],
|
|
437
|
+
"agents": { "maxConcurrent": 3 }
|
|
438
|
+
}
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
## 开发
|
|
444
|
+
|
|
445
|
+
```bash
|
|
446
|
+
git clone https://github.com/bigfish1913/openmatrix.git
|
|
447
|
+
cd openmatrix && npm install && npm run build && npm test
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
## Roadmap
|
|
453
|
+
|
|
454
|
+
- [x] TDD 模式
|
|
455
|
+
- [x] 6 道质量门禁
|
|
456
|
+
- [x] Meeting 机制
|
|
457
|
+
- [x] 质量报告
|
|
458
|
+
- [x] AI 验收
|
|
459
|
+
- [ ] VSCode 扩展
|
|
460
|
+
- [ ] Python/Go 支持
|
|
461
|
+
- [ ] CI/CD 集成
|
|
462
|
+
|
|
463
|
+
---
|
|
464
|
+
|
|
465
|
+
<div align="center">
|
|
466
|
+
|
|
467
|
+
**如果觉得有用,请给个 ⭐ Star!**
|
|
468
|
+
|
|
469
|
+
MIT © 2024 | Made by [bigfish1913](https://github.com/bigfish1913)
|
|
470
|
+
|
|
471
|
+
</div>
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
# English
|
|
476
|
+
|
|
477
|
+
## OpenMatrix: High Quality + Full Automation
|
|
478
|
+
|
|
479
|
+
The **only** AI task orchestration with TDD + Quality Gates + 100% Automation.
|
|
480
|
+
|
|
481
|
+
### Quick Start
|
|
482
|
+
|
|
483
|
+
```bash
|
|
484
|
+
# Install
|
|
485
|
+
git clone https://github.com/bigfish1913/openmatrix.git
|
|
486
|
+
cd openmatrix && npm install && npm run build && npm link
|
|
487
|
+
mkdir -p ~/.claude/commands/om && cp skills/*.md ~/.claude/commands/om/
|
|
488
|
+
|
|
489
|
+
# Use (first question asks quality level)
|
|
490
|
+
/om:start Implement user login
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
### Quality Levels
|
|
494
|
+
|
|
495
|
+
| Level | TDD | Coverage | Gates | Use Case |
|
|
496
|
+
|-------|:---:|:--------:|:-----:|----------|
|
|
497
|
+
| **strict** | ✅ | 80% | 6 | Production code |
|
|
498
|
+
| **balanced** | ❌ | 60% | 4 | Daily development |
|
|
499
|
+
| **fast** | ❌ | 0% | 1 | Prototypes |
|
|
500
|
+
|
|
501
|
+
### Key Features
|
|
502
|
+
|
|
503
|
+
- ✅ **Quality Level Selection** - First question you answer
|
|
504
|
+
- ✅ **TDD Mode** - strict level includes test-first
|
|
505
|
+
- ✅ **6 Quality Gates** - Build, Tests, Coverage, Lint, Security, Acceptance
|
|
506
|
+
- ✅ **AI Acceptance** - Reviewer Agent validates final result
|
|
507
|
+
- ✅ **Meeting Mechanism** - Blockers don't stop execution
|
|
508
|
+
- ✅ **Quality Reports** - JSON format for every task
|
|
509
|
+
|
|
510
|
+
### License
|
|
511
|
+
|
|
512
|
+
MIT
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { Task, AgentType, AgentResult } from '../types/index.js';
|
|
2
|
+
import { StateManager } from '../storage/state-manager.js';
|
|
3
|
+
import { ApprovalManager } from '../orchestrator/approval-manager.js';
|
|
4
|
+
export interface AgentRunnerConfig {
|
|
5
|
+
maxConcurrent: number;
|
|
6
|
+
taskTimeout: number;
|
|
7
|
+
}
|
|
8
|
+
export interface SubagentPrompt {
|
|
9
|
+
task: Task;
|
|
10
|
+
context: string;
|
|
11
|
+
instructions: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Claude Code Subagent 类型
|
|
15
|
+
*/
|
|
16
|
+
export type ClaudeCodeSubagentType = 'general-purpose' | 'Explore' | 'Plan';
|
|
17
|
+
/**
|
|
18
|
+
* Subagent 任务配置 - 用于 Agent 工具调用
|
|
19
|
+
*/
|
|
20
|
+
export interface SubagentTask {
|
|
21
|
+
/** Subagent 类型 */
|
|
22
|
+
subagent_type: ClaudeCodeSubagentType;
|
|
23
|
+
/** 简短描述 (3-5 词) */
|
|
24
|
+
description: string;
|
|
25
|
+
/** 完整任务提示词 */
|
|
26
|
+
prompt: string;
|
|
27
|
+
/** 是否使用隔离 worktree */
|
|
28
|
+
isolation?: 'worktree';
|
|
29
|
+
/** 任务 ID (用于追踪) */
|
|
30
|
+
taskId: string;
|
|
31
|
+
/** 原始 Agent 类型 */
|
|
32
|
+
agentType: AgentType;
|
|
33
|
+
/** 超时时间 (ms) */
|
|
34
|
+
timeout: number;
|
|
35
|
+
/** 是否需要审批 */
|
|
36
|
+
needsApproval: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 用户上下文信息
|
|
40
|
+
*/
|
|
41
|
+
export interface UserContext {
|
|
42
|
+
objective?: string;
|
|
43
|
+
techStack?: string[];
|
|
44
|
+
testCoverage?: string;
|
|
45
|
+
documentationLevel?: string;
|
|
46
|
+
additionalContext?: Record<string, string>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* AgentRunner - 使用 Subagent 执行任务
|
|
50
|
+
*
|
|
51
|
+
* 通过 Claude Code 的 Agent 工具启动子 Agent 执行任务
|
|
52
|
+
*
|
|
53
|
+
* 增强版特性:
|
|
54
|
+
* - 注入用户上下文到提示词
|
|
55
|
+
* - 注入验收标准
|
|
56
|
+
* - 注入代码上下文
|
|
57
|
+
*/
|
|
58
|
+
export declare class AgentRunner {
|
|
59
|
+
private stateManager;
|
|
60
|
+
private approvalManager;
|
|
61
|
+
private config;
|
|
62
|
+
private runningAgents;
|
|
63
|
+
private userContext;
|
|
64
|
+
constructor(stateManager: StateManager, approvalManager: ApprovalManager, config?: Partial<AgentRunnerConfig>);
|
|
65
|
+
/**
|
|
66
|
+
* 设置用户上下文
|
|
67
|
+
*/
|
|
68
|
+
setUserContext(context: UserContext): void;
|
|
69
|
+
/**
|
|
70
|
+
* 获取用户上下文
|
|
71
|
+
*/
|
|
72
|
+
getUserContext(): UserContext;
|
|
73
|
+
/**
|
|
74
|
+
* 准备 Subagent 任务配置
|
|
75
|
+
*
|
|
76
|
+
* 返回可用于 Agent 工具调用的完整配置
|
|
77
|
+
*/
|
|
78
|
+
prepareSubagentTask(task: Task): Promise<SubagentTask>;
|
|
79
|
+
/**
|
|
80
|
+
* 批量准备 Subagent 任务
|
|
81
|
+
*/
|
|
82
|
+
prepareSubagentTasks(tasks: Task[]): Promise<SubagentTask[]>;
|
|
83
|
+
/**
|
|
84
|
+
* 映射 OpenMatrix Agent 类型到 Claude Code Subagent 类型
|
|
85
|
+
*/
|
|
86
|
+
mapAgentType(agentType: AgentType): ClaudeCodeSubagentType;
|
|
87
|
+
/**
|
|
88
|
+
* 判断任务是否需要隔离执行
|
|
89
|
+
*/
|
|
90
|
+
private needsIsolation;
|
|
91
|
+
/**
|
|
92
|
+
* 构建完整的执行提示词
|
|
93
|
+
*/
|
|
94
|
+
buildExecutionPrompt(task: Task): string;
|
|
95
|
+
/**
|
|
96
|
+
* 构建阶段上下文
|
|
97
|
+
*/
|
|
98
|
+
private buildPhaseContext;
|
|
99
|
+
/**
|
|
100
|
+
* 获取当前阶段
|
|
101
|
+
*/
|
|
102
|
+
private getCurrentPhase;
|
|
103
|
+
/**
|
|
104
|
+
* 执行任务 - 返回 Subagent 调用提示 (向后兼容)
|
|
105
|
+
* @deprecated 使用 prepareSubagentTask() 代替
|
|
106
|
+
*/
|
|
107
|
+
runTask(task: Task): Promise<AgentResult>;
|
|
108
|
+
/**
|
|
109
|
+
* 构建 Agent 提示词
|
|
110
|
+
*/
|
|
111
|
+
private buildAgentPrompt;
|
|
112
|
+
/**
|
|
113
|
+
* 构建任务上下文 (增强版: 注入用户上下文)
|
|
114
|
+
*/
|
|
115
|
+
private buildContext;
|
|
116
|
+
/**
|
|
117
|
+
* Planner Agent 提示词
|
|
118
|
+
*/
|
|
119
|
+
private getPlannerPrompt;
|
|
120
|
+
/**
|
|
121
|
+
* Coder Agent 提示词 (增强版)
|
|
122
|
+
*/
|
|
123
|
+
private getCoderPrompt;
|
|
124
|
+
/**
|
|
125
|
+
* Tester Agent 提示词 (增强版)
|
|
126
|
+
*/
|
|
127
|
+
private getTesterPrompt;
|
|
128
|
+
/**
|
|
129
|
+
* Reviewer Agent 提示词 (增强版)
|
|
130
|
+
*/
|
|
131
|
+
private getReviewerPrompt;
|
|
132
|
+
/**
|
|
133
|
+
* Researcher Agent 提示词
|
|
134
|
+
*/
|
|
135
|
+
private getResearcherPrompt;
|
|
136
|
+
/**
|
|
137
|
+
* Executor Agent 提示词
|
|
138
|
+
*/
|
|
139
|
+
private getExecutorPrompt;
|
|
140
|
+
/**
|
|
141
|
+
* 生成运行 ID
|
|
142
|
+
*/
|
|
143
|
+
private generateRunId;
|
|
144
|
+
/**
|
|
145
|
+
* 获取运行中的 Agent 数量
|
|
146
|
+
*/
|
|
147
|
+
getRunningCount(): number;
|
|
148
|
+
/**
|
|
149
|
+
* 检查是否可以启动新 Agent
|
|
150
|
+
*/
|
|
151
|
+
canStartNew(): boolean;
|
|
152
|
+
}
|