这是「GSD 全景代码解析」专题的第 17 篇。在前面的文章中,我们解析了 GSD 的 execute-phase(执行引擎)、plan-phase(战略大脑)和 new-project(项目起点)。但一个关键问题始终悬而未决:在"想清楚"和"做出来"之间,还存在一片巨大的灰色地带——需求尚未完全明确、技术方案仍有分歧、隐含假设未被揭露。这片灰色地带,正是
discuss-phase存在的意义。如果说 plan-phase 负责"制定计划",execute-phase 负责"执行计划",那么 discuss-phase 就是在计划之前、执行之中反复校准方向的思考罗盘。它是 GSD 工作流中最具"人性"的环节——一个让人与 AI 进行深度对话、共同澄清不确定性的交互空间。
一、discuss-phase 的定位:规划与执行之间的"思考空间"
在传统的软件开发流程中,"讨论"通常是一个非结构化的、难以追踪的活动。产品经理和工程师在会议室或 Slack 里交换意见,会议纪要散落在各处,关键的决策理由往往随着时间的推移而消失。当项目出现问题时,人们会困惑:"我们当时为什么做出这个决定?"
GSD 的 discuss-phase 工作流正是为了解决这一痛点而设计的。它的核心定位可以概括为一句话:
Structured Thinking, Persistent Decisions.
(结构化的思考,持久化的决策。)
1.1 为什么需要 discuss-phase
在第 15 篇中,我们分析了 plan-phase 如何将模糊的想法转化为 ROADMAP.md 和 phases/*.md。但 plan-phase 有一个隐含前提:输入必须足够清晰。如果用户在规划阶段仍然充满不确定性——"这个功能真的有必要吗?""用 GraphQL 还是 REST?""这个第三方服务是否可靠?"——plan-phase 产出的计划就会建立在流沙之上。
discuss-phase 的职责就是在进入 plan-phase 之前(或在 execute-phase 遇到阻塞时),提供一个结构化的讨论框架,帮助用户和 AI 共同:
- 澄清模糊需求:将"我觉得可能需要…"转化为"经过讨论,我们确认…"
- 识别隐含假设:暴露那些未被言说但影响决策的前提条件
- 探索替代方案:在多个技术路线或设计方向之间进行权衡
- 记录决策理由:每个关键决策都有可追溯的讨论上下文
flowchart LR
subgraph Idea["想法层"]
A1[模糊需求]
A2[技术不确定性]
A3[隐含假设]
end
subgraph Discuss["讨论层"]
B1[discuss-phase]
B2[假设分析]
B3[头脑风暴]
B4[决策记录]
end
subgraph Plan["规划层"]
C1[plan-phase]
C2[ROADMAP.md]
end
subgraph Execute["执行层"]
D1[execute-phase]
D2[代码产出]
end
A1 --> B1
A2 --> B2
A3 --> B3
B1 --> B4
B2 --> B4
B3 --> B4
B4 -->|"清晰的输入"| C1
C1 --> C2
C2 --> D1
D1 --> D2
D1 -->|"遇到阻塞"| B11.2 discuss-phase 的触发时机
discuss-phase 不是必须执行的环节,但在以下场景中,它的价值会被放大:
| 触发时机 | 典型场景 | 推荐模式 |
|---|---|---|
| 规划前 | 新 Phase 开始前,目标不清晰 | default 或 power |
| 执行中阻塞 | execute-phase 发现计划与 reality 不符 | chain |
| 技术方案选择 | 多个技术路线需要权衡 | all |
| 批量澄清 | 多个相关问题需要一次性讨论 | batch |
| 自主探索 | 不确定该讨论什么,让 AI 引导 | auto |
二、渐进式披露架构:薄分发器设计
在第 13 篇中,我们详细介绍了 GSD 的**渐进式披露(Progressive Disclosure)**设计模式。discuss-phase.md 是这一模式的典范实现——也是 GSD 仓库中最早采用该模式的工作流之一。
2.1 从单体到分发器
早期的 discuss-phase.md 曾是一个超过 2000 行的单体文件,包含所有讨论模式的逻辑。随着模式数量的增加,这个文件遇到了严重的上下文预算危机:
- 2000 行 ≈ 12K-18K tokens
- 其中 60% 是当前模式不会触发的代码
- 有效上下文被严重挤压
GSD 的解决方案是将 discuss-phase 重构为薄分发器(Thin Dispatcher):
workflows/
├── discuss-phase.md # 薄分发器 (~300 行)
└── discuss-phase/
├── modes/
│ ├── default.md # 默认交互模式
│ ├── power.md # 全功率讨论模式
│ ├── auto.md # 自动模式
│ ├── all.md # 全量问题模式
│ ├── chain.md # 链式追问模式
│ ├── batch.md # 批量处理模式
│ ├── text.md # 纯文本模式
│ ├── analyze.md # 分析模式
│ └── advisor.md # 顾问模式
└── templates/
├── CONTEXT.md # 上下文模板
├── DISCUSSION-LOG.md # 讨论日志模板
└── checkpoint.json # 检查点 schema父文件 discuss-phase.md 的核心逻辑只有三步:
- 解析参数:提取
--mode(默认default)、--topic、--depth等 flags - 加载模式文件:
Read discuss-phase/modes/{mode}.md - 委托执行:按模式文件定义的 process 执行
这种设计的收益是巨大的——当用户以 --mode=auto 调用时,只有 auto.md(约 200-400 行)被加载到上下文中,其他 8 个模式的代码完全不可见,节省了大量 token。
2.2 大小预算约束
discuss-phase.md 在 GSD 的 workflow-size-budget 测试中有一个特殊约束:<500 行(issue #2551)。这个硬约束强制它必须保持"薄"——任何新模式的添加都不能膨胀父文件,而必须通过新增 modes/*.md 来实现。
flowchart TD
A[用户输入 /gsd:discuss-phase --mode=power] --> B[discuss-phase.md
薄分发器]
B --> C{解析 mode 参数}
C -->|power| D[加载 modes/power.md]
C -->|auto| E[加载 modes/auto.md]
C -->|chain| F[加载 modes/chain.md]
C -->|batch| G[加载 modes/batch.md]
C -->|all| H[加载 modes/all.md]
D --> I[按 power 模式执行]
E --> J[按 auto 模式执行]
F --> K[按 chain 模式执行]
G --> L[按 batch 模式执行]
H --> M[按 all 模式执行]三、多模式支持详解
GSD 的 discuss-phase 支持 9 种讨论模式,本文聚焦其中 5 种核心模式——它们分别对应不同的讨论策略和上下文消耗等级。
3.1 --power:全功率讨论模式
power 模式是 discuss-phase 的旗舰模式,专为复杂、高风险的技术决策设计。它的核心哲学是:没有问题是愚蠢的,但遗漏问题是危险的。
适用场景:
- 架构级决策(微服务 vs 单体、SQL vs NoSQL)
- 安全关键功能的设计审查
- 大规模重构前的可行性评估
执行特征:
| 维度 | power 模式 |
|---|---|
| 讨论深度 | 最深(5 层追问) |
| 上下文消耗 | 最高(~8K tokens) |
| Agent 协作 | 可能 spawn gsd-assumptions-analyzer |
| 输出产物 | DECISION.md + DISCUSSION-LOG.md |
| 人工介入点 | 每个关键决策都需要用户确认 |
power 模式的流程设计遵循**"漏斗式澄清"**:
flowchart TD
A[输入话题/问题] --> B[广度发散
列出所有相关维度]
B --> C1[技术维度]
B --> C2[业务维度]
B --> C3[安全维度]
B --> C4[运维维度]
B --> C5[成本维度]
C1 --> D[深度挖掘
每层 5 个追问]
C2 --> D
C3 --> D
C4 --> D
C5 --> D
D --> E[假设识别]
E --> F[方案对比]
F --> G[决策记录]在 power 模式下,AI 不会急于给出结论,而是会系统性地遍历多个维度,对每个维度进行深度追问。例如,当讨论"是否引入消息队列"时,AI 会依次探索:
- 技术维度:现有架构的耦合度、吞吐量需求、延迟敏感度
- 业务维度:消息丢失的容忍度、消费顺序的要求
- 安全维度:消息内容的加密需求、访问控制
- 运维维度:监控告警、故障恢复、扩容策略
- 成本维度:基础设施成本、维护复杂度、团队学习成本
3.2 --all:全维度分析
all 模式与 power 类似,但更强调全面性而非深度。它的目标是确保"没有遗漏任何重要维度",而不是对每个维度进行无底洞式的追问。
与 power 的关键区别:
| 对比维度 | power | all |
|---|---|---|
| 追问深度 | 每层最多 5 个追问 | 每层 1-2 个追问 |
| 覆盖范围 | 用户指定的核心维度 | 所有可能维度(自动扩展) |
| 决策风格 | 深度论证后推荐 | 列出所有选项的优劣 |
| 适合用户 | 有明确关注点的决策者 | 希望全景了解的新手 |
all 模式特别适用于技术选型场景。当团队面对"选 React 还是 Vue"、"用 PostgreSQL 还是 MongoDB"这类经典问题时,all 模式会生成一张全面的对比矩阵,而不是陷入某个细节。
3.3 --auto:自动选择讨论方向
auto 模式是 discuss-phase 中最"智能"的模式——它让用户无需预先定义讨论方向,由 AI 根据上下文自动判断最值得讨论的问题。
工作原理:
- 上下文扫描:AI 读取当前项目的 STATE.md、ROADMAP.md、最近的 SUMMARY.md
- 风险识别:基于项目状态识别潜在风险点(如 overdue 的 Plan、未解决的 Blocker、Schema Drift 等)
- 话题生成:自动生成 3-5 个最值得讨论的话题,按优先级排序
- 用户选择:用户选择话题,或让 AI 自动选择最高优先级的话题
flowchart LR
A[加载项目上下文] --> B[扫描 STATE.md
ROADMAP.md
SUMMARY.md]
B --> C[风险识别引擎]
C --> D1[高优先级:
Phase 3 存在 gap]
C --> D2[中优先级:
Schema 变更未同步]
C --> D3[低优先级:
技术债累积]
D1 --> E[用户选择话题]
D2 --> E
D3 --> E
E --> F[进入讨论]auto 模式的设计哲学是**"让 AI 做功课,让人做决策"**。AI 负责收集和整理信息,但最终讨论哪个话题由人决定。这种人机分工避免了两种极端:
- 人完全主导:可能因为信息不足而遗漏关键话题
- AI 完全主导:可能讨论对人来说优先级不高的话题
3.4 --chain:链式讨论
chain 模式的设计灵感来自思维链(Chain-of-Thought)提示技术。它不像 power 或 all 那样预先定义讨论维度,而是让讨论自然生长——每个问题的答案引出下一个问题,形成一条思考链。
核心机制:
1. 用户提出初始问题
2. AI 回答,并在答案末尾生成"下一个最值得追问的问题"
3. 用户回答/确认,AI 继续深入
4. 当链深度达到阈值(默认 5 层)或问题收敛时停止
5. 输出完整的思维链作为 DECISION.md 的附录chain 模式特别适合探索性讨论——当你有一个模糊的方向感,但不知道具体该问什么时,chain 模式会像苏格拉底一样,通过连续追问帮你理清思路。
flowchart TD
A[用户: "我们应该优化 API 性能吗?"] --> B[AI: "应该。API 响应时间 P99 是多少?
下一个问题: 当前瓶颈在哪里?"]
B --> C[用户: "P99 是 2.3s"]
C --> D[AI: "2.3s 远超行业标准(<500ms)。数据库查询占比多少?
下一个问题: 是否有 N+1 查询?"]
D --> E[用户: "数据库占 80%"]
E --> F[AI: "高度可疑。检查 ORM 日志...发现 N+1。
下一个问题: 用 join 还是缓存解决?"]
F --> G[用户: "先加缓存"]
G --> H[AI: "推荐 Redis。缓存一致性策略?
下一个问题: Cache-Aside 还是 Write-Through?"]chain 模式的一个精妙设计是收敛检测:当连续两轮追问的答案开始重复(用余弦相似度或关键词重叠判断),AI 会主动提议"当前话题已充分讨论,是否记录决策并结束?",防止无限延伸。
3.5 --batch:批量讨论
batch 模式是效率导向的模式——当你有一组相互独立的问题需要快速过一遍时,batch 模式可以并行处理它们。
适用场景:
- Daily Standup 式的快速对齐("这 5 个 blockers 哪个需要先解决?")
- 计划执行前的最后确认("这 8 个任务的前提条件都满足了吗?")
- 回顾会议前的议题收集
执行方式:
flowchart LR
A[输入 N 个问题] --> B[问题去重与聚类]
B --> C1[聚类 1:
技术问题]
B --> C2[聚类 2:
协调问题]
B --> C3[聚类 3:
资源问题]
C1 --> D[逐类批量讨论]
C2 --> D
C3 --> D
D --> E[生成汇总报告]batch 模式会先将输入的问题列表进行语义聚类(通过 LLM 判断问题间的相似度),然后对每个聚类进行批量讨论,最后生成一份汇总报告。报告包含:
- 每个问题的结论
- 问题之间的依赖关系("解决 A 需要先完成 B")
- 推荐的执行顺序
- 需要进一步 deep-dive 的问题列表
3.6 模式对比总结
| 模式 | 核心策略 | 上下文消耗 | 人工介入 | 最佳场景 |
|---|---|---|---|---|
| power | 深度追问,多维度论证 | 高 | 高 | 高风险架构决策 |
| all | 广度覆盖,全景对比 | 中高 | 中 | 技术选型 |
| auto | 智能引导,自动选题 | 中 | 中 | 不确定该讨论什么 |
| chain | 思维链,自然生长 | 中 | 中 | 探索性思考 |
| batch | 批量并行,效率优先 | 低 | 低 | 快速对齐 |
四、假设分析(Assumptions Analysis)
假设分析是 discuss-phase 中最具工程价值的环节之一。软件开发中的大量返工,根源都在于错误的隐含假设——"我以为数据库会始终可用"、"我以为这个 API 会保持向后兼容"、"我以为用户会按照我预期的方式使用这个功能"。
4.1 识别隐含假设
discuss-phase 中的假设识别不是随机的,而是遵循一个结构化的扫描框架:
flowchart TB
subgraph Input["输入"]
A1[讨论话题]
A2[项目上下文]
A3[ROADMAP.md]
end
subgraph Scan["假设扫描引擎"]
B1[技术假设扫描]
B2[业务假设扫描]
B3[用户假设扫描]
B4[环境假设扫描]
end
subgraph Output["输出"]
C1[假设清单]
C2[风险评级]
C3[验证策略]
end
A1 --> Scan
A2 --> Scan
A3 --> Scan
B1 --> C1
B2 --> C1
B3 --> C1
B4 --> C1
C1 --> C2
C2 --> C3四类假设的扫描维度:
| 假设类型 | 典型示例 | 风险等级 |
|---|---|---|
| 技术假设 | "第三方 API 99.9% 可用"、"这个库支持 TypeScript" | 高 |
| 业务假设 | "用户愿意为此功能付费"、"监管政策不会变化" | 高 |
| 用户假设 | "用户会阅读错误提示"、"用户偏好命令行而非 GUI" | 中 |
| 环境假设 | "团队能在 2 周内掌握新技术"、"测试环境能复现生产问题" | 中 |
在 discuss-phase 的 power 和 analyze 模式中,AI 会显式地问:
"在继续之前,让我们暂停一下。关于这个话题,有哪些事情是我们认为为真但尚未验证的?"
这个问题看似简单,但它强制讨论参与者从"论证模式"切换到"质疑模式"——这是防止认知盲点的关键心理转换。
4.2 假设验证策略
识别假设只是第一步。discuss-phase 为每个被识别的假设分配一个验证策略:
| 策略 | 描述 | 适用假设 |
|---|---|---|
| Prove(证明) | 在继续前必须验证 | 技术可行性、安全合规 |
| Monitor(监控) | 暂时接受,但设置监控指标 | 性能假设、可用性假设 |
| Accept(接受) | 风险可控,无需验证 | 团队能力、开发环境 |
| Spike(技术调研) | 启动一个时间盒调研任务 | 新技术、新框架 |
验证策略的选择不是 AI 的单方面决定,而是讨论的一部分。例如,AI 可能建议对"GraphQL 能满足我们的查询需求"这个假设采用 Spike 策略,但用户如果已有相关经验,可以将其降级为 Accept。
flowchart LR
A[识别假设] --> B{评估风险}
B -->|高风险| C[Prove / Spike]
B -->|中风险| D[Monitor]
B -->|低风险| E[Accept]
C --> F[记录验证任务]
D --> G[设置监控指标]
E --> H[记录理由]
F --> I[写入 DECISION.md]
G --> I
H --> I4.3 与 gsd-assumptions-analyzer Agent 的协作
在 power 和 all 模式下,discuss-phase 可能会 spawn 一个专门的子 Agent——gsd-assumptions-analyzer。这个 Agent 的职责是专注于假设分析,不参与讨论的其他方面。
协作流程:
sequenceDiagram
participant User as 用户
participant DP as discuss-phase
participant AA as gsd-assumptions-analyzer
participant SDK as GSD SDK
User->>DP: 启动 discuss-phase --mode=power
DP->>SDK: gsd-sdk query init.discuss-phase
SDK-->>DP: 项目上下文
DP->>DP: 进行一般性讨论
DP->>AA: Spawn assumptions-analyzer
话题: "引入微服务架构"
AA->>AA: 深度扫描隐含假设
AA->>DP: 返回假设清单 + 风险评级
DP->>User: 展示假设分析结果
User->>DP: 确认/修改验证策略
DP->>SDK: state.add-decision
记录假设与验证策略gsd-assumptions-analyzer 的设计体现了 GSD 的专业化 Agent 编排哲学——与其让一个通用 Agent 做所有事,不如让多个专业 Agent 各司其职。assumptions-analyzer 经过专门训练,更擅长识别认知盲点和隐含前提。
一个真实的假设分析示例:
## 假设分析:从单体迁移到微服务
### 已识别假设
| ID | 假设内容 | 类型 | 风险 | 验证策略 |
|----|---------|------|------|---------|
| A1 | 团队已具备 Docker/K8s 运维能力 | 环境 | 高 | Prove |
| A2 | 服务间通信延迟 < 50ms 可接受 | 技术 | 中 | Spike |
| A3 | 当前数据库连接池不会成为瓶颈 | 技术 | 中 | Monitor |
| A4 | 产品功能边界已稳定,不会出现频繁的服务重组 | 业务 | 高 | Monitor |
| A5 | 监控和日志基础设施已就绪 | 环境 | 高 | Prove |
### 关键发现
- 假设 A1 和 A5 如果为假,将导致迁移项目失败
- 建议先执行 `/gsd:spike` 验证 A1 和 A5,再继续讨论五、头脑风暴机制
头脑风暴(Brainstorming)在 discuss-phase 中不是"随意发散",而是一个有结构、有约束、有产出的创意生成流程。
5.1 结构化头脑风暴
GSD 的头脑风暴遵循**"发散 → 聚类 → 评估 → 收敛"**的四阶段模型:
flowchart LR
subgraph Diverge["① 发散"]
A1[禁止批评]
A2[追求数量]
A3[鼓励异想天开]
end
subgraph Cluster["② 聚类"]
B1[语义相似度分组]
B2[命名主题]
B3[识别重复]
end
subgraph Evaluate["③ 评估"]
C1[可行性评分]
C2[影响力评分]
C3[ effort 评分]
end
subgraph Converge["④ 收敛"]
D1[优先级矩阵]
D2[Top-3 推荐]
D3[行动项]
end
Diverge --> Cluster --> Evaluate --> Converge与传统头脑风暴的区别:
| 维度 | 传统头脑风暴 | GSD 头脑风暴 |
|---|---|---|
| 参与者 | 人类团队 | 人类 + AI |
| 发散方式 | 自由发言 | AI 辅助提示("还有吗?""如果反过来呢?") |
| 聚类方式 | 便利贴分类 | LLM 语义聚类 |
| 评估方式 | 举手投票 | 多维度评分矩阵 |
| 记录方式 | 会议纪要不完整 | 自动写入 DISCUSSION-LOG.md |
5.2 AI 的"创造性破坏"角色
在发散阶段,AI 会主动扮演**"创造性破坏者"**——提出反直觉的、挑战现有假设的想法:
"我们讨论了用缓存解决性能问题。但如果反过来——让性能问题变得无关紧要呢?比如,用预计算 + 边缘部署,让查询时间不再影响用户体验?"
这种**反向提示(Inversion Prompting)**是 GSD 头脑风暴的 secret sauce。它利用 AI 没有"面子顾虑"的特点,提出人类团队成员可能因社交压力而不敢提的激进想法。
5.3 头脑风暴的产物
头脑风暴结束后,discuss-phase 会生成两个文件:
- DISCUSSION-LOG.md:完整的讨论记录,包括所有被提出的想法、聚类结果、评估矩阵
- BRAINSTORM-OUTCOME.md:精简的产出文档,包含:
- Top-3 推荐方案及理由
- 每个方案的假设清单
- 推荐的下一步行动(如启动 spike、直接进入 plan-phase)
六、discuss-phase 与规划/执行的关系
discuss-phase 不是孤立存在的。它与 plan-phase 和 execute-phase 形成了 GSD 工作流中的**"决策三角"**:
flowchart TB
subgraph DiscussPhase["discuss-phase"]
D1[澄清需求]
D2[识别假设]
D3[记录决策]
end
subgraph PlanPhase["plan-phase"]
P1[分解任务]
P2[设计依赖]
P3[生成 PLAN.md]
end
subgraph ExecutePhase["execute-phase"]
E1[执行 Wave]
E2[处理偏差]
E3[创建 SUMMARY.md]
end
D1 -->|"清晰的输入"| P1
D2 -->|"已知假设"| P2
D3 -->|"决策上下文"| P3
P3 --> E1
E2 -->|"遇到阻塞"| D1
E3 -->|"执行洞察"| D36.1 向 plan-phase 传递什么
discuss-phase 的输出是 plan-phase 的输入。具体来说:
- DECISION.md → 成为 plan-phase 中技术方案的决策依据
- 假设清单 → 影响 plan-phase 的任务优先级和风险缓解策略
- DISCUSSION-LOG.md → 作为参考文档,供 planner Agent 在需要时读取
在第 15 篇中,我们看到 plan-phase 的 Planner Agent 会读取 references/ 目录中的文档。discuss-phase 的讨论日志通常会被软链接或复制到 references/discussion-logs/ 中,供 Planner 随时引用。
6.2 从 execute-phase 接收什么
discuss-phase 不仅是"规划前的准备",还是"执行中的诊所"。当 execute-phase 遇到以下情况时,可以回退到 discuss-phase:
- 计划与 reality 严重不符:发现 plan-phase 未能预见的依赖或约束
- 技术方案被证明不可行:原计划的技术路线在实际实现中遇到根本性障碍
- 需求理解偏差:实现过程中发现用户对需求的理解与 plan-phase 的假设不同
这种"回退"不是失败,而是 GSD **"学习型执行"**理念的体现——执行不仅仅是按照计划走,而是在执行中持续学习和调整。
七、交互工作流的设计哲学
discuss-phase 是 GSD 中交互密度最高的工作流。它的设计蕴含了几个深刻的人机协作哲学:
7.1 "讨论即代码"
在 GSD 中,讨论不是一次性的聊天,而是工程产物。每一次 discuss-phase 都会生成结构化的 Markdown 文件,这些文件:
- 可以被版本控制(git 追踪讨论历史)
- 可以被其他 Agent 引用(Planner 读取 DECISION.md)
- 可以被审计("我们为什么做出这个决定?"→ 查看 DISCUSSION-LOG.md)
这种**"讨论即代码"**的理念,将通常被视为"非正式"的讨论活动,提升到了与代码同等重要的工程地位。
7.2 "不确定性是信息"
discuss-phase 有一个反直觉的设计:它奖励不确定性,惩罚虚假的确信。
当 AI 检测到讨论中存在高度不确定性时,它不会试图用模糊的断言来"掩盖",而是会:
- 显式标记不确定性("这里存在不确定性:…")
- 提出降低不确定性的路径("建议通过 spike 验证…")
- 在 DECISION.md 中记录不确定性对决策的影响
这种设计的理论基础来自信息论:不确定性本身就是有价值的信息——它告诉你"哪里还需要投入认知资源"。
7.3 "人的判断不可替代"
尽管 AI 可以生成假设清单、评估风险、甚至推荐决策,但 discuss-phase 的每一个关键节点都保留了人的否决权:
- AI 推荐的话题,用户可以选择不讨论
- AI 识别的假设,用户可以判断为"已验证"
- AI 推荐的方案,用户可以要求继续探索其他选项
这不是因为 AI 不够智能,而是因为某些决策的代价只能由人来承担。AI 提供信息和分析,但最终的判断和承诺来自人。
flowchart LR
A[AI 提供
信息 + 分析] --> B[人做出
判断 + 承诺]
B --> C[AI 记录
决策 + 理由]
C --> D[AI 执行
计划 + 验证]
D --> A7.4 "对话即状态机"
discuss-phase 的交互不是无状态的聊天,而是一个状态机:
| 状态 | 说明 | 可转换到 |
|---|---|---|
| initialized | 刚启动,加载了上下文 | identifying-topic |
| identifying-topic | 确定讨论话题 | exploring / awaiting-input |
| exploring | 正在探索某个方向 | deep-diving / converging |
| deep-diving | 深度追问中 | exploring / converging |
| converging | 开始收敛到决策 | recording / awaiting-confirmation |
| recording | 记录决策到 DECISION.md | completed |
| completed | 讨论结束 | - |
这个状态机让 discuss-phase 可以在任意时刻被中断和恢复——如果用户需要离开,当前状态会被保存到 STATE.md 中,下次启动时可以无缝继续。
八、小结
discuss-phase 是 GSD 框架中最具"人文精神"的工作流。它不产出代码,不生成计划,但它为所有后续的代码和计划提供了认知基础。其核心设计亮点包括:
- 薄分发器架构:通过渐进式披露将 2000+ 行单体拆分为 <500 行父文件 + 9 个模式文件,有效控制上下文预算
- 多模式支持:power/all/auto/chain/batch 五种模式覆盖从深度论证到快速对齐的全谱系讨论需求
- 假设分析机制:系统性地识别、分类和验证隐含假设,防止"流沙上的建筑"
- 结构化头脑风暴:发散 → 聚类 → 评估 → 收敛的四阶段模型,让创意生成有章可循
- 人机协作设计:AI 提供信息和分析,人做出判断和承诺,讨论产物工程化、版本化、可追溯
discuss-phase 的存在提醒我们:在 AI 能够写代码、做规划的时代,思考的质量仍然是决定成败的根本。一个好的 discuss-phase,能让后续的 plan-phase 少走弯路,让 execute-phase 少踩坑——它是对"磨刀不误砍柴工"这一古老智慧的工程化实现。
📌 下一篇预告:第 18 篇《quick 与 fast 工作流》将深入解析 GSD 中两个轻量级执行工作流——
/gsd:quick和/gsd:fast。与 execute-phase 的"重型 Wave 编排"不同,quick 和 fast 追求的是最小开销、最大速度的即兴执行。我们将看到 GSD 如何在"精密手术"(execute-phase)和"快速缝合"(quick/fast)之间取得平衡,以及什么时候该用"大炮"、什么时候该用"手术刀"。敬请期待!