从Vibe Coding到SDD:规范驱动开发如何拯救AI编程失控
别再让AI"猜"你的需求了,先写好文档再写代码。
你有没有过这样的经历?打开一个AI编程工具,输入一句"帮我做一个用户认证系统",看着AI哗哗哗生成几千行代码,跑起来好像没问题,心里美滋滋------"效率提升了10倍!" 可到了第二周,需求一变,改一个地方崩三个地方,AI开始"幻觉"式补全,你陷入无穷无尽的返工和自我怀疑。
这就是**Vibe Coding(氛围编程)**的典型陷阱。它让人上头,但后患无穷。今天,我想和你聊聊一种新的AI协作范式------SDD(Spec-Driven Development,规范驱动开发),以及如何用它来真正掌控AI,而不是被AI带着走。
一、Vibe Coding:效率神话背后的"技术债"陷阱
Vibe Coding是当下很火的一种编程方式------你给出模糊的意图,AI Agent(如Claude Code、Codex、Cursor等)直接生成大量代码。看起来很爽,但问题也接踵而至:
- 上下文缺失:AI不知道你的项目背景、技术栈、已有代码风格,只能"猜"。
- 会话历史丢失:聊着聊着窗口关了,之前的决策和理由全没了。
- AI幻觉:AI会"自信"地生成不存在的API、错误的逻辑,甚至编造框架用法。
- 返工成本:第一周确实快,第二周开始修修补补,第一个月陷入自我怀疑------"这代码到底能不能维护?"
本质问题是什么? 我们跳过了"想清楚"这一步,直接进入了"写出来"这一步。而AI再强,也读不懂你脑子里没说完的需求。
二、SDD:所有事物都该经历两次创造
Stephen Covey在《高效能人士的7个习惯》里提到一个经典观点:任何事情都要经过两次创造------第一次是心智上的创造(蓝图),第二次是物理上的创造(实施)。
SDD正是把这个理念搬到了AI编程中。
- 第一次创造(心智):写文档------需求是什么?怎么实现?分几步走?
- 第二次创造(物理):AI根据文档生成代码。
不画蓝图不盖房,不写文档不编码。
三、SDD的核心文档体系(按需加载,不硬堆)
SDD不是让你写几百页的"废话文档",而是精炼、可执行、可验证的意图表达。我把它拆成三份核心文档:
| 文档 | 作用 | 类比 |
|---|---|---|
| proposal.md | 需求调研与分析,明确"做什么" | 产品经理的PRD雏形 |
| design.md | 技术架构与选型,明确"怎么做" | 架构师的设计方案 |
| task.md | 任务拆解与执行顺序,明确"先做什么,后做什么" | 项目经理的甘特图 |
这三份文档加在一起,就是AI的"完整上下文"。AI不再靠猜,而是照着规范执行。代码生成只是最后的"体力活"。
四、实战案例:一个浏览器插件项目的SDD实践
我们来结合一个真实项目------md-wx-chrome-extensions,一个一键提取英文网页核心内容、调用AI翻译并以Markdown格式输出的浏览器插件。
4.1 proposal.md:需求先行
我们不急着写代码,先问自己几个问题:
- 用户是谁? 大网红、公众号作者、MD-WX用户。
- 核心场景? 浏览英文网页时,一键提取核心内容,翻译,复制。
- 核心难点? 如何"提取文章核心内容"?不是简单的全文抓取,要识别正文、去噪。
- AI模型怎么配? 可配置,支持DeepSeek、Qwen等,兼容OpenAI格式。
- 输出格式? 标准Markdown,一键复制。
- 交互方式? 浏览器插件按钮,流式输出翻译结果。
4.2 design.md:技术选型与架构
- 内容提取 :用
Readability或AI辅助识别(通过LLM分析DOM结构)------这一步最难,建议和Claude Code多聊几次,验证可行性。 - AI调用:统一用OpenAI兼容接口,便于切换模型。
- Markdown渲染 :使用
marked库(通用方案)。 - UI:简洁按钮+流式输出布局。
4.3 task.md:任务拆解
- 创建项目和Git仓库(版本控制是底线)。
- 实现内容提取模块(先出MVP,只支持主流新闻类网站)。
- 实现AI调用模块(配置化API Key和模型名)。
- 实现Markdown渲染与复制功能。
- 完善UI与流式输出。
- 测试、打包、发布。
五、版本控制:AI生成代码的"后悔药"
AI再强也免不了犯错(幻觉)。所以版本控制不是可选项,是保命项。针对不同阶段的"翻车",我总结了快速回退三板斧:
| 场景 | 命令 |
|---|---|
| 工作区修改了,但还没add | git restore . |
| 已经add了,但还没commit | git restore --stage . + git restore . |
| 已经commit了 | git reset --hard HEAD^ |
核心原则:AI生成的每一份可验收代码,都要即时提交。Vibe Coding不可追溯,SDD要求可追溯、可回退。
六、管理AI会话:别让上下文"失忆"
每次开启新对话,AI都会丢失之前的决策背景。所以:
- 每一次关键决策,都要写进文档(proposal/design/task)。
- 每个新会话,先把最新的文档贴进去,再让AI干活。
- 别指望AI记住你上周说的某句话------它不会,你得帮它"存档"。
七、总结:SDD不是形式主义,是AI编程的"导航仪"
Vibe Coding像开盲盒------你永远不知道AI下一段代码会写出什么。而SDD像导航------先规划路线,再启动引擎,即使偏航也能快速纠正。
在AI生成代码成本趋近于零的时代,真正稀缺的是清晰、可执行、可验证的意图。而SDD,就是帮我们把意图"锁"在文档里,让AI成为忠实执行者,而不是猜谜者。
下次再打开AI编程工具时,不妨先问自己一句:
"我的蓝图画好了吗?"
如果这篇文章对你有帮助,欢迎点赞、评论、收藏,也欢迎在掘金和我交流更多AI编程实践。