openmatrix 0.1.56 → 0.1.58

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.
@@ -0,0 +1,258 @@
1
+ ---
2
+ name: om:research
3
+ description: 领域调研和问题探索 - 为后续任务提供知识基础
4
+ ---
5
+
6
+ <NO-OTHER-SKILLS>
7
+ 执行此技能时,不得调用其他任务编排相关的技能。OpenMatrix 独立运行,不依赖外部任务编排系统。
8
+ </NO-OTHER-SKILLS>
9
+
10
+ <objective>
11
+ 在执行垂直领域任务前,由 AI 分析主题、识别领域、引导用户补全信息、生成领域专属文档,为后续 start 提供扎实的知识基础。
12
+ </objective>
13
+
14
+ <process>
15
+ 1. **初始化研究会话**
16
+
17
+ 调用 CLI 创建研究会话:
18
+ ```bash
19
+ openmatrix research "$ARGUMENTS" --json
20
+ ```
21
+
22
+ 返回:
23
+ ```json
24
+ {
25
+ "status": "initialized",
26
+ "message": "研究会话已创建,需要 AI 分析领域",
27
+ "topic": "做一个游戏",
28
+ "hint": "请使用 Agent 分析主题,识别领域和调研方向"
29
+ }
30
+ ```
31
+
32
+ 2. **AI 分析主题 (关键步骤)**
33
+
34
+ 启动 Agent 分析用户主题,识别领域和调研方向:
35
+
36
+ ```
37
+ Agent (Explore): 分析主题 "${topic}"
38
+
39
+ 分析要求:
40
+ 1. 识别领域: 这属于什么行业/技术领域?
41
+ 2. 调研方面: 这个领域有哪些核心方面需要了解?(5-10个)
42
+ 3. 关键决策: 用户需要做出哪些重要选择?
43
+ 4. 问题估算: 预计需要问多少个问题?
44
+
45
+ 严格输出 JSON:
46
+ {
47
+ "domain": "领域名称",
48
+ "aspects": ["方面1", "方面2", ...],
49
+ "keyDecisions": ["决策1", "决策2", ...],
50
+ "estimatedQuestions": 数字
51
+ }
52
+ ```
53
+
54
+ Agent prompt:
55
+ ```
56
+ 你是一个领域分析专家。请分析以下主题:
57
+
58
+ ## 用户主题
59
+ {topic}
60
+
61
+ ## 分析要求
62
+ 1. 识别领域: 这属于什么行业/技术领域?要具体,如"游戏开发"而不是"软件开发"
63
+ 2. 调研方面: 这个领域有哪些核心方面需要了解?列出 5-10 个
64
+ 3. 关键决策: 用户需要做出哪些重要选择?如"技术选型"、"平台选择"
65
+ 4. 问题估算: 预计需要问多少个问题才能收集足够信息?
66
+
67
+ ## 输出格式
68
+ 请严格输出以下 JSON 格式,不要有其他内容:
69
+ ```json
70
+ {
71
+ "domain": "领域名称",
72
+ "aspects": ["方面1", "方面2", "方面3", ...],
73
+ "keyDecisions": ["决策1", "决策2", ...],
74
+ "estimatedQuestions": 数字
75
+ }
76
+ ```
77
+ ```
78
+
79
+ 3. **更新会话并展示预览**
80
+
81
+ Agent 返回分析结果后,更新会话文件:
82
+ ```bash
83
+ # 读取当前会话并更新
84
+ # 将 domain, aspects, estimatedQuestions 写入 .openmatrix/research/session.json
85
+ # status 改为 'preview'
86
+ ```
87
+
88
+ 然后展示给用户确认:
89
+ ```typescript
90
+ AskUserQuestion({
91
+ questions: [{
92
+ question: `检测到「${domain}」领域,将调研以下方面:\n\n${aspects.map(a => `• ${a}`).join('\n')}\n\n预计 ${estimatedQuestions} 个问题,是否开始?`,
93
+ header: "确认研究",
94
+ options: [
95
+ { label: "开始研究", description: "启动并行 Agent 进行深度调研" },
96
+ { label: "跳过研究", description: "直接进入任务执行" },
97
+ { label: "调整范围", description: "修改研究方向" }
98
+ ],
99
+ multiSelect: false
100
+ }]
101
+ })
102
+ ```
103
+
104
+ 4. **确认后启动并行研究**
105
+
106
+ 用户确认后,调用 CLI:
107
+ ```bash
108
+ openmatrix research --confirm --json
109
+ ```
110
+
111
+ 返回:
112
+ ```json
113
+ {
114
+ "status": "researching",
115
+ "message": "开始深度研究",
116
+ "topic": "做一个游戏",
117
+ "domain": "游戏开发",
118
+ "aspects": [...],
119
+ "agents": [
120
+ { "role": "domain_researcher", "focus": "...", "status": "pending" },
121
+ { "role": "tech_explorer", "focus": "...", "status": "pending" },
122
+ { "role": "scenario_analyst", "focus": "...", "status": "pending" }
123
+ ],
124
+ "hint": "使用 Agent 工具并行执行研究"
125
+ }
126
+ ```
127
+
128
+ 5. **并行启动研究 Agent**
129
+
130
+ 使用 Agent 工具并行启动 2-3 个研究 Agent:
131
+
132
+ ```
133
+ Agent 1 (domain_researcher): 用 WebSearch 搜索 {domain} 领域核心概念、行业标准
134
+ Agent 2 (tech_explorer): 用 WebSearch 搜索 {domain} 主流技术方案、架构模式
135
+ Agent 3 (scenario_analyst): 结合 "{topic}" 分析实际应用场景、常见挑战
136
+ ```
137
+
138
+ 6. **基于研究结果生成领域问卷**
139
+
140
+ 研究完成后,从报告中提取关键决策点,转化为问题:
141
+
142
+ ```typescript
143
+ // 批量提问 (每次最多 4 个问题)
144
+ AskUserQuestion({ questions: domainQuestions.slice(0, 4) });
145
+ ```
146
+
147
+ 7. **生成领域专属文档**
148
+
149
+ 基于研究结果和用户回答,生成领域文档:
150
+
151
+ | 领域 | 文档类型 |
152
+ |------|----------|
153
+ | 游戏开发 | GDD (游戏设计文档) |
154
+ | Web 网站 | PRD (产品需求文档) |
155
+ | 支付系统 | 技术方案文档 |
156
+ | 后台管理 | 功能规格文档 |
157
+ | 通用 | 研究报告 |
158
+
159
+ 8. **完成研究并接入 start**
160
+
161
+ ```bash
162
+ openmatrix research --complete --results '<json>' --json
163
+ ```
164
+
165
+ 然后询问用户是否开始执行:
166
+ ```typescript
167
+ AskUserQuestion({
168
+ questions: [{
169
+ question: `研究完成!已生成「${domain}」领域文档。\n\n下一步?`,
170
+ header: "下一步",
171
+ options: [
172
+ { label: "开始执行 (推荐)", description: "自动接入 /om:start" },
173
+ { label: "查看报告", description: "先查看研究报告" },
174
+ { label: "继续研究", description: "深入某个方向" }
175
+ ],
176
+ multiSelect: false
177
+ }]
178
+ })
179
+ ```
180
+
181
+ </process>
182
+
183
+ <arguments>
184
+ $ARGUMENTS
185
+ </arguments>
186
+
187
+ <examples>
188
+ /om:research "做一个游戏"
189
+ /om:research "开发一个支付系统"
190
+ /om:research "构建一个电商网站"
191
+ </examples>
192
+
193
+ <notes>
194
+ ## 核心变化
195
+
196
+ **AI 分析领域,而非关键词匹配**
197
+
198
+ 旧方式: CLI 内置关键词列表,硬编码领域检测
199
+ 新方式: Agent 分析主题,动态识别领域和调研方向
200
+
201
+ ## 流程图
202
+
203
+ ```
204
+ ┌──────────────────────┐
205
+ │ /om:research "做游戏" │
206
+ └──────────┬───────────┘
207
+
208
+
209
+ ┌──────────────────────┐
210
+ │ CLI: 创建初始会话 │ status: "initialized"
211
+ └──────────┬───────────┘
212
+
213
+
214
+ ┌──────────────────────┐
215
+ │ Agent: 分析主题 │ 识别领域、方面、决策
216
+ └──────────┬───────────┘
217
+
218
+
219
+ ┌──────────────────────┐
220
+ │ 更新会话 → preview │
221
+ │ 展示给用户确认 │
222
+ └──────────┬───────────┘
223
+
224
+
225
+ ┌──────────────────────┐
226
+ │ 用户确认 → --confirm │
227
+ │ 并行 Agent 研究 │
228
+ └──────────┬───────────┘
229
+
230
+
231
+ ┌──────────────────────┐
232
+ │ 问卷 → 领域文档 │
233
+ │ → --complete │
234
+ └──────────┬───────────┘
235
+
236
+
237
+ ┌──────────────────────┐
238
+ │ 接入 /om:start │
239
+ └──────────────────────┘
240
+ ```
241
+
242
+ ## 与 brainstorm 的集成
243
+
244
+ brainstorm 检测到垂直领域时,返回 `suggestResearch`。
245
+ brainstorm skill 询问用户是否进入 research,确认后调用 `/om:research`。
246
+
247
+ ## 输出文件
248
+
249
+ ```
250
+ .openmatrix/research/
251
+ ├── session.json # 研究会话状态
252
+ ├── RESEARCH.md # 领域专属文档 (GDD/PRD/技术方案)
253
+ ├── knowledge/
254
+ │ ├── finding-1.md # 关键发现
255
+ │ └── finding-2.md
256
+ └── context.json # → start 的任务上下文
257
+ ```
258
+ </notes>
package/skills/start.md CHANGED
@@ -39,15 +39,24 @@ Step 10: 逐个执行 subagentTasks(调用 Agent 工具) ← 只有这步
39
39
 
40
40
  ## === 准备阶段(此阶段不得写任何业务代码)===
41
41
 
42
- ### Step 1: 初始化
42
+ ### Step 1: 智能检测状态
43
43
 
44
- 检查 `.openmatrix/` 目录是否存在,不存在则初始化:
44
+ 检查 `.openmatrix/` 目录和 `state.json` 的状态:
45
+
46
+ | 状态 | 处理方式 |
47
+ |------|---------|
48
+ | `.openmatrix/` 不存在 | 全新初始化: `openmatrix start --init-only` |
49
+ | `status: initialized` | 正常继续(首次使用) |
50
+ | `status: completed` | 提示用户:开始新任务会清理旧数据,确认后继续 |
51
+ | `status: running` | 提示用户先完成或暂停当前任务,然后退出 |
52
+ | `status: paused` | 询问用户:继续上次任务(→`/om:resume`)还是开始新任务 |
53
+ | `status: failed` | 询问用户:重试失败任务(→`/om:retry`)还是开始新任务 |
54
+
55
+ **如果是全新初始化:**
45
56
  ```bash
46
57
  openmatrix start --init-only
47
58
  ```
48
59
 
49
- 读取 `.openmatrix/state.json`,如果 `status === 'running'`,提示用户先完成或暂停。
50
-
51
60
  检查 Git 仓库:
52
61
  - 无 `.git` → 询问用户是否初始化
53
62
  - 无远程仓库 → 提示用户添加
@@ -87,6 +96,15 @@ AskUserQuestion({
87
96
  { label: "fast", description: "无质量门禁" }
88
97
  ],
89
98
  multiSelect: false
99
+ },
100
+ {
101
+ question: "是否启用 E2E 测试? (Web/Mobile/GUI 项目推荐)",
102
+ header: "E2E",
103
+ options: [
104
+ { label: "跳过 (推荐)", description: "E2E 测试耗时较长,大多数项目不需要" },
105
+ { label: "启用", description: "适合 Web 应用 (Playwright/Cypress)、Mobile (Appium/Detox)" }
106
+ ],
107
+ multiSelect: false
90
108
  }
91
109
  ]
92
110
  })
@@ -113,16 +131,16 @@ AskUserQuestion({
113
131
  question: "请选择执行模式:",
114
132
  header: "执行模式",
115
133
  options: [
116
- { label: "每阶段确认", description: "每个阶段完成后暂停" },
117
- { label: "关键节点确认", description: "plan/merge/deploy 时暂停" },
118
- { label: "全自动执行", description: "无需确认,自动完成" }
134
+ { label: "全自动执行 (推荐)", description: "无需确认,自动完成" },
135
+ { label: "关键节点确认", description: "plan/merge 时暂停确认" },
136
+ { label: "每阶段确认", description: "每个阶段完成后暂停" }
119
137
  ],
120
138
  multiSelect: false
121
- }]
139
+ ]
122
140
  })
123
141
  ```
124
142
 
125
- **如果用户选择"全自动执行",进入 BYPASS 模式(所有操作自动批准)。**
143
+ **默认进入 BYPASS 模式(全自动执行),用户可选其他模式。**
126
144
 
127
145
  ### Step 6: AI 提取 goals + 生成 plan
128
146
 
@@ -150,6 +168,12 @@ AskUserQuestion({
150
168
  }
151
169
  ```
152
170
 
171
+ **E2E 测试:** 如果用户在 Step 4 选择了"启用 E2E",在 quality 后面加上:
172
+ ```
173
+ "e2eTests": true
174
+ ```
175
+ 这会让 CLI 的 TaskPlanner 在任务拆分时生成额外的 E2E 测试任务。
176
+
153
177
  ### Step 8: 调用 CLI 创建任务 ⚠️ 不可跳过
154
178
 
155
179
  **必须执行此命令,禁止跳过:**