SDD驱动AI开发:当Open Spec遇上Superpowers
SDD驱动AI开发:当Open Spec遇上Superpowers
“Too simple to need a design” is always wrong.
— Superpowers 工作流的第一条铁律
前言:Vibe Coding 的困境
2025年以来,”Vibe Coding”成了最火热的开发范式——对着AI说几句话,代码就出来了。Cursor、Copilot、Claude Code……工具越来越多,AI越来越聪明。
但你有没有发现一个诡异的现象:
AI写的代码越来越快,项目却越来越乱。
- 第一天:哇,AI帮我5分钟写了个登录页面!
- 第一周:嗯,重构一下这个组件……等等,它改了三个不相关的文件?
- 第一个月:这个项目的代码到底是谁写的?——是你,也是AI,但现在谁也看不懂了。
问题出在哪?不是AI不够强,而是我们给AI的方式不对。
我们给AI的是模糊的自然语言指令,期待它产出精确的工程代码。这就像你对施工队说”帮我盖个好看的房子”,然后期待他们交出一份完美的建筑图纸。
SDD(Spec-Driven Development,规格驱动开发) 正是为了解决这个问题而生的。
什么是SDD?
SDD的核心思想只有一句话:
先写规格(Spec),再写代码(Code)。
这不是什么新概念。软件工程几十年来一直在讲”需求分析”、”概要设计”、”详细设计”。但在AI时代,Spec的意义发生了根本变化:
过去: Spec是给人看的文档,写完就扔,代码才是真相。
现在: Spec是给AI的指令,Spec就是真相,代码只是它的实现。
在AI辅助开发中,Spec不再是”可选的文档”,而是驱动整个开发流程的唯一输入。
SDD vs 传统开发 vs Vibe Coding
| 维度 | 传统开发 | Vibe Coding | SDD |
|---|---|---|---|
| 输入 | 需求文档 + 架构设计 | 自然语言 Prompt | 结构化 Spec |
| 开发主体 | 人类程序员 | AI(人类监督) | AI(Spec 驱动) |
| 质量保障 | Code Review | 基本没有 | Spec Review + Code Review |
| 可复现性 | 高(有代码) | 低(Prompt模糊) | 高(Spec可重放) |
| 协作方式 | 人-人 | 人-AI | Spec-AI |
| 核心资产 | 代码 | Prompt | Spec |
SDD本质上是一种人机协作的契约:人类负责思考和定义(写Spec),AI负责执行和实现(写代码)。
Open Spec:让Spec成为一等公民
“Open Spec”不是一个具体的产品或工具,而是一种开放的规格定义方法论。它的核心主张是:
1. Spec应该是机器可读的
传统的PRD(产品需求文档)是写给人看的Word文档,充满了模糊的表述:”用户体验要好”、”加载速度要快”、”界面要美观”。
Open Spec要求Spec是结构化的、无歧义的:
1 | # 传统PRD |
2. Spec应该是版本化的
Spec和代码一样,需要版本控制。当需求变更时,我们修改Spec,然后让AI重新生成受影响的代码。
3. Spec应该是可测试的
每一条Spec都应该能直接转化为测试用例。Spec说”密码最少8位”,那测试就应该验证7位密码被拒绝。
4. Spec应该是开放共享的
好的Spec模式可以被复用。认证模块的Spec、分页组件的Spec、RESTful API的Spec……这些模式可以被社区共享和改进。
Superpowers:SDD的工程化实现
Superpowers 是一个将SDD理念落地的工作流框架。它定义了一套严格的开发管线:
1 | Idea → Brainstorm → Plan → Subagent-Driven Build (TDD) → Code Review → Finish Branch |
让我们逐个拆解。
Phase 1: Brainstorming(头脑风暴)
铁律:不碰任何代码。
当你说”我要做一个XXX”时,Superpowers不会让AI立刻开始写代码。它会:
- 探索项目上下文 — 读代码、读文档、看最近的提交
- 逐个提问 — 一次只问一个问题,优先提供选择题
- 提出2-3个方案 — 每个方案有明确的优劣分析和推荐
- 逐段审批 — 设计分段呈现,每段都需要你确认
- 输出设计文档 — 保存到
docs/plans/YYYY-MM-DD-<topic>-design.md
💡 关键洞察: 这个阶段的价值不在于”设计文档”本身,而在于迫使你思考清楚。很多bug的根源不是代码写错了,而是需求想错了。
Phase 2: Writing Plans(编写计划)
设计通过后,进入计划阶段。Superpowers会:
- 将设计拆解为细粒度的任务
- 每个任务控制在 2-5分钟 的执行时间
- 每个任务遵循 TDD 循环:写测试 → 看失败 → 实现 → 看通过 → 提交
这种粒度的设计是有原因的——它让每个任务都是可验证的。你不需要等到最后才知道哪里出了问题。
Phase 3: Subagent-Driven Development(子代理驱动开发)
这是Superpowers最酷的部分。每个任务不是由一个AI完成的,而是由三个子代理协作:
1 | ┌─────────────┐ ┌──────────────┐ ┌──────────────┐ |
- Implementer: 根据任务描述和Spec编写代码,严格遵循TDD
- Spec Reviewer: 确认代码完全符合Spec要求,不多不少
- Code Reviewer: 检查代码质量、风格、潜在问题
三个角色互相制衡,就像现实中的团队协作一样。
Phase 4: Systematic Debugging(系统化调试)
出了bug?Superpowers不允许”试试这个修一下”式的碰运气。
铁律:不找到根因,不写任何修复代码。
调试流程:
- 根因调查 — 读错误信息、复现问题、检查最近变更、追踪数据流
- 模式分析 — 找到正常工作的例子,对比差异
- 假设-验证 — 一次只验证一个假设
- 修复-验证 — 从根因修复,确认不引入新问题
Phase 5: Finishing Branch(完成分支)
所有任务完成、所有测试通过后:
- 确认所有测试通过
- 选择:本地合并 / 推送PR / 保留分支 / 丢弃
- 清理
实战:一个SDD驱动的开发示例
假设你要开发一个”用户待办事项”功能。
❌ Vibe Coding 方式
1 | 你:帮我写一个待办事项功能 |
✅ SDD + Superpowers 方式
Step 1: Brainstorm
1 | AI: 我来了解一下项目上下文……你的项目用的是什么技术栈? |
Step 2: Spec → Plan
1 | ## Task 1: 数据模型 (2min) |
Step 3: 子代理执行
1 | [Implementer 子代理] 完成 Task 1: 数据模型 ✅ |
每一步都有记录,每一步都可验证,每一步都可回溯。
SDD的核心优势
1. Spec即文档
传统开发中,文档永远是过时的。SDD中,Spec就是开发的起点,它永远不会过时——因为代码是根据它生成的。
2. AI的确定性
AI的输出质量取决于输入质量。模糊的Prompt产出模糊的代码,精确的Spec产出精确的代码。SDD把”模糊”从方程中移除了。
3. 可审计性
每一个变更都可以追溯到Spec中的哪一条需求。出了问题,你不需要考古代码,只需要检查Spec。
4. 真正的TDD
很多人说”我们要做TDD”,但实际执行时总是”先写代码,再补测试”。SDD+Superpowers的流程从结构上保证了TDD的执行——因为Plan中每个任务的第一步就是”写测试”。
5. 人机协作的最佳分工
| 角色 | 职责 |
|---|---|
| 人类 | 思考、定义、决策、审批 |
| AI | 执行、实现、测试、审查 |
人类做人类擅长的事(创造性思考),AI做AI擅长的事(快速实现)。
SDD的边界与挑战
SDD不是银弹。它有明确的适用边界:
适合SDD的场景
- ✅ 新功能开发
- ✅ 有明确需求的项目
- ✅ 需要多人/AI协作的场景
- ✅ 对质量有要求的生产代码
不太适合的场景
- ❌ 快速原型/一次性脚本
- ❌ 探索性编程(还不知道自己要什么)
- ❌ 单行修复(不需要完整流程)
- ❌ 非代码任务
实践中的挑战
- 写好Spec是一种能力 — 需要练习,初期可能觉得”写Spec比写代码还慢”
- 不是所有需求都能精确定义 — 有些东西就是需要边做边调整
- 工具链还在成熟中 — SDD的工具生态还在早期
未来展望:Spec-First 的AI原生开发
我们正在见证软件开发范式的转变:
1 | Code-First → Prompt-First → Spec-First |
Code-First时代(~2020): 程序员写代码,文档是附属品。
Prompt-First时代(2023-2025): 用自然语言驱动AI写代码,但Prompt是模糊的、临时的。
Spec-First时代(2025+): Spec是精确的、持久的、可版本控制的,AI根据Spec生成和维护代码。
在这个范式下,**”会写Spec”将成为比”会写代码”更重要的技能**。
而Superpowers这样的工作流框架,为Spec-First开发提供了工程化的实践路径。它不只是一个”AI编程技巧”,而是一种新的软件工程方法论。
结语
SDD不是要取代Vibe Coding,而是为它加上了工程化的护栏。
如果你只是在写一个周末小项目,Vibe Coding完全够用。
但如果你在构建一个需要维护、需要协作、需要质量的项目——SDD值得你认真考虑。
先想清楚,再动手。先写Spec,再写代码。
这不是新道理,但在AI时代,它比以往任何时候都更重要。
参考资料
- Superpowers - GitHub
- Superpowers - OpenClaw Edition
- OpenClaw — AI Agent 运行时
- ClawHub — Agent 技能市场



