用 Spec-Driven Development 让 AI 先写规格再写代码(Conductor 实战)
你是不是也遇到过:让 AI 直接写代码,它「啪」一下甩出几百行,看着挺像样,结果一跑全是坑,改来改去比自己写还累?问题不在模型,在于你没给它先想清楚的余地。2026 年 7 月,Google 把 Conductor 从 Gemini CLI 扩展插件演进为通用 plugin,核心能力就是规格驱动开发(Spec-Driven Development):用自然对话先产出 spec.md(规格)和 plan.md(计划)这些 Markdown 工件,确认无误后再让 AI 动手写代码。它还兼容 Antigravity CLI,已存在的 plans/specs 可平滑迁移。本教程手把手教你这套「先想清楚、再写代码」的范式。
先搞懂:为什么「直接写代码」容易翻车?
给 AI 一句需求,它立刻产出代码,看似高效,实则埋雷:
| 直接写代码 | 规格驱动开发 |
|---|---|
| AI 自己脑补需求细节 | 需求先写进 spec.md 对齐 |
| 改一处牵一发动全身 | plan.md 先拆步骤再执行 |
| 返工靠运气 | 规格即验收标准,可对照 |
| 成果难复用、难评审 | Markdown 工件可版本管理、可评审 |
核心转变:把 AI 从「代码生成器」升级成「先和你对齐规格、再分步交付的实现者」。规格文件就是你们之间的「合同」,写完代码照着验收。
Step 1:启动一个 Spec 项目
在支持 Conductor 的 CLI(Gemini CLI 或 Antigravity CLI)里,先初始化一个 spec 工作区:
# 进入你的项目目录
cd my-project
# 启动 Conductor,进入规格驱动模式
/conductor init
# 它会创建约定目录(示意)
# specs/ 存放 spec.md
# plans/ 存放 plan.md
# artifacts/ 其它中间产物
Step 2:用对话写出第一版 spec.md
别急着要代码,先用自然语言把需求聊透。Conductor 会把它沉淀成 spec.md:
你:我想做一个「团队请假审批」的小功能,
能提交申请、主管审批、记录历史。
/conductor spec
# AI 反问澄清关键细节(示例):
# - 审批是单人还是多级?
# - 数据存哪里(本地文件 / 数据库)?
# - 要不要通知?
你:单人审批即可,存 SQLite,审批通过发站内通知。
# AI 生成 specs/leave-approval.md
Step 3:让 AI 产出 plan.md 拆解实现步骤
规格定了,下一步让 AI 把实现拆成有序步骤,写进 plan.md:
/conductor plan
# 生成的 plans/leave-approval.md 类似:
# 1. 设计 SQLite 表结构(applications / approvals)
# 2. 实现提交申请接口
# 3. 实现主管审批接口(含状态机)
# 4. 实现站内通知
# 5. 补单元测试与迁移脚本
# 每步标注:依赖、预计改动文件、验收点
plan 是给人类看的 roadmap,也是给 AI 的执行清单。你在这里就能发现「第 3 步的状态机设计不对」,比代码写完再返工便宜十倍。
Step 4:确认计划后,让 AI 分步写代码
计划你点头了,再让 AI 按步骤实现。每完成一步,对照 plan 的验收点:
/conductor implement --step 1
# AI 只做「设计表结构」这一步,并汇报改动
# 你 review 后继续
/conductor implement --step 2
/conductor implement --step 3
# 随时回到规格:需求变了就改 spec.md,
# plan 会自动提示哪些步骤受影响
Step 5:把规格和计划纳入版本管理
spec.md / plan.md 是纯文本,直接进 Git,等于白捡一份永远和代码同步的设计文档:
git add specs/ plans/
git commit -m "feat: 请假审批 规格与计划"
# 新人接手:读 specs/ 就知道为什么这么设计
# Code Review:先审 plan 再审代码,方向错一眼看出
# 复盘:需求为什么变,spec 的 diff 就是证据
别把规格当一次性草稿。让它们和代码一起演进,你的项目就自带「为什么这么做」的记忆,告别口口相传的 tribal knowledge。
Step 6:拿一个真实功能试跑,验证是否真降返工
官方建议拿一个中等复杂度功能试跑,重点看规格文件是否真的减少了返工:
验收清单(跑完一个功能后填):
□ 代码写完前,需求细节是否已在 spec 对齐?
□ 有没有出现「AI 自作主张加了不需要的功能」?
□ 需求变更时,是否只改了少数几步 plan?
□ Review 是否先审 plan 再审代码、更高效?
□ 总体返工次数 vs 直接写代码是否明显下降?
常见问题速查
| 你遇到的现象 | 大概率原因 & 解决 |
|---|---|
| AI 还是直接写代码 | 没先跑 /conductor spec,或对话没明确要「先出规格」 |
| spec 太啰嗦没用 | 缺「不做什么」边界,补上范围与验收标准 |
| 需求变了 plan 没更新 | 改了 spec 没触发 plan 重算,手动 /conductor plan |
| 迁移旧 plans 失败 | 确认 CLI 已升级到支持 Conductor 的版本 |