告别 Vibe Coding 混乱:SDD 规范驱动开发,从文档先行到 AI 协作的完整方法论

告别 Vibe Coding 混乱:SDD 规范驱动开发,从文档先行到 AI 协作的完整方法论

第一天用 AI 写代码效率提升 10 倍,第二周开始返工,第一个月陷入自我怀疑------这是无数 Vibe Coding 实践者的真实写照。SDD(Spec-Driven Development,规范驱动开发) 是解决这个问题的全新范式:先写文档,再写代码。借鉴建筑业的"不画蓝图不盖房"和 Stephen Covey 的"以终为始"思想,SDD 坚持所有事物都要经过两次创造------心智创造(文档)和物理创造(代码)。本文从一个浏览器翻译插件的真实项目出发,完整拆解 SDD 从需求分析到代码生成的全流程。建议收藏后动手实践。


一、Vibe Coding 的甜蜜与苦涩

1.1 什么是 Vibe Coding?

css 复制代码
Vibe Coding(氛围编程):
  → AI Coding Agent 交互面板吸引我们不停地给 AI 下任务
  → "帮我做一个用户认证系统" → AI 瞬间生成 2000 行代码
  → 上头了,沉浸其中,停不下来

  主流 AI 编程工具:
  ┌─────────────────────────────────────────────────┐
  │  claude code   → Anthropic 出品,终端 Agent     │
  │  codex          → OpenAI Agent                  │
  │  Deepseek       → harness 插件                  │
  │  Cursor         → AI 原生编辑器                  │
  │  Trae           → AI IDE                        │
  │  Copilot        → GitHub 辅助编程                │
  └─────────────────────────────────────────────────┘

  每一个都声称 10 倍效率提升
  第一天:效率飞升,沉浸式体验
  第二周:开始返工(AI 猜的上下文不对)
  第一个月:陷入自我怀疑

1.2 Vibe Coding 的三大陷阱

arduino 复制代码
┌──────────────────────────────────────────────────────────┐
│                Vibe Coding 的三大陷阱                     │
│                                                          │
│  陷阱一:上下文缺失                                       │
│  ┌────────────────────────────────────────────┐           │
│  │  "帮我做一个用户认证系统"                    │           │
│  │  → 用什么框架?NestJS?Python?Java?       │           │
│  │  → 用什么数据库?MySQL?MongoDB?           │           │
│  │  → 用 Mock 还是真实后端?                    │           │
│  │  → JWT 还是 Session?                        │           │
│  │  AI 不知道这些 → 自己猜 → 猜错了 → 返工      │           │
│  └────────────────────────────────────────────┘           │
│                                                          │
│  陷阱二:会话历史丢失                                      │
│  ┌────────────────────────────────────────────┐           │
│  │  聊天窗口的上下文 → 一关窗口可能就没了        │           │
│  │  没有持久化 → AI 失去记忆                    │           │
│  │  新会话重新猜 → 之前的决策全丢了             │           │
│  │  → 幻觉加剧 → 代码越来越乱                  │           │
│  └────────────────────────────────────────────┘           │
│                                                          │
│  陷阱三:每一轮失败都在消耗                               │
│  ┌────────────────────────────────────────────┐           │
│  │  等待 AI 生成 → 时间消耗                    │           │
│  │  Token 消耗 → 金钱消耗                      │           │
│  │  代码不对 → 改了又改 → 越改越乱             │           │
│  │  看上去跑得起来 → 后面一堆的麻烦             │           │
│  └────────────────────────────────────────────┘           │
│                                                          │
│  根本原因:                                               │
│  不是 AI 能力不行,是我们给大模型的上下文不够              │
└──────────────────────────────────────────────────────────┘

1.3 Vibe Coding vs SDD 对比

arduino 复制代码
Vibe Coding(氛围编程):
  "帮我做一个 XX"
  → 直接跳到代码(第二次创造)
  → 跳过了第一次创造(设计)
  → AI 猜 → 幻觉 → 返工

SDD(规范驱动开发):
  "先写 proposal.md 需求文档"
  → 第一次创造:在大脑中设计一遍,用文档落地
  → "再根据规范写代码"
  → 第二次创造:AI 按文档驱动生成代码
  → 有据可依 → 可追溯 → 可回退

  SDD 解决 Vibe Coding 问题的核心:
  → 文档是 Coding Agent 的上下文
  → 文档可持久化(git 跟踪)
  → 文档可共享、可迭代
  → AI 不需要猜,按文档执行

二、SDD 的理论基础:两次创造原则

2.1 以终为始

sql 复制代码
Stephen Covey《高效人士的7个习惯》
  第二个习惯:以终为始(Begin with the End in Mind)

  核心思想:
  "所有事物都经过两次创造------
   先是心智创造,然后是物理创造"

  ┌──────────────────────────────────────────────────┐
  │              两次创造原则                          │
  │                                                  │
  │  第一次创造(心智创造)                            │
  │  → 在大脑中设计一遍                               │
  │  → 花时间想清楚要做什么、怎么做                    │
  │  → 动手之前先有个样子                              │
  │  → 用各种文档落地(proposal / design / task)     │
  │                                                  │
  │  第二次创造(物理创造)                            │
  │  → 根据规范真正地执行                              │
  │  → AI 按文档驱动写代码                            │
  │  → 有据可依,不需要猜                             │
  └──────────────────────────────────────────────────┘

  类比:
  → 不画蓝图就不盖房
  → 不写商业计划就不创业
  → 不写需求文档就不写代码

  Vibe Coding 的问题:
  → 聊天窗口的诱惑让我们跳过第一次创造
  → 直接进入第二次创造(写代码)
  → 没有设计 → AI 猜 → 返工

2.2 SDD 的定义

ini 复制代码
SDD = Spec-Driven Development(规范驱动开发)

  Spec     → 规范文档
  Driven   → 驱动(文档驱动代码)
  Development → 开发新范式(AI 协作范式)

  核心理念:文档即是代码

  ┌──────────────────────────────────────────────────┐
  │  当代码生成成本越来越低,                          │
  │  真正稀缺的不是代码,                              │
  │  而是清晰、可执行、可验证的意图。                   │
  │                                                  │
  │  这个意图由 SDD 来设计和表达。                     │
  └──────────────────────────────────────────────────┘

  SDD 的定位:
  → 不是新工具,是新的工作方式
  → 不是可选项,是必选项
  → 是工程师的主要工作内容
  → 代码生成交给 AI,人专注于规范设计

2.3 创业类比

arduino 复制代码
Vibe Coding 就像不写商业计划就创业:
  → 埋头干 → 死得越快
  → 没有方向 → 每天都在改方向
  → 没有 MVP 定义 → 不知道什么时候算"完成"

SDD 就像先写商业计划再创业:
  → 花时间想清楚做什么、为什么做、怎么做
  → 定义 MVP(最小可行性产品)
  → 有方向 → 有里程碑 → 可验收
  → 每一步都有文档记录 → 可追溯

三、SDD 的三份核心文档

3.1 文档全景

复制代码
┌──────────────────────────────────────────────────────────┐
│                  SDD 三份核心文档                         │
│                                                          │
│  ┌──────────────┐                                        │
│  │  proposal.md  │  需求文档                              │
│  │  (是什么)   │  → 头脑中这个系统应该是什么样           │
│  │              │  → 满足什么需求                        │
│  │              │  → MVP 定义(最小可行性单元)           │
│  │              │  → 不做什么(边界明确)                 │
│  └──────┬───────┘                                        │
│         │                                                │
│  ┌──────▼───────┐                                        │
│  │  design.md   │  技术架构文档                           │
│  │  (怎么做)  │  → 怎么实现                             │
│  │              │  → 技术选型(框架、库、工具)           │
│  │              │  → 技术难点分析与解决方案               │
│  │              │  → 架构图、数据流                      │
│  └──────┬───────┘                                        │
│         │                                                │
│  ┌──────▼───────┐                                        │
│  │  task.md     │  任务拆解文档                           │
│  │  (怎么做)   │  → 先干什么、再干什么                   │
│  │              │  → 什么可以并行干                      │
│  │              │  → 任务依赖关系                        │
│  │              │  → 验收标准                            │
│  └──────────────┘                                        │
│                                                          │
│  三份文档完成第一次创造(心智创造)                        │
│  代码是第二次创造(AI Agent 执行)                        │
└──────────────────────────────────────────────────────────┘

3.2 proposal.md:需求文档

复制代码
proposal.md 回答的问题:

  做什么?
  → 清晰定义要做什么
  → 一句话说清楚核心功能

  为什么做?
  → 解决什么痛点
  → 目标用户是谁
  → 用户场景是什么

  MVP 是什么?
  → 最小可行性产品
  → 非程序员也能 Vibe Coding 的最小单元
  → 详细的举例
  → 返回格式

  不做什么?
  → 边界明确
  → 只生成文档,其他不要做
  → 不是新项目时要阅读已有代码

  需求文档的价值:
  → 可记录:关了窗口不会丢
  → 可共享:团队对齐认知
  → 可验收:AI 生成的代码可以对照文档验收
  → 不能走过场:是程序开发的关键流程

3.3 design.md:技术架构文档

css 复制代码
design.md 回答的问题:

  怎么实现?
  → 技术选型(直接关系到项目成败)
  → 一个正确的选型,能让后续开发事半功倍
  → 反之,选错了会陷入泥潭

  技术难点是什么?
  → 网页主要内容怎么提取?→ 搜一下 LLM 工具和分析能力很强
  → AI 模型怎么配置?→ OpenAI 兼容方式,可切换 Qwen 等
  → Markdown 格式怎么呈现?→ npm marked(通用库)

  架构师的认知:
  → 和 skill、Claude Code 多聊几次
  → 快速成长为架构师
  → 利用 LLM 的搜索和分析能力

3.4 task.md:任务拆解文档

复制代码
task.md 回答的问题:

  先干什么?
  → 任务排序
  → 依赖关系分析

  什么可以并行干?
  → 独立任务并行化
  → 提升开发效率

  示例任务拆解:
  ① 创建项目和 Git 仓库
  ② 配置 manifest.json
  ③ 实现内容提取脚本
  ④ 对接 AI 翻译 API
  ⑤ Markdown 渲染与一键复制
  ⑥ 界面布局与流式展示
  ⑦ 打扫:移除冗余代码

  task.md 的价值:
  → AI Agent 可以按步骤逐步执行
  → 每步可验收
  → 出错了可以回退到某一步

四、实战案例:浏览器翻译插件

4.1 项目概述

复制代码
项目:md-wx-chrome-extensions(浏览器翻译插件)

  核心功能:
  → 在浏览英文网页时
  → 一键提取文章核心内容
  → 调用 AI 模型翻译
  → 翻译结果以 Markdown 格式呈现
  → 一键复制

  目标用户:
  → 大网红、公众号作者、md-wx 用户

  技术关键词:
  → Chrome Extension(浏览器插件)
  → AI 模型可配置(DeepSeek、Qwen...)
  → npm marked(Markdown 渲染)
  → 流式输出界面

4.2 SDD 实战流程

css 复制代码
┌──────────────────────────────────────────────────────────┐
│              SDD 实战流程(翻译插件案例)                  │
│                                                          │
│  第一步:文档先行                                         │
│  ┌────────────────────────────────────────────┐           │
│  │  编写 proposal.md                           │           │
│  │  → 需求:一键提取 + AI 翻译 + Markdown      │           │
│  │  → MVP:先做核心翻译功能                    │           │
│  │  → 不做什么:不做多语言、不做 PDF 导出       │           │
│  │  → 返回格式:Markdown 文本                  │           │
│  │  → 只生成文档,其他的不要做                  │           │
│  └────────────────────────────────────────────┘           │
│                                                          │
│  第二步:技术调研                                         │
│  ┌────────────────────────────────────────────┐           │
│  │  和 Claude Code / skill 聊一聊              │           │
│  │  → 网页内容提取的难点                        │           │
│  │  → AI 模型可配置方案                        │           │
│  │  → Markdown 渲染方案                        │           │
│  │  → 得到解决方案                             │           │
│  └────────────────────────────────────────────┘           │
│                                                          │
│  第三步:技术架构设计                                     │
│  ┌────────────────────────────────────────────┐           │
│  │  编写 design.md                            │           │
│  │  → Chrome Extension 架构                   │           │
│  │  → content script 提取内容                 │           │
│  │  → background script 调用 AI               │           │
│  │  → popup 界面展示                           │           │
│  │  → OpenAI 兼容方式切换模型                  │           │
│  │  → marked 渲染 Markdown                    │           │
│  └────────────────────────────────────────────┘           │
│                                                          │
│  第四步:任务拆解                                         │
│  ┌────────────────────────────────────────────┐           │
│  │  编写 task.md                              │           │
│  │  → ① 项目初始化 + Git 仓库                  │           │
│  │  → ② manifest.json 配置                    │           │
│  │  → ③ 内容提取脚本                           │           │
│  │  → ④ AI 翻译 API 对接                      │           │
│  │  → ⑤ Markdown 渲染 + 复制功能              │           │
│  │  → ⑥ 界面按钮布局(流式)                   │           │
│  │  → ⑦ 打扫:移除冗余代码                     │           │
│  └────────────────────────────────────────────┘           │
│                                                          │
│  第五步:AI 驱动代码生成                                  │
│  ┌────────────────────────────────────────────┐           │
│  │  把三份文档喂给 Coding Agent                 │           │
│  │  → 按文档执行,不猜                          │           │
│  │  → 每步生成后对照文档验收                    │           │
│  │  → 不对就回退重生成                          │           │
│  │  → 通过就 git commit                        │           │
│  └────────────────────────────────────────────┘           │
│                                                          │
│  第六步:新需求迭代                                       │
│  ┌────────────────────────────────────────────┐           │
│  │  更新文档 → 保持文档和代码一致性              │           │
│  │  → git 跟踪文档版本和代码版本                 │           │
│  │  → 文档驱动新功能开发                        │           │
│  │  → 打扫:移除冗余代码                        │           │
│  └────────────────────────────────────────────┘           │
└──────────────────────────────────────────────────────────┘

五、版本控制:Vibe Coding 的安全网

5.1 Git 作为 AI 代码的验收工具

sql 复制代码
版本控制的重要性:
  → AI 生成的代码需要即时验收
  → Vibe Coding 可追溯、可回退
  → AI 出现幻觉时可以快速回退

  Git 是 SDD 的安全网:
  → 文档版本 + 代码版本 → git 统一管理
  → 每次验收通过 → commit
  → 不通过 → 回退
  → 新需求 → 迭代文档 → 迭代代码

5.2 三级回退策略

sql 复制代码
AI 生成代码出错了怎么办?三级回退:

  ┌──────────────────────────────────────────────────────────┐
│                  三级回退策略                              │
│                                                          │
│  级别一:代码没到暂存区                                    │
│  → 直接丢弃这次修改                                       │
│  → git restore .                                         │
│  → 最轻量,不影响历史                                     │
│                                                          │
│  级别二:代码到了暂存区,没提交                            │
│  → 先移出暂存区                                           │
│  → git restore --staged .                                │
│  → 再丢弃修改                                             │
│  → git restore .                                         │
│  → 两步操作                                              │
│                                                          │
│  级别三:已经提交了                                       │
│  → 回退到上一个提交                                       │
│  → git reset --hard HEAD^                                │
│  → 最激进,历史被覆盖                                     │
│                                                          │
│  原则:                                                   │
│  → 每次让 AI 生成前先 commit                              │
│  → 生成后验收 → 通过就 commit / 不通过就回退              │
│  → 保持代码始终处于已知良好状态                           │
└──────────────────────────────────────────────────────────┘
sql 复制代码
Vibe Coding 的 Git 工作流:

  开始
    │
    ▼
  git commit(保存当前良好状态)
    │
    ▼
  让 AI 生成代码
    │
    ▼
  验收代码
    │
    ├── 通过 → git commit → 继续
    │
    └── 不通过 → 回退
         │
         ├── 没到暂存区 → git restore .
         ├── 到了暂存区 → git restore --staged . → git restore .
         └── 已提交 → git reset --hard HEAD^
    │
    ▼
  重新生成或调整文档

六、AI 会话管理

6.1 开启新会话

arduino 复制代码
管理 AI 会话:

  为什么需要管理会话?
  → 一个会话聊太久 → 上下文膨胀 → AI 注意力分散
  → 不同任务用不同会话 → 上下文清晰 → AI 聚焦

  开启新会话 = 新的上下文:
  → 把 proposal.md / design.md / task.md 喂给新会话
  → AI 获得干净的、完整的上下文
  → 不受之前会话的错误决策影响

  SDD + 会话管理:
  → 文档是跨会话的"记忆"
  → 关了窗口不丢 → 文档还在
  → 新会话读文档 → 立即获得完整上下文
  → 这就是"文档即上下文"

6.2 文档驱动的新会话流程

sql 复制代码
┌──────────────────────────────────────────────────────────┐
│              文档驱动的 AI 会话流程                       │
│                                                          │
│  会话 1:编写需求文档                                     │
│  → "帮我写一个浏览器翻译插件的 proposal.md"              │
│  → AI 生成 → 人审查 → 修改 → 定稿                        │
│  → git commit proposal.md                                │
│                                                          │
│  会话 2:编写技术架构                                     │
│  → 喂入 proposal.md + "帮我写 design.md"               │
│  → AI 根据需求设计架构                                    │
│  → 人审查 → 修改 → 定稿                                  │
│  → git commit design.md                                  │
│                                                          │
│  会话 3:编写任务拆解                                     │
│  → 喂入 proposal.md + design.md + "写 task.md"         │
│  → AI 根据需求+架构拆解任务                               │
│  → 人审查 → 修改 → 定稿                                  │
│  → git commit task.md                                    │
│                                                          │
│  会话 4+:按任务生成代码                                  │
│  → 喂入三份文档 + "执行 task 1"                        │
│  → AI 按文档生成代码                                      │
│  → 人验收 → 通过就 commit / 不通过就回退                 │
│  → "执行 task 2" → ...                                  │
│                                                          │
│  会话 N:新需求迭代                                       │
│  → 更新文档 → 新会话读文档 → 按文档执行                  │
│  → 保持文档和代码一致性                                   │
└──────────────────────────────────────────────────────────┘

七、需求分析的深度实践

7.1 需求分析三步法

css 复制代码
┌──────────────────────────────────────────────────────────┐
│                  需求分析三步法                           │
│                                                          │
│  第一步:清晰定义我们要做什么                              │
│  → 一句话描述核心功能                                     │
│  → 浏览英文网页 → 提取核心 → AI 翻译 → Markdown          │
│                                                          │
│  第二步:分析和调研                                       │
│  → 和 skill、Claude Code 多聊几次                        │
│  → 网页内容提取的难点                                    │
│  → AI 模型配置方案                                       │
│  → Markdown 渲染方案                                     │
│  → 得到可行的技术方案                                     │
│                                                          │
│  第三步:花时间编写及验证需求                             │
│  → 编写 proposal.md                                      │
│  → 验证:是否清晰?是否可执行?是否可验收?              │
│  → MVP 定义:最小可行性单元                               │
│  → 详细的举例和返回格式                                   │
│  → 明确不做什么                                          │
└──────────────────────────────────────────────────────────┘

7.2 MVP 思维

ini 复制代码
MVP = Minimum Viable Product(最小可行性产品)

  产品经理思维 → 非程序员也能 Vibe Coding:
  → 先做最小核心功能
  → 验证可行性
  → 再迭代扩展

  翻译插件的 MVP:
  ✅ 核心翻译功能
  ✅ Markdown 格式输出
  ✅ 一键复制

  MVP 不做的:
  ❌ 多语言切换
  ❌ PDF 导出
  ❌ 历史记录
  ❌ 用户登录

  MVP 的价值:
  → 快速验证想法
  → 减少返工范围
  → 每一步都有交付物
  → AI 可以按 MVP 范围生成代码

7.3 技术架构设计的价值

css 复制代码
技术架构设计直接关系到项目的成败:

  正确的选型 → 事半功倍:
  ├── Chrome Extension API → 浏览器原生支持
  ├── content script → 页面内容提取
  ├── OpenAI 兼容方式 → 一个接口切换多个模型
  ├── npm marked → 通用 Markdown 渲染
  └── 流式输出 → 用户体验好

  错误的选型 → 陷入泥潭:
  ├── 用 Puppeteer 提取内容 → 太重,插件不需要
  ├── 用各模型原生 SDK → 切换困难
  ├── 自己写 Markdown 渲染 → 重复造轮子
  └── 同步等待翻译 → 体验差

  架构师的认知来源:
  → 和 skill 聊
  → 和 Claude Code 多聊几次
  → 上网搜,LLM 工具和分析能力很强
  → 快速成长为架构师

八、新需求迭代与打扫

8.1 文档与代码的一致性

sql 复制代码
新需求迭代流程:

  收到新需求
    │
    ▼
  更新文档(先更新 proposal.md / design.md)
    │  → 保持文档和代码的一致性
    │  → 文档先变,代码后变
    │
    ▼
  git 跟踪文档版本和代码版本
    │  → 文档版本和代码版本对应
    │  → 可追溯某次代码变更对应的需求
    │
    ▼
  新会话读更新后的文档
    │  → 获得最新上下文
    │  → 按文档生成新功能代码
    │
    ▼
  验收 + commit
    → 文档和代码同步前进

  原则:文档先于代码
  → 先改文档,再改代码
  → 文档是源头,代码是结果
  → 不允许"代码先行文档后补"

8.2 打扫:移除冗余代码

c 复制代码
打扫(Cleanup):

  记得移除冗余代码:
  → AI 生成的代码可能包含未使用的变量
  → 可能有注释掉的代码块
  → 可能有重复的逻辑
  → 可能有调试用的 console.log

  打扫的时机:
  → 每个任务完成后
  → 新需求迭代前
  → 项目阶段验收时

  打扫的价值:
  → 保持代码整洁
  → 减少 AI 的上下文噪音
  → 下一次生成代码更准确
  → 技术债务不积累

九、SDD 工具生态

9.1 Spec-kit 框架

复制代码
SDD 框架:Spec-kit

  ┌──────────────────────────────────────────────────┐
  │  Spec-kit                                         │
  │                                                  │
  │  → SDD 的标准化工具框架                           │
  │  → 提供文档模板和结构                             │
  │  → 支持文档驱动的代码生成流程                     │
  │  → 文档版本管理                                   │
  │  → 与 Coding Agent 集成                          │
  └──────────────────────────────────────────────────┘

  当代码生成成本越来越低:
  → 真正稀缺的是清晰、可执行、可验证的意图
  → 由 SDD 设计和表达
  → Spec-kit 是承载这个意图的框架

9.2 AI 编程工具定位

css 复制代码
AI 编程工具的分类与定位:

  ┌──────────────────────────────────────────────────────┐
  │  全流程 Agent(SDD 全链路)                          │
  │  ├── claude code → 终端 Agent,可读写文件             │
  │  ├── codex       → OpenAI Agent                     │
  │  └── Trae        → AI IDE,集成开发环境              │
  │  → 适合 SDD 全流程:文档 + 代码 + Git               │
  │                                                      │
  │  辅助编程(Copilot 类)                              │
  │  └── Copilot   → 代码补全、建议                      │
  │  → 适合在已有代码基础上补充                          │
  │                                                      │
  │  插件增强                                            │
  │  └── Deepseek harness → 插件形式                    │
  │  → 适合特定场景的 AI 增强                            │
  └──────────────────────────────────────────────────────┘

  SDD 对工具的要求:
  → 能读写文档文件
  → 能读写代码文件
  → 能执行 Git 命令
  → 能理解文档并按文档生成代码
  → 支持多轮对话与上下文管理

十、SDD 与传统开发范式对比

10.1 范式演进

arduino 复制代码
┌──────────────────────────────────────────────────────────┐
│                  开发范式演进                             │
│                                                          │
│  ① 瀑布开发(传统)                                      │
│  → 需求文档 → 设计文档 → 编码 → 测试 → 部署             │
│  → 文档厚重,周期长                                      │
│  → AI 时代前的主流                                       │
│                                                          │
│  ② 敏捷开发                                              │
│  → 快速迭代,拥抱变化                                    │
│  → 文档轻量化,重沟通                                    │
│  → Sprint 周期,持续交付                                 │
│                                                          │
│  ③ Vibe Coding(AI 时代)                               │
│  → 跳过文档,直接对话生成代码                            │
│  → 效率飞升但混乱                                        │
│  → AI 猜 → 幻觉 → 返工                                  │
│                                                          │
│  ④ SDD(规范驱动开发)                                   │
│  → 先写文档(第一次创造)                                 │
│  → 再让 AI 按文档写代码(第二次创造)                     │
│  → 文档可迭代、可追溯、可共享                            │
│  → AI 有据可依,不猜                                     │
│  → 借鉴建筑业的"蓝图"思想和 Covey 的"以终为始"           │
└──────────────────────────────────────────────────────────┘

10.2 Vibe Coding vs SDD 核心对比

复制代码
┌──────────────────────────────────────────────────────────┐
│            Vibe Coding vs SDD 核心对比                    │
│                                                          │
│              Vibe Coding              SDD                 │
│  ─────────────────────────────────────────                │
│  起点        聊天对话                  文档                │
│  上下文      会话历史(易丢)          文档(持久化)       │
│  AI 行为     猜(幻觉多)              按文档执行(准确)  │
│  可追溯      难(聊天记录散乱)        Git 跟踪文档+代码   │
│  可共享      难(对话无法共享)        文档可共享          │
│  可验收      难(没有标准)            对照文档验收        │
│  团队协作    困难(个人对话)          文档对齐认知        │
│  新需求      重新聊(可能矛盾)        更新文档→更新代码   │
│  回退        难(不知道回退到哪)      Git 三级回退        │
│  适合        小脚本/原型               任何规模项目        │
│  创造次数    一次(跳过设计)          两次(设计+执行)   │
└──────────────────────────────────────────────────────────┘

十一、总结

11.1 知识体系图

css 复制代码
SDD 规范驱动开发
│
├── 问题:Vibe Coding 的三大陷阱
│   ├── 上下文缺失 → AI 猜 → 返工
│   ├── 会话历史丢失 → AI 失去记忆 → 幻觉加剧
│   └── 每轮失败消耗时间 + Token
│   → 根本原因:给大模型的上下文不够
│
├── 理论:两次创造原则
│   ├── Stephen Covey《高效人士7个习惯》→ 以终为始
│   ├── 第一次创造:心智创造(文档落地)
│   ├── 第二次创造:物理创造(代码生成)
│   ├── Vibe Coding 跳过了第一次创造 → 问题根源
│   └── SDD 坚持两次创造 → 必选项
│
├── 三份核心文档
│   ├── proposal.md → 是什么(需求 + MVP + 不做什么)
│   ├── design.md → 怎么做(技术选型 + 架构 + 难点)
│   └── task.md → 怎么做(任务拆解 + 依赖 + 验收)
│
├── 实战流程
│   ├── 第一步:文档先行(proposal.md)
│   ├── 第二步:技术调研(和 AI 聊)
│   ├── 第三步:架构设计(design.md)
│   ├── 第四步:任务拆解(task.md)
│   ├── 第五步:AI 驱动代码生成(喂文档 → 生成 → 验收)
│   └── 第六步:新需求迭代(更新文档 → 更新代码)
│
├── 版本控制
│   ├── Git 作为安全网
│   ├── 三级回退策略
│   │   ├── 没到暂存区:git restore .
│   │   ├── 到了暂存区:git restore --staged . → git restore .
│   │   └── 已提交:git reset --hard HEAD^
│   └── 文档版本 + 代码版本统一管理
│
├── AI 会话管理
│   ├── 开启新会话 = 新的上下文
│   ├── 文档是跨会话的"记忆"
│   └── 文档驱动的新会话流程
│
├── 工具生态
│   ├── Spec-kit → SDD 标准化框架
│   ├── 全流程 Agent:claude code / codex / Trae
│   ├── 辅助编程:Copilot
│   └── 插件增强:Deepseek harness
│
└── 核心洞察
    → 当代码生成成本越来越低
    → 真正稀缺的是清晰、可执行、可验证的意图
    → 由 SDD 来设计和表达
    → 文档即是代码

11.2 核心概念速查

概念 要点
Vibe Coding 氛围编程,直接对话生成代码,跳过设计阶段
SDD Spec-Driven Development,规范驱动开发,文档先行
两次创造 第一次心智创造(文档)+ 第二次物理创造(代码)
以终为始 Stephen Covey 7个习惯之二,所有事物先在脑中设计
proposal.md 需求文档:做什么、为什么、MVP、不做什么
design.md 架构文档:技术选型、难点方案、架构设计
task.md 任务文档:拆解步骤、依赖关系、验收标准
MVP Minimum Viable Product,最小可行性产品
三级回退 git restore / restore --staged / reset --hard HEAD^
文档即上下文 文档是 AI Agent 的跨会话记忆
Spec-kit SDD 的标准化工具框架
打扫 移除冗余代码,保持代码整洁

11.3 一句话总结

SDD 的本质是"以终为始"------先写文档(第一次创造),再让 AI 按文档生成代码(第二次创造)。Vibe Coding 的问题在于跳过了第一次创造,直接进入第二次创造,导致 AI 靠猜生成代码。当代码生成成本越来越低,真正稀缺的不是代码,而是清晰、可执行、可验证的意图------这个意图由 SDD 来设计,由文档来承载。文档即是代码,规范驱动一切。


如果这篇文章对你有帮助,欢迎点赞收藏

相关推荐
深度睡眠3 天前
知识工作者如何用TRAE Work构建个人/团队知识库,让死材料‘活’过来”
vibecoding
小林ixn3 天前
Vibe Coding 爽完就返工?试试 Spec-Driven Development:AI 时代真正的工作流
agent·vibecoding
Captaincc4 天前
Show me your works & token -稀土掘金上线内测作品广场和用量统计
前端·掘金社区·vibecoding
嘟嘟07174 天前
SDD 规范驱动开发:从 vibe coding 崩盘到"两次创造"
设计模式·代码规范·vibecoding
掘金酱4 天前
Vibe作品广场首发挑战来啦!发布作品,赢富士拍立得等千元好礼
openai·ai编程·vibecoding
AprChell4 天前
DeepSeek Harness 开源了一套 Vibe Coding 工程流水线
ai编程·deepseek·vibecoding
爱丶不疚6 天前
在 dsh 仓库里扒到的宝藏工作流:详解 .agents/notes 决策沉淀系统
前端·agent·vibecoding
努力的小Qin7 天前
记录随手记、周报一键成:我如何用「工作日迹」终结周五的周报焦虑
ai编程·trae·vibecoding
桦说编程7 天前
记一次 Coding Agent 改动带来的bug与启示
后端·agent·vibecoding