openmatrix 0.2.24 → 0.2.25
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/cli/commands/start.js +16 -15
- package/dist/orchestrator/task-planner.d.ts +5 -104
- package/dist/orchestrator/task-planner.js +99 -799
- package/dist/test/generator.js +39 -11
- package/dist/types/index.d.ts +3 -1
- package/package.json +61 -61
- package/skills/auto.md +383 -415
- package/skills/brainstorm.md +27 -29
- package/skills/plan.md +261 -0
- package/skills/start.md +552 -707
package/skills/brainstorm.md
CHANGED
|
@@ -42,7 +42,7 @@ description: "Use when the user wants to explore requirements, design alternativ
|
|
|
42
42
|
- ❌ gsd:* → 全部被 OpenMatrix 替代
|
|
43
43
|
- ❌ 任何其他任务编排相关的技能
|
|
44
44
|
|
|
45
|
-
**相关技能**: `/om:research` (领域调研) | `/om:start` (任务执行) | `/om:auto` (全自动)
|
|
45
|
+
**相关技能**: `/om:research` (领域调研) | `/om:plan` (方案生成) | `/om:start` (任务执行) | `/om:auto` (全自动)
|
|
46
46
|
</NO-OTHER-SKILLS>
|
|
47
47
|
|
|
48
48
|
<HARD-GATE>
|
|
@@ -341,12 +341,14 @@ AskUserQuestion: `header: "下一步"`, `multiSelect: false`
|
|
|
341
341
|
|
|
342
342
|
| label | description |
|
|
343
343
|
|-------|-------------|
|
|
344
|
-
| 开始执行 (推荐) |
|
|
344
|
+
| 开始执行 (推荐) | 调用 /om:plan 生成技术方案后执行 |
|
|
345
345
|
| 修改设计 | 需要调整设计方案 |
|
|
346
346
|
|
|
347
|
-
## 步骤 8:
|
|
347
|
+
## 步骤 8: 路由到 plan 或直接执行
|
|
348
348
|
|
|
349
|
-
用户选择"确认并执行"
|
|
349
|
+
用户选择"确认并执行"后,根据路由判断结果进入不同流程:
|
|
350
|
+
|
|
351
|
+
**路由为 feature 时**(小任务,不需要 plan):
|
|
350
352
|
|
|
351
353
|
1. **检测状态:**
|
|
352
354
|
```bash
|
|
@@ -358,9 +360,9 @@ ls .openmatrix/state.json 2>/dev/null
|
|
|
358
360
|
openmatrix start --init-only
|
|
359
361
|
```
|
|
360
362
|
|
|
361
|
-
3.
|
|
363
|
+
3. **写入 feature-session.json 并直接调用 feature:**
|
|
362
364
|
|
|
363
|
-
|
|
365
|
+
写入 `.openmatrix/feature-session.json`:
|
|
364
366
|
```json
|
|
365
367
|
{
|
|
366
368
|
"taskDescription": "任务描述",
|
|
@@ -369,31 +371,27 @@ openmatrix start --init-only
|
|
|
369
371
|
}
|
|
370
372
|
```
|
|
371
373
|
|
|
372
|
-
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
"title": "任务标题",
|
|
376
|
-
"description": "基于头脑风暴的整体描述",
|
|
377
|
-
"goals": ["目标1: 独立功能模块", "目标2: 独立功能模块"],
|
|
378
|
-
"constraints": ["约束"],
|
|
379
|
-
"deliverables": ["交付物"],
|
|
380
|
-
"plan": "## 技术方案\n..."
|
|
381
|
-
}
|
|
374
|
+
4. **调用 Skill:**
|
|
375
|
+
```
|
|
376
|
+
Skill 工具: skill = "om:feature"
|
|
382
377
|
```
|
|
383
378
|
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
4. **⚠️ 必须执行(不可跳过):根据路由调用对应 Skill**
|
|
379
|
+
**路由为 start 时**(标准任务,需要先生成 plan):
|
|
387
380
|
|
|
381
|
+
1. **调用 /om:plan 生成技术方案和任务元数据:**
|
|
388
382
|
```
|
|
389
|
-
Skill 工具:
|
|
390
|
-
- feature → skill = "om:feature"
|
|
391
|
-
- start → skill = "om:start"
|
|
383
|
+
Skill 工具: skill = "om:plan", args = "基于头脑风暴的设计文档生成方案"
|
|
392
384
|
```
|
|
393
385
|
|
|
394
|
-
|
|
395
|
-
-
|
|
396
|
-
-
|
|
386
|
+
`/om:plan` 会:
|
|
387
|
+
- 读取 brainstorm 设计文档
|
|
388
|
+
- 生成 `.openmatrix/plan.md`
|
|
389
|
+
- 提取 goals/goalTypes/goalComplexity 写入 `.openmatrix/tasks-input.json`
|
|
390
|
+
- 自动路由到 `/om:start`
|
|
391
|
+
|
|
392
|
+
> **注意**: brainstorm 不再直接写入 tasks-input.json,而是通过 /om:plan 生成。这确保 plan 和 tasks-input.json 的质量。
|
|
393
|
+
|
|
394
|
+
> **路由为 start 时不直接调用 /om:start** — 先经过 /om:plan 生成方案,plan 完成后自动路由到 start。
|
|
397
395
|
|
|
398
396
|
</process>
|
|
399
397
|
|
|
@@ -422,8 +420,8 @@ $ARGUMENTS
|
|
|
422
420
|
## 路由判断(澄清完成后自动判断)
|
|
423
421
|
|
|
424
422
|
brainstorm 澄清完成后,自动判断下一步路由:
|
|
425
|
-
- **feature**: 单一改动点 + 实现路径清晰 → 写入 feature-session.json
|
|
426
|
-
- **start**: 任务明确但需完整追踪 →
|
|
423
|
+
- **feature**: 单一改动点 + 实现路径清晰 → 写入 feature-session.json,直接调用 /om:feature
|
|
424
|
+
- **start**: 任务明确但需完整追踪 → 调用 /om:plan 生成方案,plan 完成后自动路由到 /om:start
|
|
427
425
|
|
|
428
426
|
不再让用户二次选择流程,根据澄清结果直接进入对应执行流程。
|
|
429
427
|
|
|
@@ -438,7 +436,7 @@ brainstorm 澄清完成后,自动判断下一步路由:
|
|
|
438
436
|
|
|
439
437
|
- 每次头脑风暴都会输出设计文档到 `docs/openmatrix/YYYY-MM-DD-<topic>-design.md`
|
|
440
438
|
- 文档包含:核心目标、架构、数据模型、接口、技术方案、错误处理、测试策略、风险、验收标准
|
|
441
|
-
- 设计文档是 `/om:
|
|
439
|
+
- 设计文档是 `/om:plan` 生成技术方案时的重要参考
|
|
442
440
|
- 文档内容来自步骤 5 逐节确认的设计
|
|
443
441
|
|
|
444
442
|
## 在已有代码库中工作
|
|
@@ -522,7 +520,7 @@ brainstorm 澄清完成后,自动判断下一步路由:
|
|
|
522
520
|
│ │ │
|
|
523
521
|
▼ ▼ ▼
|
|
524
522
|
┌─────────┐ ┌─────────┐ 完成
|
|
525
|
-
│/om:feature│ │/om:start
|
|
523
|
+
│/om:feature│ │/om:plan │──→ /om:start
|
|
526
524
|
└─────────┘ └─────────┘
|
|
527
525
|
```
|
|
528
526
|
</notes>
|
package/skills/plan.md
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: om:plan
|
|
3
|
+
description: "Use when user needs to generate a technical plan before task execution. Triggers on PLAN-GENERATION intent: brainstorm completed and user wants to proceed, user explicitly requests plan generation, or needs to create plan.md + tasks-input.json before execution. DO NOT trigger on: direct execution requests (use /om:start), brainstorming (use /om:brainstorm), or status checks. Intent signals: user says 'generate plan', brainstorm outputs design document and routes here, or user wants to review technical plan before executing."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<INTENT-JUDGMENT>
|
|
7
|
+
## 意图判断指南
|
|
8
|
+
|
|
9
|
+
**AI 应根据用户语义判断意图:**
|
|
10
|
+
|
|
11
|
+
### 触发信号(技术方案生成意图)
|
|
12
|
+
|
|
13
|
+
- brainstorm 完成,需要生成技术方案
|
|
14
|
+
- 用户明确要"生成方案"、"制定计划"
|
|
15
|
+
- 需要在执行前形成完整的技术方案
|
|
16
|
+
- 已有设计文档,需要转化为可执行的技术方案
|
|
17
|
+
|
|
18
|
+
### 不触发信号
|
|
19
|
+
|
|
20
|
+
| 用户意图 | 应调用 |
|
|
21
|
+
|---------|--------|
|
|
22
|
+
| 需求不明确,需要探索 | /om:brainstorm |
|
|
23
|
+
| 已有方案,直接执行 | /om:start |
|
|
24
|
+
| 小改动,不需要方案 | /om:feature |
|
|
25
|
+
| 查看状态 | /om:status |
|
|
26
|
+
|
|
27
|
+
### 示例判断
|
|
28
|
+
|
|
29
|
+
| 用户消息 | 判断 | 结果 |
|
|
30
|
+
|---------|------|------|
|
|
31
|
+
| "基于刚才的设计生成方案" | 方案生成意图 | 触发 |
|
|
32
|
+
| brainstorm 路由过来 | 自动路由 | 触发 |
|
|
33
|
+
| "直接开始实现" | 执行意图 | /om:start |
|
|
34
|
+
| "这个功能怎么设计" | 设计探索 | /om:brainstorm |
|
|
35
|
+
</INTENT-JUDGMENT>
|
|
36
|
+
|
|
37
|
+
<NO-OTHER-SKILLS>
|
|
38
|
+
**绝对禁止**调用以下任何技能或工具:
|
|
39
|
+
- gsd-executor、gsd:* 等 GSD 相关技能
|
|
40
|
+
- superpowers:* 等 superpowers 相关技能
|
|
41
|
+
- 任何其他任务编排相关的 Agent 或工具
|
|
42
|
+
|
|
43
|
+
**相关技能**: `/om:brainstorm` (需求探索) | `/om:start` (标准执行) | `/om:feature` (轻量执行) | `/om:auto` (全自动)
|
|
44
|
+
</NO-OTHER-SKILLS>
|
|
45
|
+
|
|
46
|
+
<MANDATORY-EXECUTION-ORDER>
|
|
47
|
+
## 执行顺序 - 必须严格按此顺序,不得跳过任何步骤
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
Step 1: 读取输入(brainstorm 设计文档 / 用户描述 / 研究上下文)
|
|
51
|
+
Step 2: 生成技术方案,写入 .openmatrix/plan.md <- 独立阶段
|
|
52
|
+
Step 3: 提取结构化元数据(goals/goalTypes/goalComplexity)
|
|
53
|
+
Step 4: 写入 .openmatrix/tasks-input.json <- 必须完成
|
|
54
|
+
Step 5: 展示执行计划,确认后路由到 start/feature
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**违反以下任一规则将导致方案质量下降:**
|
|
58
|
+
|
|
59
|
+
- **禁止跳过 Step 2** - plan.md 是 Agent 执行的核心参考
|
|
60
|
+
- **禁止跳过 Step 3** - goalTypes/goalComplexity 决定任务拆分策略
|
|
61
|
+
- **禁止在 plan 阶段写任何业务代码** - 代码在 start/feature 阶段由 Agent 执行
|
|
62
|
+
</MANDATORY-EXECUTION-ORDER>
|
|
63
|
+
|
|
64
|
+
<objective>
|
|
65
|
+
基于需求分析(brainstorm 产出或用户描述),生成完整的技术方案(plan.md)和结构化元数据(tasks-input.json),为后续执行提供可操作的输入。
|
|
66
|
+
|
|
67
|
+
plan 阶段只做方案设计和元数据提取,不写任何业务代码。
|
|
68
|
+
</objective>
|
|
69
|
+
|
|
70
|
+
<process>
|
|
71
|
+
|
|
72
|
+
## Step 1: 读取输入
|
|
73
|
+
|
|
74
|
+
**按优先级检测输入来源:**
|
|
75
|
+
|
|
76
|
+
| 来源 | 检测方式 | 处理 |
|
|
77
|
+
|------|---------|------|
|
|
78
|
+
| brainstorm 设计文档 | `docs/openmatrix/YYYY-MM-DD-*-design.md` | 读取最新设计文档 |
|
|
79
|
+
| 研究上下文 | `.openmatrix/research/context.json` | 读取研究目标和报告 |
|
|
80
|
+
| `$ARGUMENTS` 直接描述 | 参数非空 | 直接使用 |
|
|
81
|
+
| 无输入 | 以上都不存在 | AskUserQuestion 询问 |
|
|
82
|
+
|
|
83
|
+
**检测 brainstorm 设计文档:**
|
|
84
|
+
```bash
|
|
85
|
+
ls -t docs/openmatrix/*-design.md 2>/dev/null | head -1
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**检测研究上下文:**
|
|
89
|
+
```bash
|
|
90
|
+
cat .openmatrix/research/context.json 2>/dev/null || echo "NO_RESEARCH"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
如果检测到研究上下文,同时读取研究报告作为领域知识。
|
|
94
|
+
|
|
95
|
+
## Step 2: 生成技术方案(plan.md)
|
|
96
|
+
|
|
97
|
+
**独立阶段 — 产出供 Agent 执行时参考的技术方案文档。**
|
|
98
|
+
|
|
99
|
+
AI 分析需求,生成完整的技术方案,用 Write 工具写入 `.openmatrix/plan.md`:
|
|
100
|
+
|
|
101
|
+
```markdown
|
|
102
|
+
# 技术方案: 任务标题
|
|
103
|
+
|
|
104
|
+
## 整体架构
|
|
105
|
+
(架构图、模块划分、数据流)
|
|
106
|
+
|
|
107
|
+
## 模块设计
|
|
108
|
+
(每个模块的职责、接口、依赖关系)
|
|
109
|
+
|
|
110
|
+
## 接口定义
|
|
111
|
+
(核心 API / 函数签名 / 数据结构)
|
|
112
|
+
|
|
113
|
+
## 数据模型
|
|
114
|
+
(实体关系、表结构、字段定义)
|
|
115
|
+
|
|
116
|
+
## 技术栈
|
|
117
|
+
(语言、框架、库、工具)
|
|
118
|
+
|
|
119
|
+
## 关键决策
|
|
120
|
+
(技术选型理由、权衡取舍)
|
|
121
|
+
|
|
122
|
+
## 实现顺序建议
|
|
123
|
+
(模块间依赖关系,建议的开发顺序)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**研究上下文集成**: 如果已加载研究领域,AI 应基于研究报告中领域知识生成 plan,包含领域技术栈、架构模式等。
|
|
127
|
+
|
|
128
|
+
## Step 3: 提取结构化元数据
|
|
129
|
+
|
|
130
|
+
从需求和 plan 中提取 CLI 需要的结构化信息:
|
|
131
|
+
|
|
132
|
+
- **goals**: 3-8 个明确功能目标,每个是独立可交付模块
|
|
133
|
+
- **goalTypes**: 为每个 goal 标注类型(必填,与 goals 一一对应):
|
|
134
|
+
- `development` - 需要编写代码的功能/模块实现 -> 拆分为"实现+测试"任务对
|
|
135
|
+
- `testing` - 明确的测试任务(如"编写 E2E 测试")-> 单个测试任务
|
|
136
|
+
- `documentation` - 文档编写(如"编写 API 文档")-> 单个文档任务
|
|
137
|
+
- `other` - 配置、部署、优化等非编码任务 -> 单个任务
|
|
138
|
+
- **goalComplexity**: 为每个 goal 标注复杂度(必填,与 goals 一一对应):
|
|
139
|
+
- `low` - 简单配置、样式、工具函数
|
|
140
|
+
- `medium` - 一般功能实现、测试任务
|
|
141
|
+
- `high` - 架构设计、核心模块、复杂业务逻辑
|
|
142
|
+
- **constraints**: 技术栈、兼容性等约束
|
|
143
|
+
- **deliverables**: 交付物列表
|
|
144
|
+
|
|
145
|
+
**goalTypes 标注示例:**
|
|
146
|
+
|
|
147
|
+
| Goal | Type | Complexity | 理由 |
|
|
148
|
+
|------|------|------------|------|
|
|
149
|
+
| "项目脚手架: Vite+TS 配置" | development | low | 配置类 |
|
|
150
|
+
| "GameLoop 60fps 游戏循环" | development | high | 核心功能 |
|
|
151
|
+
| "所有核心模块的单元测试" | testing | medium | 测试任务 |
|
|
152
|
+
| "API 文档编写" | documentation | low | 文档类 |
|
|
153
|
+
| "CI/CD 流水线配置" | other | medium | 配置类 |
|
|
154
|
+
|
|
155
|
+
## Step 4: 写入 tasks-input.json
|
|
156
|
+
|
|
157
|
+
用 Write 工具写入 `.openmatrix/tasks-input.json`:
|
|
158
|
+
|
|
159
|
+
```json
|
|
160
|
+
{
|
|
161
|
+
"title": "任务标题",
|
|
162
|
+
"description": "整体描述",
|
|
163
|
+
"goals": ["目标1", "目标2", "目标3"],
|
|
164
|
+
"goalTypes": ["development", "development", "testing"],
|
|
165
|
+
"goalComplexity": ["high", "medium", "medium"],
|
|
166
|
+
"constraints": ["约束1"],
|
|
167
|
+
"deliverables": ["src/xxx.ts"]
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**注意:**
|
|
172
|
+
- `quality`、`mode`、`e2eTests` 不在此写入,由执行阶段(/om:start)的必选问题决定
|
|
173
|
+
- `plan` 不在此写入,plan.md 是独立文件,CLI 会自动读取
|
|
174
|
+
- **goalTypes** 必须与 goals 数组长度一致,一一对应
|
|
175
|
+
- **goalComplexity** 必须与 goals 数组长度一致,一一对应
|
|
176
|
+
- **研究上下文集成**: 如果检测到研究上下文,将研究的 goals/constraints/deliverables 与 AI 提取的内容合并(去重)
|
|
177
|
+
|
|
178
|
+
## Step 5: 展示执行计划并路由
|
|
179
|
+
|
|
180
|
+
**展示执行计划:**
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
执行计划
|
|
184
|
+
|
|
185
|
+
Goals:
|
|
186
|
+
1. [development/high] 目标1
|
|
187
|
+
2. [development/medium] 目标2
|
|
188
|
+
3. [testing/medium] 目标3
|
|
189
|
+
|
|
190
|
+
质量配置、E2E、执行模式 将在执行阶段选择。
|
|
191
|
+
|
|
192
|
+
技术方案已写入: .openmatrix/plan.md
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**路由判断:**
|
|
196
|
+
|
|
197
|
+
AI 根据 goals 数量和任务特征判断路由:
|
|
198
|
+
|
|
199
|
+
| 条件 | 路由 |
|
|
200
|
+
|------|------|
|
|
201
|
+
| goals <= 2 + 实现路径清晰 | /om:feature |
|
|
202
|
+
| goals > 2 + 需完整追踪 | /om:start |
|
|
203
|
+
| 用户明确要求全自动 | /om:auto |
|
|
204
|
+
|
|
205
|
+
**自动路由到对应 Skill:**
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
Skill 工具:
|
|
209
|
+
- start → skill = "om:start"
|
|
210
|
+
- feature → skill = "om:feature"
|
|
211
|
+
- auto → skill = "om:auto"
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
- `/om:start` 会检测已存在的 `tasks-input.json` 和 `plan.md`,询问必选问题(质量等级、E2E、执行模式)后执行
|
|
215
|
+
- `/om:feature` 使用轻量流程执行小任务
|
|
216
|
+
- `/om:auto` 全自动执行,无交互无审批
|
|
217
|
+
|
|
218
|
+
</process>
|
|
219
|
+
|
|
220
|
+
<arguments>
|
|
221
|
+
$ARGUMENTS
|
|
222
|
+
</arguments>
|
|
223
|
+
|
|
224
|
+
<examples>
|
|
225
|
+
/om:plan # 基于 brainstorm 设计文档生成方案
|
|
226
|
+
/om:plan "实现用户登录功能" # 基于描述生成方案
|
|
227
|
+
/om:plan docs/openmatrix/2024-01-01-login-design.md # 基于指定设计文档
|
|
228
|
+
</examples>
|
|
229
|
+
|
|
230
|
+
<notes>
|
|
231
|
+
## 流程定位
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
brainstorm (澄清需求) → plan (生成方案) → start/feature (执行)
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
plan 是连接需求和执行的桥梁:
|
|
238
|
+
- 输入: brainstorm 产出的设计文档 / 用户描述
|
|
239
|
+
- 输出: plan.md (AI Agent 参考) + tasks-input.json (CLI 解析)
|
|
240
|
+
|
|
241
|
+
## 与其他 Skill 的关系
|
|
242
|
+
|
|
243
|
+
| Skill | plan 的角色 |
|
|
244
|
+
|-------|------------|
|
|
245
|
+
| /om:brainstorm | 完成后调用 /om:plan |
|
|
246
|
+
| /om:start | 读取 plan.md + tasks-input.json 执行 |
|
|
247
|
+
| /om:feature | 轻量任务可能不需要 plan |
|
|
248
|
+
| /om:auto | 读取 plan.md + tasks-input.json 全自动执行 |
|
|
249
|
+
|
|
250
|
+
## plan.md 的消费方式
|
|
251
|
+
|
|
252
|
+
- CLI (TaskPlanner) 不解析 plan 内容,只读取 tasks-input.json
|
|
253
|
+
- plan.md 原文注入到每个 Agent 的任务描述中
|
|
254
|
+
- Agent 自行理解 plan 中的技术栈、数据模型、接口定义等
|
|
255
|
+
|
|
256
|
+
## 检测已有 plan
|
|
257
|
+
|
|
258
|
+
如果 `.openmatrix/plan.md` 已存在:
|
|
259
|
+
- 询问用户:使用已有方案 / 重新生成
|
|
260
|
+
- 使用已有方案时,跳过 Step 2,直接进入 Step 3 提取元数据
|
|
261
|
+
</notes>
|