Spec Coding:AI 编程的正确打开方式
Spec Coding:AI 编程的正确打开方式
很多人用 AI 写代码,习惯一句话甩过去:”帮我做个登录页面。”然后等 AI 生成,不满意再改,改了又不对,最后越改越乱。
问题不在 AI,而在你没给它足够清晰的约束。
这篇文章讲一种更成熟的 AI 编程方式:先写 Spec,再让 AI 按 Spec 实现。
什么是 Spec
Spec 是 Specification(规格/规范)的缩写。在 AI 编程里,它是一份结构化的自然语言契约,用来告诉 AI:
- 这次到底要做什么
- 做成什么样才算对
- 哪些边界不能碰
- 最后怎么验证结果
Spec 不是灵感,不是随口一句需求,而是一份可执行的规范文档。
你可以把它理解为:
- 对产品需求的定义
- 对实现方式的约束
- 对结果质量的验收标准
- 对测试方式的明确说明
代码不再是凭感觉生成的东西,而是 Spec 的衍生结果。
Vibe Coding vs Spec Coding
Vibe Coding:凭感觉开发
1 | |
特点:
- 上手快,适合小 demo
- 不稳定,每次产出不一样
- 难协作,难维护
- 容易越做越乱
Spec Coding:先写规范再实现
1 | |
特点:
- 稳定,有约束就可控
- 可复用,Spec 可以沉淀成模板
- 可协作,团队共享同一份规范
- 可验证,有明确的完成标准
类比:Vibe Coding 像即兴弹琴,Spec Coding 像先写好总谱,再让乐手按谱演奏。
一份好的 Spec 长什么样
很多人听到”规范文档”就觉得复杂。其实一份有用的 Spec 不一定很长,但一定要清晰。通常包含 6 个部分:
1. 需求目标:明确”要做什么”
不是只说”做个页面”,而是说明:
- 解决什么问题
- 给谁用
- 触发场景是什么
- 最终希望达成什么结果
1 | |
2. 行为要求:明确”系统应该怎么做”
用结构化的方式描述:
- 在什么条件下
- 系统应该执行什么动作
- 出现异常时怎么处理
- 不允许发生什么情况
1 | |
3. 验收标准:明确”做到什么程度才算完成”
这是最关键的部分,必须明确告诉 AI:
1 | |
4. 技术约束:明确”怎么做才不跑偏”
防止 AI “会做,但做法不符合你的体系”:
1 | |
5. 数据模型 / API / 边界条件
让 AI 少踩坑的关键区域:
1 | |
6. 测试策略:明确”怎么验证它真的符合 Spec”
1 | |
Spec 工作流
一套成熟的 Spec 驱动开发流程:
1 | |
第一步:定义 Spec
先写清楚你要什么。如果脑子里只有一个粗糙想法,也可以先让 AI 帮你把想法扩写成更完整的规范草案。
第二步:制定 Plan
有了 Spec 之后,让 AI 基于 Spec 输出:
- 技术方案
- 模块拆解
- 实施顺序
- 风险点
- 任务清单
第三步:按 Spec 实现
AI 开始写代码。但这时它不是在”猜你的意思”,而是在”执行一个已经约定好的规范”。
第四步:按 Spec 验证
对照验收标准逐项检查:
- 功能是否齐全
- 边界是否覆盖
- 测试是否通过
- 是否与技术约束一致
实际对比
不写 Spec
1 | |
写了 Spec
1 | |
什么时候写 Spec
| 场景 | 是否需要 Spec |
|---|---|
| 写一个小 demo | 不需要,Vibe Coding 就够了 |
| 原型验证想法 | 不需要,快速试错 |
| 正式项目开发 | 需要,稳定性很重要 |
| 团队协作 | 需要,统一标准 |
| 复杂功能 | 需要,防止遗漏边界 |
| 重复性任务 | 需要,沉淀成模板复用 |
实用建议
1. 别再只给一句模糊需求
至少补上:
- 目标用户是谁
- 主要流程是什么
- 成功标准是什么
- 哪些情况必须处理
- 哪些实现方式不能用
哪怕只多写 10 行,质量都会明显提升。
2. 把”验收标准”单独写出来
这是最值钱的动作。很多人写需求会写很多背景,但不写”什么叫完成”。一旦把验收标准写出来,AI 的方向会立刻稳定。
3. 把反复强调的约束沉淀成模板
如果你总要反复提醒 AI:
- 用某个技术栈
- 遵守某种目录结构
- 统一异常处理
- 不要引入新依赖
那说明这些内容应该固化成一份长期复用的 Spec 模板。
4. 复杂任务先让 AI 帮你补全 Spec
脑子里没想清楚时,最好的做法不是逼 AI 直接写代码,而是先让 AI 帮你一起把 Spec 补完整:
- 需求有没有漏洞
- 边界条件漏了没有
- 验收标准是否可测试
- 技术方案是否冲突
当 Spec 清楚了,后面实现会顺很多。
小结
- AI 写代码已经够强了,真正稀缺的是”约束能力”
- Spec 是给 AI 写的施工图 + 验收合同
- 核心六要素:需求目标、行为要求、验收标准、技术约束、边界条件、测试策略
- 工作流:定义 Spec → 制定 Plan → 按 Spec 实现 → 按 Spec 验证
- 未来最重要的编程能力,不只是 coding,而是 specification
参考来源: