
给 AI 几句模糊的提示词,然后祈祷它生成可用的代码——这就是"氛围编程"。规范驱动开发,能让这个过程变得可控。
AI 编程工具让写代码变得简单,但也带来了新问题:
• 范围蔓延:做着做着就偏离了最初的目标
• 功能偏离:AI 自己"发挥",生成的代码不是你想要的
• 技术债务:快速修复堆积,代码越来越难维护
• 上下文腐烂:随着对话变长,AI 的输出质量逐步劣化
很多人会问:我们不是已经写了需求文档吗?
答案是:文档是静态的,开发是动态的。 文档写完就被遗忘,而规范驱动开发要求规范贯穿整个开发周期。
一句话概括:在写代码之前,先写规范;在实现过程中,持续回顾规范。
规范驱动开发不只是"先写文档",而是将规范作为开发过程的核心驱动力量。
规范驱动开发分三个层次,但核心只有一个:规范是活的,不是死的。

层次 | 名称 | 通俗理解 |
|---|---|---|
Level 1 | spec-first | 先写规范再动手 |
Level 2 | spec-anchored | 做完了也保留规范,方便维护 |
Level 3 | spec-as-source | 只改规范,不改代码 |
大多数团队停留在 Level 1,而且往往是"一次性规范"——写完就忘。

为项目创建一个完整的规范文档,制定设计和实现计划,然后开始实现……但在实现过程中把规范抛诸脑后。
这不是真正的规范驱动开发。规范驱动开发的真正价值在于形成持续的反馈循环:

需求 → 规范 → 实现 → 反馈 → 更新规范 → 迭代实现 → ...
将项目分解为多个子项目,每个子项目划分明确的阶段:
• 每个模块独立测试、独立部署、独立迭代
• 每个阶段可验证,问题早发现早解决
推荐工作流:
1. 尽职调查 → 阅读文档和其他相关来源
2. 架构规划 → 设计系统架构和资源依赖
3. 分步构建 → 从小型、可测试的模块开始
一份好的规范文档应该包含:
1. 需求定义:清晰描述要解决的问题
2. 架构考量:系统架构、技术选型、关键决策
3. 实现计划:分阶段的具体步骤
4. 测试策略:每个阶段的验证方法
做法 | 结果 |
|---|---|
写几句快速提示就尽快生成 | 大量纠偏,甚至推倒重来 |
规划阶段投入时间 | 后续交互多为小调整,而非大改 |
额外收益:将项目学到的内容沉淀到文档中,成为未来的加速器。
前期规划让模块化变得自然。每个阶段可独立验证,问题早发现早解决。
推荐实践:堆叠式 Pull Request——创建更小、更易审查的 PR,每个都有相互依赖关系。
新技术或工具在早期阶段可能不完善,要有 fallback 方案:
• 预期方案不工作时,知道如何切换到备选方案
• 理解底层原理,不完全依赖高层抽象
安全不是事后补丁,而是架构的一部分。后期添加安全机制往往成本更高:
• 可能需要重构已有代码
• 某些设计决策不可逆
理论有了,如何落地?以 GSD (Get Shit Done) 为例,看看规范驱动开发如何付诸实践。
讨论 → 规划 → 执行 → 验证 → 发布
每个阶段都有明确的输入输出:
阶段 | 输入 | 输出 |
|---|---|---|
讨论 | 阶段目标 | CONTEXT.md(决策锁定) |
规划 | CONTEXT.md | PLAN.md(原子化任务) |
执行 | PLAN.md | 代码 + SUMMARY.md |
验证 | 代码 | UAT.md(验收报告) |
1. 规范文件体系
GSD 自动维护一套规范文件,确保上下文始终新鲜:
项目愿景,始终加载2. 原子化任务
每个计划都是独立可执行的小任务:
<task type="auto">
<name>Create login endpoint</name>
<files>src/app/api/auth/login/route.ts</files>
<action>Use jose for JWT. Validate credentials. Return httpOnly cookie.</action>
<verify>curl -X POST localhost:3000/api/auth/login returns 200</verify>
<done>Valid credentials return cookie, invalid return 401</done>
</task>
3. 新上下文执行
每个任务使用全新的上下文窗口执行,避免历史污染:
• 20 万 token 纯用于实现
• 零历史垃圾
• 质量持续稳定
4. Wave 并行执行
根据依赖关系分组执行:
Wave 1(并行): Plan 01, Plan 02
↓
Wave 2(并行): Plan 03, Plan 04 (依赖 Wave 1)
↓
Wave 3: Plan 05 (依赖 Wave 2)
npx get-shit-done-cc@latest
安装后,在 Claude Code 对话框中输入:
/gsd-new-project # 提问 → 研究 → 需求 → 路线图
/gsd-discuss-phase 1 # 收集实现决策
/gsd-plan-phase 1 # 研究 + 规划 + 验证
/gsd-execute-phase 1 # 并行执行计划
/gsd-verify-work 1 # 用户验收测试
/gsd-ship 1 # 创建 PR
注意:
/gsd-*是斜杠命令,在 Claude Code 等 AI 编程工具的对话框中执行,不是命令行。GSD 支持 Claude Code、Gemini CLI、Cursor、Copilot、Windsurf 等 12 个运行时。
问题 | GSD 的解法 |
|---|---|
规范写完就忘 | STATE.md 跨会话记忆,始终加载 |
上下文腐烂 | 每个任务用新上下文,零历史污染 |
AI 随意发挥 | XML 格式的原子化任务,指令精确 |
难以并行 | Wave 分组,独立任务并行执行 |
无法验证 | 验证步骤内建在计划里 |
建议 | 说明 |
|---|---|
📋 规范先行 | 在写代码之前先写规范;实现过程中不断回顾规范 |
🧱 小步构建 | 将项目分解为可独立测试的小模块 |
🔐 安全早做 | 不要把安全留到最后,作为架构的一部分设计 |
🔄 反馈循环 | 需求→规范→实现→反馈→更新规范,持续迭代 |
AI 编程工具发展日新月异,但工具本身不能替代工程实践。
规范驱动开发不是额外的负担,而是让 AI 编程从"碰运气"变成"可控流程"的关键方法论。
无论技术背景如何,掌握正确的方法,人人都能构建高质量的软件。