当 AI 写代码越来越快,「写得对不对」成了真正的瓶颈。Spec-Driven Development(规格驱动开发)正在把「需求文档」从一次性脚手架变成可执行的工程产物。
背景:Vibe Coding 的尽头是 Spec Coding
过去一年,AI 编程工具(Cursor、Claude Code、Copilot)让「写代码」的门槛骤降。但随之而来的是一个普遍困境:
- AI 一口气生成几百行代码,跑起来才发现需求理解有偏差
- 多轮对话后,最初的意图被稀释,代码偏离方向
- 没有结构化的需求记录,复盘和迭代全靠记忆
Spec-Driven Development 的核心命题:让 AI 按「规格说明书」施工,而不是凭感觉写代码。规格(Spec)不再是写完就扔的脚手架,而是贯穿开发全生命周期的可执行资产。
主流项目对比
| 项目 | Star 数 | 出品方 | 核心定位 | 适用场景 |
|---|---|---|---|---|
| obra/superpowers | ~197k | Jesse Vincent (obra) | 强制纪律的方法论框架,七阶段流水线 | 个人/小团队,追求极致规范 |
| github/spec-kit | ~113k | GitHub 官方 | 规格驱动开发工具包,CLI + Slash 命令 | 企业级,多 AI 助手集成 |
| bmad-code-org/BMAD-METHOD | ~34k | 社区 | 完整 AI 敏捷开发框架 | 团队级敏捷协作 |
| Fission-AI/OpenSpec | ~29k | 社区 | 开放 Spec 规范 | 规范研究/跨工具对齐 |
| garrytan/gstack | --- | YC CEO Garry Tan | 个人工作流模板 | 快速启动新项目 |
深度解析:两个标杆项目
1. obra/superpowers --- 强制纪律的方法论
哲学:不是「给你工具」,而是「强制你按规则走」。
七阶段强制流水线(v5.1.0):
Brainstorm(头脑风暴)
↓
Spec(编写规格说明)
↓
Plan(拆解为可执行任务)
↓
TDD(红→绿→重构,强制循环)
↓
Subagent Dev(子 agent 实现)
↓
Review(两阶段审查:规格合规 + 代码质量)
↓
Finalize(交付前最终验证)
三条 Iron Law:
- 测试优先:若 agent 在写测试之前就开始写实现代码,强制删除,要求从测试重新开始
- 证据非声称:不允许「应该可以工作」的假设,必须验证
- 拒绝外部贡献新 skill:保持方法论纯度,避免稀释
支持平台:Claude Code、Cursor、Copilot、Gemini CLI、Windsurf 等 8+ 平台。
安装:
bash
npx skills add obra/superpowers -g -y
2. github/spec-kit --- GitHub 官方押注的未来
哲学:让规格(Spec)成为软件开发的第一公民,代码是规格的产物。
五阶段工作流:
Constitution(宪章:项目原则/编码标准)
↓
Specify(需求:what & why,不涉及技术栈)
↓
Plan(技术方案:技术栈 + 架构 + 模块设计)
↓
Tasks(任务拆解:可执行任务列表)
↓
Implement(执行:按任务生成代码)
核心 Slash 命令:
| 命令 | 作用 |
|---|---|
/speckit.constitution |
建立项目宪章(编码标准、原则、约束) |
/speckit.specify |
描述要构建什么(what/why) |
/speckit.plan |
制定技术实现方案 |
/speckit.tasks |
拆解为具体任务列表 |
/speckit.implement |
执行任务,生成代码 |
/speckit.clarify |
澄清模糊需求(plan 之前运行) |
/speckit.analyze |
跨产物一致性分析 |
/speckit.checklist |
生成质量检查清单 |
支持的 AI 助手(截至 v0.11.6):
| AI 助手 | CLI 选项 | 支持级别 |
|---|---|---|
| Claude Code | --ai claude |
✅ 完整支持 |
| GitHub Copilot | --ai copilot |
✅ 完整支持 |
| Cursor | --ai cursor |
✅ 完整支持 |
| Gemini CLI | --ai gemini |
✅ 完整支持 |
| Windsurf | --ai windsurf |
✅ 完整支持 |
| Qwen Code | --ai qwen |
✅ 完整支持 |
| Codex CLI | --ai codex |
⚠️ 有限支持 |
安装:
bash
# 推荐:持久安装
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
# 初始化项目
specify init my-project --ai claude
# 现有项目原地初始化
specify init --here --ai copilot
项目结构(初始化后):
my-project/
├── .github/
│ ├── agents/
│ └── prompts/
├── .specify/
│ ├── memory/
│ │ └── constitution.md
│ ├── scripts/
│ └── templates/
├── specs/
│ └── (功能目录)
工作流拓扑图
#mermaid-svg-oXRCamDi4GJcQ86x{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-oXRCamDi4GJcQ86x .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-oXRCamDi4GJcQ86x .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-oXRCamDi4GJcQ86x .error-icon{fill:#552222;}#mermaid-svg-oXRCamDi4GJcQ86x .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-oXRCamDi4GJcQ86x .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-oXRCamDi4GJcQ86x .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-oXRCamDi4GJcQ86x .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-oXRCamDi4GJcQ86x .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-oXRCamDi4GJcQ86x .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-oXRCamDi4GJcQ86x .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-oXRCamDi4GJcQ86x .marker{fill:#333333;stroke:#333333;}#mermaid-svg-oXRCamDi4GJcQ86x .marker.cross{stroke:#333333;}#mermaid-svg-oXRCamDi4GJcQ86x svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-oXRCamDi4GJcQ86x p{margin:0;}#mermaid-svg-oXRCamDi4GJcQ86x .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-oXRCamDi4GJcQ86x .cluster-label text{fill:#333;}#mermaid-svg-oXRCamDi4GJcQ86x .cluster-label span{color:#333;}#mermaid-svg-oXRCamDi4GJcQ86x .cluster-label span p{background-color:transparent;}#mermaid-svg-oXRCamDi4GJcQ86x .label text,#mermaid-svg-oXRCamDi4GJcQ86x span{fill:#333;color:#333;}#mermaid-svg-oXRCamDi4GJcQ86x .node rect,#mermaid-svg-oXRCamDi4GJcQ86x .node circle,#mermaid-svg-oXRCamDi4GJcQ86x .node ellipse,#mermaid-svg-oXRCamDi4GJcQ86x .node polygon,#mermaid-svg-oXRCamDi4GJcQ86x .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-oXRCamDi4GJcQ86x .rough-node .label text,#mermaid-svg-oXRCamDi4GJcQ86x .node .label text,#mermaid-svg-oXRCamDi4GJcQ86x .image-shape .label,#mermaid-svg-oXRCamDi4GJcQ86x .icon-shape .label{text-anchor:middle;}#mermaid-svg-oXRCamDi4GJcQ86x .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-oXRCamDi4GJcQ86x .rough-node .label,#mermaid-svg-oXRCamDi4GJcQ86x .node .label,#mermaid-svg-oXRCamDi4GJcQ86x .image-shape .label,#mermaid-svg-oXRCamDi4GJcQ86x .icon-shape .label{text-align:center;}#mermaid-svg-oXRCamDi4GJcQ86x .node.clickable{cursor:pointer;}#mermaid-svg-oXRCamDi4GJcQ86x .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-oXRCamDi4GJcQ86x .arrowheadPath{fill:#333333;}#mermaid-svg-oXRCamDi4GJcQ86x .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-oXRCamDi4GJcQ86x .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-oXRCamDi4GJcQ86x .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-oXRCamDi4GJcQ86x .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-oXRCamDi4GJcQ86x .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-oXRCamDi4GJcQ86x .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-oXRCamDi4GJcQ86x .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-oXRCamDi4GJcQ86x .cluster text{fill:#333;}#mermaid-svg-oXRCamDi4GJcQ86x .cluster span{color:#333;}#mermaid-svg-oXRCamDi4GJcQ86x div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-oXRCamDi4GJcQ86x .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-oXRCamDi4GJcQ86x rect.text{fill:none;stroke-width:0;}#mermaid-svg-oXRCamDi4GJcQ86x .icon-shape,#mermaid-svg-oXRCamDi4GJcQ86x .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-oXRCamDi4GJcQ86x .icon-shape p,#mermaid-svg-oXRCamDi4GJcQ86x .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-oXRCamDi4GJcQ86x .icon-shape .label rect,#mermaid-svg-oXRCamDi4GJcQ86x .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-oXRCamDi4GJcQ86x .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-oXRCamDi4GJcQ86x .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-oXRCamDi4GJcQ86x :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 追求强制纪律
追求官方生态
团队级敏捷
需求输入
选择工具
superpowers
七阶段流水线
spec-kit
五阶段工作流
BMAD-METHOD
AI敏捷框架
Brainstorm
Spec
Plan
TDD 红绿重构
Subagent Dev
Review
Finalize
Constitution
Specify
Clarify
Plan
Tasks
Analyze
Implement
交付
选型建议
选 superpowers,如果你:
- 一个人或小团队,希望有严格纪律约束
- 使用 Claude Code 作为主要 AI 助手
- 愿意接受「强制流水线」而不是可选工具
选 spec-kit,如果你:
- 希望与企业级工具链(Copilot、Claude Code)深度集成
- 需要团队协作,多人共享同一套 spec 规范
- 看重 GitHub 官方背书和长期维护
选 BMAD-METHOD,如果你:
- 需要完整的敏捷开发框架(不只是 spec 驱动)
- 团队已有 Scrum/Agile 基础,想升级为 AI 敏捷
快速上手:以 spec-kit 为例
第一步:安装 CLI
bash
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
第二步:初始化项目
bash
# 新项目
specify init my-project --ai claude
# 现有项目
cd existing-project
specify init --here --ai copilot
第三步:在 AI 助手中按序执行
/speckit.constitution
# 定义项目原则:编码标准、测试标准、性能要求
/speckit.specify
# 描述功能需求:what & why(不写 how)
/speckit.clarify
# 澄清模糊点
/speckit.plan
# 制定技术方案:技术栈、架构、模块设计
/speckit.tasks
# 拆解任务
/speckit.implement
# 按任务执行,生成代码
总结
| 维度 | Vibe Coding | Spec-Driven Development |
|---|---|---|
| 需求记录 | 散落在对话历史中 | 结构化 Spec 文件,可追踪 |
| 开发流程 | 跳跃式,易偏离 | 分阶段,每阶段有产出 |
| 代码质量 | 依赖 AI 临场发挥 | 测试先行,规格对齐 |
| 团队协作 | 个人化,难复用 | Spec 可共享、可审查 |
| 长期维护 | 难(无规格文档) | 易(Spec = 活文档) |
一句话判断要不要上 Spec:如果你的 AI 编程项目已经超过 3 个文件,或者需要维护超过 2 周,Spec-Driven Development 会让你少走很多弯路。