教程中心进阶
进阶

用 Spec-Driven Development 让 AI 先写规格再写代码(Conductor 实战)

2026.07.24· 6 个步骤 · 17 分钟阅读· 📐 Spec-Driven

你是不是也遇到过:让 AI 直接写代码,它「啪」一下甩出几百行,看着挺像样,结果一跑全是坑,改来改去比自己写还累?问题不在模型,在于你没给它先想清楚的余地。2026 年 7 月,Google 把 Conductor 从 Gemini CLI 扩展插件演进为通用 plugin,核心能力就是规格驱动开发(Spec-Driven Development):用自然对话先产出 spec.md(规格)和 plan.md(计划)这些 Markdown 工件,确认无误后再让 AI 动手写代码。它还兼容 Antigravity CLI,已存在的 plans/specs 可平滑迁移。本教程手把手教你这套「先想清楚、再写代码」的范式。

📐 本教程适合:被 AI 写的代码反复返工折磨过的开发者,以及需求经常变、希望 AI 先对齐理解再动代码的产品技术团队。你不需要是 Google 系工具用户,范式本身适用于任何 AI 编程助手。

先搞懂:为什么「直接写代码」容易翻车?

给 AI 一句需求,它立刻产出代码,看似高效,实则埋雷:

直接写代码规格驱动开发
AI 自己脑补需求细节需求先写进 spec.md 对齐
改一处牵一发动全身plan.md 先拆步骤再执行
返工靠运气规格即验收标准,可对照
成果难复用、难评审Markdown 工件可版本管理、可评审

核心转变:把 AI 从「代码生成器」升级成「先和你对齐规格、再分步交付的实现者」。规格文件就是你们之间的「合同」,写完代码照着验收。

Step 1:启动一个 Spec 项目

1 用 Conductor 开一个规格工作区

在支持 Conductor 的 CLI(Gemini CLI 或 Antigravity CLI)里,先初始化一个 spec 工作区:

# 进入你的项目目录
cd my-project

# 启动 Conductor,进入规格驱动模式
/conductor init

# 它会创建约定目录(示意)
#   specs/   存放 spec.md
#   plans/   存放 plan.md
#   artifacts/ 其它中间产物
💡 如果你已有 Antigravity CLI 的 plans/specs,Conductor 现在可直接兼容迁移,不用重头来过。

Step 2:用对话写出第一版 spec.md

2 把「要做什么、不算什么」讲清楚

别急着要代码,先用自然语言把需求聊透。Conductor 会把它沉淀成 spec.md

你:我想做一个「团队请假审批」的小功能,
    能提交申请、主管审批、记录历史。

/conductor spec
# AI 反问澄清关键细节(示例):
#  - 审批是单人还是多级?
#  - 数据存哪里(本地文件 / 数据库)?
#  - 要不要通知?

你:单人审批即可,存 SQLite,审批通过发站内通知。
# AI 生成 specs/leave-approval.md
🔑 一份好 spec 至少有三块:目标、范围(包括明确不做什么)、验收标准。范围里写「不做什么」比写「做什么」更能防止 AI 跑偏。

Step 3:让 AI 产出 plan.md 拆解实现步骤

3 先有路线图,再动手

规格定了,下一步让 AI 把实现拆成有序步骤,写进 plan.md

/conductor plan

# 生成的 plans/leave-approval.md 类似:
# 1. 设计 SQLite 表结构(applications / approvals)
# 2. 实现提交申请接口
# 3. 实现主管审批接口(含状态机)
# 4. 实现站内通知
# 5. 补单元测试与迁移脚本
# 每步标注:依赖、预计改动文件、验收点

plan 是给人类看的 roadmap,也是给 AI 的执行清单。你在这里就能发现「第 3 步的状态机设计不对」,比代码写完再返工便宜十倍。

Step 4:确认计划后,让 AI 分步写代码

4 照着 plan 一步一步交付

计划你点头了,再让 AI 按步骤实现。每完成一步,对照 plan 的验收点:

/conductor implement --step 1
# AI 只做「设计表结构」这一步,并汇报改动

# 你 review 后继续
/conductor implement --step 2
/conductor implement --step 3

# 随时回到规格:需求变了就改 spec.md,
# plan 会自动提示哪些步骤受影响
🚀 这就是 Spec-Driven 的爽点:需求变更先改 spec,AI 自动告诉你 plan 哪几步要重做,而不是默默把旧需求埋进代码里。

Step 5:把规格和计划纳入版本管理

5 Markdown 工件就是你的「设计文档」

spec.md / plan.md 是纯文本,直接进 Git,等于白捡一份永远和代码同步的设计文档:

git add specs/ plans/
git commit -m "feat: 请假审批 规格与计划"

# 新人接手:读 specs/ 就知道为什么这么设计
# Code Review:先审 plan 再审代码,方向错一眼看出
# 复盘:需求为什么变,spec 的 diff 就是证据

别把规格当一次性草稿。让它们和代码一起演进,你的项目就自带「为什么这么做」的记忆,告别口口相传的 tribal knowledge。

Step 6:拿一个真实功能试跑,验证是否真降返工

6 别只看对话顺不顺,看返工率

官方建议拿一个中等复杂度功能试跑,重点看规格文件是否真的减少了返工:

验收清单(跑完一个功能后填):
□ 代码写完前,需求细节是否已在 spec 对齐?
□ 有没有出现「AI 自作主张加了不需要的功能」?
□ 需求变更时,是否只改了少数几步 plan?
□ Review 是否先审 plan 再审代码、更高效?
□ 总体返工次数 vs 直接写代码是否明显下降?
🎉 恭喜!你掌握了「先写规格、再写计划、最后写代码」的范式。记住:AI 写代码快不稀奇,慢下来先对齐,才是真正省时间。这套思路放在 Cursor、Claude Code 上同样成立——把 spec/plan 当成固定工作流即可。

常见问题速查

你遇到的现象大概率原因 & 解决
AI 还是直接写代码没先跑 /conductor spec,或对话没明确要「先出规格」
spec 太啰嗦没用缺「不做什么」边界,补上范围与验收标准
需求变了 plan 没更新改了 spec 没触发 plan 重算,手动 /conductor plan
迁移旧 plans 失败确认 CLI 已升级到支持 Conductor 的版本