openmatrix 0.1.80 → 0.1.81

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/skills/brainstorm.md +380 -355
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openmatrix",
3
- "version": "0.1.80",
3
+ "version": "0.1.81",
4
4
  "description": "AI Agent task orchestration system with Claude Code Skills integration",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,355 +1,380 @@
1
- ---
2
- name: om:brainstorm
3
- description: 头脑风暴 - 探索需求和设计后再执行任务
4
- ---
5
-
6
- <NO-OTHER-SKILLS>
7
- **绝对禁止**调用其他任务编排相关的技能(OpenMatrix 完全替代它们):
8
- - ❌ 头脑风暴类 → 你已经在 brainstorm 中了
9
- - ❌ 计划编写类 → OpenMatrix 有自己的任务拆分
10
- - ❌ 计划执行类 → OpenMatrix 有自己的执行流程
11
- - ❌ 项目管理类 → OpenMatrix 独立运行
12
- - ❌ 任何其他任务编排相关的技能
13
-
14
- OpenMatrix 独立运行,不依赖外部任务编排系统。
15
- </NO-OTHER-SKILLS>
16
-
17
- <objective>
18
- 在进行任务执行前,先进行头脑风暴,深入探索需求、设计和技术方案,确保理解完整后再开始执行。
19
- </objective>
20
-
21
- <process>
22
- 1. **初始化头脑风暴会话**
23
-
24
- 调用 CLI 创建头脑风暴会话:
25
- ```bash
26
- openmatrix brainstorm "$ARGUMENTS" --json
27
- ```
28
-
29
- 这会返回:
30
- ```json
31
- {
32
- "status": "brainstorming",
33
- "message": "开始头脑风暴",
34
- "taskTitle": "任务标题",
35
- "questions": [...],
36
- "suggestResearch": "游戏开发",
37
- "researchHint": "检测到垂直领域「游戏开发」,建议先进行领域调研",
38
- "hint": "请逐一回答问题,完成后写入 tasks-input.json 并调用 /om:start"
39
- }
40
- ```
41
-
42
- 2. **检测垂直领域** (如果 suggestResearch 存在)
43
-
44
- 如果 CLI 返回了 `suggestResearch` 字段,说明检测到垂直领域:
45
-
46
- ```typescript
47
- if (result.suggestResearch) {
48
- AskUserQuestion({
49
- questions: [{
50
- question: `检测到垂直领域「${result.suggestResearch}」,建议先进行领域调研。\n\n领域调研可以帮助您:\n• 了解行业最佳实践\n• 获取技术方案建议\n• 生成领域专属文档 (如 GDD/PRD)\n\n是否进入领域调研?`,
51
- header: "领域调研",
52
- options: [
53
- { label: "进入调研 (推荐)", description: "启动 /om:research 进行深度调研" },
54
- { label: "跳过调研", description: "直接进行头脑风暴问答" }
55
- ],
56
- multiSelect: false
57
- }]
58
- })
59
- }
60
- ```
61
-
62
- - 如果用户选择"进入调研",调用 `/om:research`,研究完成后自动返回 start
63
- - 如果用户选择"跳过调研",继续下面的问答流程
64
-
65
- 3. **交互式问答**
66
-
67
- 对每个问题使用 `AskUserQuestion` 进行提问:
68
-
69
- ```typescript
70
- AskUserQuestion({
71
- questions: [{
72
- question: questions[0].question,
73
- header: questions[0].header,
74
- options: questions[0].options,
75
- multiSelect: questions[0].multiSelect
76
- }]
77
- })
78
- ```
79
-
80
- **收集回答并记录洞察**:
81
- - 每个回答后,思考其含义
82
- - 记录可能的设计决策
83
- - 识别潜在风险
84
-
85
- 4. **深入追问** (可选)
86
-
87
- 如果用户选择了"其他"或回答不够清晰,进行追问:
88
- ```typescript
89
- AskUserQuestion({
90
- questions: [{
91
- question: "请详细描述:",
92
- header: "详情",
93
- options: []
94
- }]
95
- })
96
- ```
97
-
98
- 5. **总结头脑风暴结果**
99
-
100
- 所有问题回答完成后,总结:
101
- - 核心目标
102
- - 用户价值
103
- - 技术方案要点
104
- - 风险和应对
105
- - 验收标准
106
-
107
- 展示总结:
108
- ```
109
- 🧠 头脑风暴总结
110
-
111
- 📋 任务: 实现登录功能
112
-
113
- 🎯 核心目标
114
- - 实现用户登录功能,支持邮箱和密码
115
-
116
- 👥 用户价值
117
- - 终端用户可以安全登录系统
118
-
119
- 🔧 技术方案
120
- - 使用 JWT 进行身份验证
121
- - 密码使用 bcrypt 加密
122
-
123
- ⚠️ 风险评估
124
- - 安全风险: 需要防止暴力破解
125
-
126
- 验收标准
127
- - 功能完整
128
- - 测试覆盖
129
- ```
130
-
131
- 5. **确认并开始执行**
132
-
133
- ```typescript
134
- AskUserQuestion({
135
- questions: [{
136
- question: "头脑风暴完成,是否开始执行任务?",
137
- header: "下一步",
138
- options: [
139
- { label: "✅ 开始执行 (推荐)", description: "使用收集的信息开始执行任务" },
140
- { label: "🔄 继续探索", description: "还有问题需要进一步讨论" },
141
- { label: "📋 仅生成计划", description: "生成详细计划但不执行" }
142
- ],
143
- multiSelect: false
144
- }]
145
- })
146
- ```
147
-
148
- 如果用户选择"开始执行",写入 `tasks-input.json` 后调用 `/om:start`。
149
-
150
- 6. **写入 tasks-input.json 并调用 /om:start**
151
-
152
- **先检测当前状态:**
153
- ```bash
154
- # 检查 .openmatrix 目录是否存在
155
- ls .openmatrix/state.json 2>/dev/null
156
- ```
157
-
158
- **如果需要初始化:**
159
- ```bash
160
- openmatrix start --init-only
161
- ```
162
-
163
- **将头脑风暴结论转换为 goals 并写入 `.openmatrix/tasks-input.json`:**
164
- ```json
165
- {
166
- "title": "任务标题",
167
- "description": "基于头脑风暴的整体描述",
168
- "goals": [
169
- "目标1: 独立功能模块",
170
- "目标2: 独立功能模块",
171
- "..."
172
- ],
173
- "constraints": ["约束"],
174
- "deliverables": ["交付物"],
175
- "answers": { "问答答案" },
176
- "plan": "## 技术方案\n..."
177
- }
178
- ```
179
-
180
- **注意:** `quality`、`mode`、`e2eTests` 不在此写入,由 `/om:start` 的必选问题决定。
181
-
182
- **⚠️ 最后一步(必须执行,不可跳过):使用 Skill 工具调用 `/om:start`**
183
-
184
- 写入文件后,**必须立即** 使用 Skill 工具调用 om:start:
185
-
186
- ```
187
- Skill 工具: skill = "om:start"
188
- ```
189
-
190
- 这不是可选的 — 如果不调用 `/om:start`,任务不会开始执行。
191
- `/om:start` 会检测到已存在的 `tasks-input.json`,然后询问必选问题(质量等级、E2E、执行模式)。
192
-
193
- **路径 A: 全新开始 / 重新开始**
194
- ```bash
195
- # 初始化 (如果不存在)
196
- openmatrix start --init-only
197
-
198
- # 如果是重新开始,清理旧数据
199
- # rm -rf .openmatrix/tasks/ .openmatrix/approvals/ .openmatrix/meetings/
200
- ```
201
-
202
- **将头脑风暴结论转换为 goals:**
203
- ```json
204
- {
205
- "title": "任务标题",
206
- "description": "基于头脑风暴的整体描述",
207
- "goals": [
208
- "目标1: 独立功能模块",
209
- "目标2: 独立功能模块",
210
- "..."
211
- ],
212
- "constraints": ["约束"],
213
- "deliverables": ["交付物"],
214
- "answers": { "问答答案" },
215
- "quality": "用户选择的质量等级 (strict/balanced/fast)",
216
- "mode": "用户选择的执行模式 (auto/confirm-key/confirm-all)",
217
- "e2eTests": true或false,
218
- "plan": "## 技术方案\n..."
219
- }
220
- ```
221
-
222
- 写入 `.openmatrix/tasks-input.json` 后执行:
223
- ```bash
224
- openmatrix start --tasks-json @.openmatrix/tasks-input.json --json
225
- ```
226
-
227
- **路径 B: 继续上次任务**
228
- ```bash
229
- openmatrix step --json
230
- ```
231
- 从返回的 next task 继续执行。
232
-
233
- **最终:从 CLI 返回的 `subagentTasks` 开始逐个执行 Agent**
234
-
235
- </process>
236
-
237
- <arguments>
238
- $ARGUMENTS
239
- </arguments>
240
-
241
- <examples>
242
- /om:brainstorm # 交互式头脑风暴
243
- /om:brainstorm docs/task.md # 基于任务文件头脑风暴
244
- /om:brainstorm "实现用户登录功能" # 基于描述头脑风暴
245
- </examples>
246
-
247
- <notes>
248
- ## 头脑风暴流程图
249
-
250
- ```
251
- ┌─────────────────┐
252
- │ 开始头脑风暴 │
253
- └────────┬────────┘
254
-
255
-
256
- ┌─────────────────┐
257
- │ CLI 初始化会话 │
258
- └────────┬────────┘
259
-
260
-
261
- ┌─────────────────┐
262
- │ 获取问题列表 │
263
- └────────┬────────┘
264
-
265
-
266
- ┌─────────────────┐
267
- │ 交互式问答 │◀─────┐
268
- │ (AskUserQuestion)│ │
269
- └────────┬────────┘ │
270
- │ │
271
- ┌────┴────┐ │
272
- │ │ │
273
- 有下一题 无下一题 │
274
- │ │ │
275
- └────────┤ │
276
- │ │
277
- ▼ │
278
- ┌─────────────────┐ │
279
- │ 总结头脑风暴结果 │ │
280
- └────────┬────────┘ │
281
- │ │
282
- ▼ │
283
- ┌─────────────────┐ │
284
- │ 用户确认 │ │
285
- └────────┬────────┘ │
286
- │ │
287
- ┌────┴────┐ │
288
- │ │ │
289
- 开始执行 继续探索 ────┘
290
-
291
-
292
- ┌─────────────────┐
293
- │ 自动执行 start │
294
- └─────────────────┘
295
- ```
296
-
297
- ## 问题类型
298
-
299
- ### 项目配置问题(智能管道生成)
300
-
301
- | 问题 ID | 目的 | 为什么重要 |
302
- |---------|------|-----------|
303
- | objective | 明确任务目标(新功能/修复/重构) | 选择正确的实现策略 |
304
- | tech_stack | 技术栈选择 | 决定使用什么框架和工具 |
305
- | test_coverage | 测试覆盖率要求 | 影响测试任务生成 |
306
- | documentation_level | 文档要求级别 | 影响文档任务生成 |
307
- | risks | 风险评估 | 提前规划应对策略 |
308
- | acceptance | 验收标准 | 判断任务完成度 |
309
-
310
- > **注意**: 质量等级、E2E 测试、执行模式这些必选问题在 `/om:start` 时由用户选择,不在头脑风暴阶段询问。
311
-
312
- > **智能预填**:当 `SmartQuestionAnalyzer` 对某个问题有高置信度推断时,该问题会被自动跳过,不需要用户回答。
313
-
314
- ### 领域分析问题(底层逻辑思考)
315
-
316
- | 问题 ID | 目的 | 为什么重要 |
317
- |---------|------|-----------|
318
- | domain_entities | 核心领域实体建模 | 决定数据模型和 API 设计的基础 |
319
- | data_flow | 数据流转路径分析 | 决定架构选型(请求驱动 vs 事件驱动 vs 流处理) |
320
- | invariants | 关键不变量/业务约束 | 决定哪里需要加锁、事务、校验 |
321
- | core_scenarios | 核心用户场景链路 | 决定 MVP 功能范围和优先级排序 |
322
-
323
- > **领域分析的价值**:这四个问题帮助 AI 在执行前建立对系统的深层理解,而不是机械地按需求列表编码。答案会作为上下文注入到每个 Agent 的执行提示词中。
324
-
325
- ## 与 start 的集成
326
-
327
- 头脑风暴完成后,收集的信息会传递给 start:
328
-
329
- ```json
330
- {
331
- "answers": {
332
- "objective": "new_feature",
333
- "tech_stack": ["typescript", "react"],
334
- "test_coverage": "medium",
335
- "documentation_level": "basic",
336
- "risks": ["technical", "compatibility"],
337
- "acceptance": ["functional", "tested"]
338
- },
339
- "insights": [
340
- "需要考虑安全性",
341
- "应该支持多种登录方式"
342
- ],
343
- "designNotes": [
344
- "使用 JWT 认证",
345
- "密码需要加密存储"
346
- ]
347
- }
348
- ```
349
-
350
- 这些信息会影响:
351
- - 任务拆解策略
352
- - 质量级别选择
353
- - 技术栈确认
354
- - 风险应对措施
355
- </notes>
1
+ ---
2
+ name: om:brainstorm
3
+ description: 头脑风暴 - 深入探索需求和设计,提出多种方案,确认后再执行任务
4
+ ---
5
+
6
+ <NO-OTHER-SKILLS>
7
+ **绝对禁止**调用以下技能(OpenMatrix 完全替代它们):
8
+ - ❌ superpowers:brainstorming → 你已经在 om:brainstorm 中了
9
+ - ❌ superpowers:*全部被 OpenMatrix 替代
10
+ - ❌ gsd:*全部被 OpenMatrix 替代
11
+ - ❌ 任何其他任务编排相关的技能
12
+ </NO-OTHER-SKILLS>
13
+
14
+ <HARD-GATE>
15
+ 在展示设计方案并获得用户批准之前,**不得**调用任何实现技能、写任何代码、搭建任何项目或采取任何实现行动。
16
+ </HARD-GATE>
17
+
18
+ <objective>
19
+ 通过协作对话,将想法转化为完整的设计方案。先理解项目上下文,逐一提问澄清需求,提出 2-3 种方案并给出推荐,展示设计并获得批准后再进入执行。
20
+ </objective>
21
+
22
+ <process>
23
+
24
+ ## 步骤 1: 探索项目上下文
25
+
26
+ **在提问之前,先了解当前项目状态:**
27
+
28
+ ```bash
29
+ # 检查项目文件结构
30
+ ls -la
31
+
32
+ # 查看最近提交
33
+ git log --oneline -5 2>/dev/null
34
+
35
+ # 查看关键配置文件
36
+ cat package.json 2>/dev/null || cat Cargo.toml 2>/dev/null || cat go.mod 2>/dev/null
37
+
38
+ # 查看现有文档
39
+ ls docs/ 2>/dev/null
40
+ ```
41
+
42
+ - 了解技术栈、项目结构、最近变更
43
+ - 如果用户引用了文件(如 `docs/task.md`),读取该文件
44
+
45
+ ## 步骤 2: 评估范围
46
+
47
+ **如果任务涉及多个独立子系统**(如"构建一个包含聊天、文件存储、计费和分析的平台"),立即提出分解:
48
+
49
+ ```typescript
50
+ AskUserQuestion({
51
+ questions: [{
52
+ question: "这个任务涉及多个独立子系统,建议分步执行。先做哪个?",
53
+ header: "范围",
54
+ options: [
55
+ { label: "子系统A", description: "描述..." },
56
+ { label: "子系统B", description: "描述..." },
57
+ { label: "全部一起做", description: "不推荐,但可以尝试" }
58
+ ],
59
+ multiSelect: false
60
+ }]
61
+ })
62
+ ```
63
+
64
+ ## 步骤 3: 逐一澄清需求
65
+
66
+ **核心原则:一次只问一个问题。每条消息只有一个问题。**
67
+
68
+ **问题不是预定义的,而是根据具体任务动态生成。** 先检查项目上下文,再针对性地提问。
69
+
70
+ **问题应聚焦三个方面:**
71
+
72
+ ### 3.1 目的(Purpose)— 为什么做这个?
73
+ ```typescript
74
+ // 好的问题:深入理解动机
75
+ AskUserQuestion({
76
+ questions: [{
77
+ question: "这个功能解决的核心痛点是什么?",
78
+ header: "目的",
79
+ options: [
80
+ { label: "提升效率", description: "自动化现有手动流程" },
81
+ { label: "新增能力", description: "目前完全不具备的功能" },
82
+ { label: "替代方案", description: "替换现有的第三方服务" }
83
+ ],
84
+ multiSelect: false
85
+ }]
86
+ })
87
+ ```
88
+
89
+ ### 3.2 约束(Constraints)— 有什么限制?
90
+ ```typescript
91
+ // 好的问题:理解边界条件
92
+ AskUserQuestion({
93
+ questions: [{
94
+ question: "客户管理的数据需要关联哪些实体?",
95
+ header: "数据模型",
96
+ options: [
97
+ { label: "仅客户信息", description: "独立的客户 CRUD" },
98
+ { label: "客户 + 邀请人", description: "需要追踪推荐关系" },
99
+ { label: "客户 + 合作历史", description: "需要记录历史合作者" }
100
+ ],
101
+ multiSelect: true
102
+ }]
103
+ })
104
+ ```
105
+
106
+ ### 3.3 成功标准(Success Criteria)— 怎样算完成?
107
+ ```typescript
108
+ // 好的问题:明确验收条件
109
+ AskUserQuestion({
110
+ questions: [{
111
+ question: "这个功能的 MVP 最小可用版本包含什么?",
112
+ header: "MVP",
113
+ options: [
114
+ { label: "基础 CRUD", description: "增删改查 + 列表" },
115
+ { label: "CRUD + 搜索", description: "支持按名称/邮箱搜索" },
116
+ { label: "完整功能", description: "包含关联、分组、导出等" }
117
+ ],
118
+ multiSelect: false
119
+ }]
120
+ })
121
+ ```
122
+
123
+ **提问策略:**
124
+ - **优先选择题** — 比开放式更容易回答
125
+ - **根据上下文定制** — 不是固定问题列表,而是基于项目状态和任务类型动态调整
126
+ - **每个问题只关注一个方面** — 需要深入就拆成多个问题
127
+ - **YAGNI** — 主动建议去掉不必要的功能
128
+ - **深入追问** — 如果用户选"其他",用开放式问题跟进
129
+
130
+ ## 步骤 4: 提出 2-3 种方案
131
+
132
+ 理解需求后,提出不同实现方案:
133
+
134
+ ```typescript
135
+ AskUserQuestion({
136
+ questions: [{
137
+ question: `基于需求分析,有以下实现方案:
138
+
139
+ **方案 A(推荐): 组件化架构**
140
+ - 每个模块独立,通过接口通信
141
+ - 优点: 可测试性强、易维护
142
+ - 缺点: 初始代码量较多
143
+
144
+ **方案 B: 单体架构**
145
+ - 所有功能在一个模块内
146
+ - 优点: 开发快
147
+ - 缺点: 难以扩展
148
+
149
+ **方案 C: 微服务架构**
150
+ - 每个功能独立服务
151
+ - 优点: 高度解耦
152
+ - 缺点: 复杂度高,当前规模不需要
153
+
154
+ 推荐方案 A,因为...`,
155
+ header: "技术方案",
156
+ options: [
157
+ { label: "方案 A (推荐)", description: "组件化架构" },
158
+ { label: "方案 B", description: "单体架构" },
159
+ { label: "方案 C", description: "微服务架构" }
160
+ ],
161
+ multiSelect: false
162
+ }]
163
+ })
164
+ ```
165
+
166
+ ## 步骤 5: 分步展示设计
167
+
168
+ **逐节展示设计方案,每节确认一次:**
169
+
170
+ 每次展示一个设计方面:
171
+
172
+ ```
173
+ 📐 设计方案 - 第 1 部分: 架构
174
+
175
+ ┌─────────┐ ┌─────────┐ ┌─────────┐
176
+ │ 输入层 │ ──→ │ 业务层 │ ──→ │ 数据层 │
177
+ └─────────┘ └─────────┘ └─────────┘
178
+
179
+ - 输入层: REST API + WebSocket
180
+ - 业务层: 核心逻辑处理
181
+ - 数据层: PostgreSQL + Redis 缓存
182
+
183
+ 这部分设计是否合理?
184
+ ```
185
+
186
+ **设计覆盖:**
187
+ 1. 架构设计
188
+ 2. 数据模型 / 核心实体
189
+ 3. 关键接口 / API
190
+ 4. 错误处理策略
191
+ 5. 测试策略
192
+
193
+ **每个部分都使用 AskUserQuestion 确认:**
194
+ ```typescript
195
+ AskUserQuestion({
196
+ questions: [{
197
+ question: "架构设计是否合理?",
198
+ header: "确认",
199
+ options: [
200
+ { label: "继续", description: "设计合理,继续下一部分" },
201
+ { label: "修改", description: "我有调整建议" }
202
+ ],
203
+ multiSelect: false
204
+ }]
205
+ })
206
+ ```
207
+
208
+ ## 步骤 6: 总结确认
209
+
210
+ 所有设计部分确认后,展示完整总结:
211
+
212
+ ```
213
+ 🧠 头脑风暴总结
214
+
215
+ 📋 任务: 实现客户管理系统
216
+
217
+ 🎯 核心目标
218
+ - 客户信息管理(姓名、邮箱、邀请人)
219
+ - 历史合作记录追踪
220
+
221
+ 📐 架构
222
+ - 组件化设计,每个模块独立可测
223
+
224
+ 🔧 技术方案
225
+ - 数据库: PostgreSQL
226
+ - 缓存: Redis
227
+ - API: RESTful
228
+
229
+ ⚠️ 风险
230
+ - 数据迁移: 需要兼容旧格式
231
+
232
+ ✅ 验收标准
233
+ - CRUD 接口完整
234
+ - 测试覆盖率 > 80%
235
+ ```
236
+
237
+ ```typescript
238
+ AskUserQuestion({
239
+ questions: [{
240
+ question: "头脑风暴完成,是否开始执行任务?",
241
+ header: "下一步",
242
+ options: [
243
+ { label: "开始执行 (推荐)", description: "写入 tasks-input.json 并调用 /om:start" },
244
+ { label: "继续探索", description: "还有问题需要进一步讨论" },
245
+ { label: "仅生成计划", description: "生成详细计划但不执行" }
246
+ ],
247
+ multiSelect: false
248
+ }]
249
+ })
250
+ ```
251
+
252
+ ## 步骤 7: 写入 tasks-input.json 并调用 /om:start
253
+
254
+ 用户选择"开始执行"后:
255
+
256
+ 1. **检测状态:**
257
+ ```bash
258
+ ls .openmatrix/state.json 2>/dev/null
259
+ ```
260
+
261
+ 2. **初始化(如需要):**
262
+ ```bash
263
+ openmatrix start --init-only
264
+ ```
265
+
266
+ 3. **写入 `.openmatrix/tasks-input.json`:**
267
+ ```json
268
+ {
269
+ "title": "任务标题",
270
+ "description": "基于头脑风暴的整体描述",
271
+ "goals": ["目标1: 独立功能模块", "目标2: 独立功能模块"],
272
+ "constraints": ["约束"],
273
+ "deliverables": ["交付物"],
274
+ "plan": "## 技术方案\n..."
275
+ }
276
+ ```
277
+
278
+ > **注意**: `quality`、`mode`、`e2eTests` 不在此写入,由 `/om:start` 的必选问题决定。
279
+
280
+ 4. **⚠️ 必须执行(不可跳过):使用 Skill 工具调用 `/om:start`**
281
+
282
+ ```
283
+ Skill 工具: skill = "om:start"
284
+ ```
285
+
286
+ 这不是可选的 — 如果不调用 `/om:start`,任务不会开始执行。
287
+ `/om:start` 会检测到已存在的 `tasks-input.json`,然后询问必选问题(质量等级、E2E、执行模式)。
288
+
289
+ </process>
290
+
291
+ <arguments>
292
+ $ARGUMENTS
293
+ </arguments>
294
+
295
+ <examples>
296
+ /om:brainstorm # 交互式头脑风暴
297
+ /om:brainstorm docs/task.md # 基于任务文件头脑风暴
298
+ /om:brainstorm "实现用户登录功能" # 基于描述头脑风暴
299
+ </examples>
300
+
301
+ <notes>
302
+ ## 关键原则
303
+
304
+ - **一次只问一个问题** 不要一次问多个
305
+ - **优先选择题** 比开放式更容易回答
306
+ - **YAGNI** 主动建议去掉不必要的设计
307
+ - **提出 2-3 种方案** 带权衡和推荐
308
+ - **分步确认** 每部分设计确认后再继续
309
+ - **为隔离而设计** — 每个模块应有清晰的边界和接口
310
+ - **问题要贴合任务** 不问泛泛的问题,而是针对具体任务深入
311
+ - **理解目的 > 理解实现** — 先搞清楚为什么做,再讨论怎么做
312
+
313
+ ## 在已有代码库中工作
314
+
315
+ - 提出变更前,先探索现有结构,遵循现有模式
316
+ - 如果现有代码有问题(文件太大、边界不清、职责混乱),在设计中有针对性地改进
317
+ - 不要提出无关的重构建议,聚焦当前目标
318
+
319
+ ## 问题深度示例
320
+
321
+ **不好的问题(太泛):**
322
+ - "你的技术栈是什么?"
323
+ - "你需要测试吗?"
324
+
325
+ **好的问题(贴合具体任务):**
326
+ - "客户管理的邀请人字段,是只记录最近一个邀请人,还是需要完整的邀请链?"
327
+ - "站内信需要支持已读/未读状态吗?还是只需要通知推送?"
328
+ - "物流追踪是实时推送还是定时轮询?这影响 API 设计。"
329
+
330
+ ## 流程图
331
+
332
+ ```
333
+ ┌─────────────────┐
334
+ │ 探索项目上下文 │
335
+ └────────┬────────┘
336
+
337
+
338
+ ┌─────────────────┐
339
+ 评估范围 │
340
+ │ (是否需要分解) │
341
+ └────────┬────────┘
342
+
343
+
344
+ ┌─────────────────┐
345
+ │ 逐一澄清需求 │◀─────┐
346
+ │ (一次一个问题) │ │
347
+ │ 深入理解目的/ │ │
348
+ │ 约束/成功标准 │ │
349
+ └────────┬────────┘ │
350
+ │ │
351
+ 还有问题? ───── YES ─┘
352
+ NO
353
+
354
+ ┌─────────────────┐
355
+ │ 提出 2-3 种方案 │
356
+ │ (附权衡和推荐) │
357
+ └────────┬────────┘
358
+
359
+
360
+ ┌─────────────────┐
361
+ │ 分步展示设计 │◀─────┐
362
+ │ (每步确认) │ │
363
+ └────────┬────────┘ │
364
+ │ │
365
+ 需要修改? ───── YES ─┘
366
+ │ NO
367
+
368
+ ┌─────────────────┐
369
+ │ 总结 + 确认 │
370
+ └────────┬────────┘
371
+
372
+ 开始执行
373
+
374
+
375
+ ┌─────────────────┐
376
+ │ 写入 JSON │
377
+ │ 调用 /om:start │
378
+ └─────────────────┘
379
+ ```
380
+ </notes>