17a - Spec-Driven 工作流全景
本文是《AI Agent 实战手册》第 17 章第 1 节。 上一节:16c-系统设计文档AI生成 | 下一节:17b-15分钟瀑布规划法
概述
Spec-Driven Agentic Workflow 是 2025-2026 年生产级 AI 辅助开发的核心方法论。它不是对 Vibe Coding 的否定,而是其自然进化——保留 AI 生成代码的速度优势,加入结构化规格说明和人工审查机制,确保输出达到生产级质量。本节全面解析这一工作流的核心公式、三阶段流程、工具生态、模型选择,以及从 Vibe Coding 到 Spec-Driven 的演进路径,帮助开发者在实际项目中落地实施。
1. 核心公式与理论基础
1.1 Spec-Driven 的核心公式
Spec-Driven Agentic Workflow 的本质可以用一个公式概括:
Spec(source of truth)+ AI Agent(草稿生成)+ Human Review(最终审查)= 生产级代码这个公式的三个要素缺一不可:
| 要素 | 角色 | 缺失后果 |
|---|---|---|
| Spec | 需求和设计的唯一真相来源 | AI 生成的代码缺乏一致性,功能重复或遗漏 |
| AI Agent | 基于 Spec 自主生成代码草稿 | 开发速度回到纯手工编码时代 |
| Human Review | 审查质量、安全、架构合理性 | 技术债累积,安全漏洞,不可维护的代码 |
1.2 为什么 Spec 是 Source of Truth
传统开发中,代码本身就是”真相”。但在 AI 辅助开发时代,代码是由 AI 生成的草稿,随时可以重新生成。真正不可替代的是规格说明——它定义了”要做什么”和”怎么做”。
Spec 的核心组成:
Spec 文档体系
├── requirements.md ← 用户故事 + 验收标准(做什么)
├── design.md ← 技术设计 + 架构决策(怎么做)
└── tasks.md ← 任务拆分 + 执行顺序(分几步做)Spec 的价值在于:
- 可重复性:同一份 Spec 交给不同 AI Agent,应产出功能等价的代码
- 可审查性:审查者可以对照 Spec 验证代码是否符合需求
- 可追溯性:每行代码都能追溯到具体的需求和设计决策
- 可迭代性:需求变更时,修改 Spec 后让 AI 重新生成,而非手动改代码
1.3 Agentic 与传统 AI 辅助的区别
“Agentic”意味着 AI 不再是被动的代码补全工具,而是能够自主规划、执行和验证的 Agent:
| 维度 | 传统 AI 辅助(Copilot 模式) | Agentic 开发(Agent 模式) |
|---|---|---|
| 交互方式 | 逐行补全,人类主导 | 自主执行任务,人类审查 |
| 上下文范围 | 当前文件 + 少量相邻文件 | 整个代码库 + 外部工具 |
| 任务粒度 | 单行/单函数 | 完整功能模块 |
| 工具使用 | 无 | 文件系统、终端、MCP、浏览器 |
| 自我修正 | 无 | 运行测试 → 发现错误 → 自动修复 |
| 规划能力 | 无 | 分析需求 → 制定计划 → 分步执行 |
2. 三阶段工作流详解
工作流全景图
┌─────────────────────────────────────────────────────────────────┐
│ Spec-Driven Agentic Workflow │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Phase 1: 规划("15 分钟瀑布") │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ AI 采访 │ → │ 生成 Spec │ → │ Plan Mode │ │
│ │ 理清需求 │ │ (source of │ │ (只读分析 │ │
│ │ 明确边界 │ │ truth) │ │ 不改文件) │ │
│ └────────────┘ └────────────┘ └────────────┘ │
│ ↕ 人工确认 ↕ 人工审查 ↕ 人工批准 │
│ ↓ │
│ Phase 2: 微任务执行 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Task 1 │ → │ Task 2 │ → │ Task 3 │ → ... │
│ │ 实现+测试 │ │ 实现+测试 │ │ 实现+测试 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ ↕ ↕ ↕ │
│ 人工审查 人工审查 人工审查 │
│ git commit git commit git commit │
│ ↓ │
│ Phase 3: 上下文工程 │
│ ┌──────────────────────────────────────────────┐ │
│ │ 贯穿全程的上下文管理 │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ 精确选择 │ │ MCP 连接 │ │ Steering │ │ │
│ │ │ 相关文件 │ │ 外部工具 │ │ 规则约束 │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ │ ┌──────────┐ ┌──────────┐ │ │
│ │ │ 设计文档 │ │ 测试反馈 │ │ │
│ │ │ 引用 │ │ 循环 │ │ │
│ │ └──────────┘ └──────────┘ │ │
│ └──────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘Phase 1:规划(“15 分钟瀑布”)
规划阶段的目标是在 15 分钟内完成传统瀑布模型需要数天的工作——需求澄清、技术设计和任务拆分。这不是跳过规划,而是用 AI 加速规划。
操作步骤
步骤 1:需求澄清(AI 采访)
让 AI 扮演产品经理,通过提问帮你理清需求边界:
提示词模板:
我要实现 [功能描述]。请扮演一位资深产品经理,
通过提问帮我理清以下方面:
1. 核心用户场景(谁在什么情况下使用)
2. 功能边界(做什么,不做什么)
3. 非功能需求(性能、安全、可用性)
4. 依赖和约束(现有系统、技术栈限制)
每次只问 2-3 个问题,等我回答后再继续。步骤 2:生成 Spec 文档
需求明确后,生成结构化的 Spec 文档:
提示词模板:
基于我们刚才的讨论,生成一份技术规格文档,包含:
## 1. 概述(2-3 句话)
## 2. 功能需求
- 用户故事(As a... I want... So that...)
- 每个故事的验收标准(WHEN... THEN...)
## 3. 技术设计
- 架构方案(含 Mermaid 图)
- 数据模型
- API 设计
- 关键算法
## 4. 正确性属性
- 系统必须满足的不变量
## 5. 任务拆分
- 按依赖顺序排列
- 每个任务预估 1-2 小时工作量步骤 3:Plan Mode 分析
在执行任何代码修改前,先用只读模式分析现有代码库:
# Claude Code 中使用 Plan Mode
$ claude --plan "分析当前代码库架构,基于 SPEC.md 提出实现计划,
标注哪些现有模块需要修改,哪些需要新建"
# Kiro 中
# Spec 的 design.md 自动包含对现有代码库的分析
# 通过 #File 和 #Folder 引用相关代码Phase 2:微任务执行
这是工作流的核心环节。将大任务拆分为可独立完成、可独立审查的微任务,逐个执行。
操作步骤
步骤 1:选择当前任务
从 tasks.md 中选择下一个未完成的任务。
确保其依赖任务已完成。步骤 2:向 AI Agent 下达精确指令
提示词模板:
请执行 Task [编号]:[任务标题]。
参考文档:
- design.md 中的 [相关章节]
- 现有代码 [相关文件路径]
要求:
1. 只实现这一个任务,不要做其他任务
2. 遵循 steering 文件中的编码规范
3. 为新增功能编写单元测试
4. 确保所有现有测试仍然通过步骤 3:人工审查
每个任务完成后,必须进行人工审查:
审查清单:
□ 代码是否符合 design.md 中的设计?
□ 是否有安全问题(SQL 注入、XSS、密钥泄露)?
□ 是否有性能问题(N+1 查询、内存泄漏)?
□ 测试是否覆盖了验收标准?
□ 是否引入了不必要的依赖?
□ 代码是否可读、可维护?步骤 4:确认并提交
# 审查通过后
git add .
git commit -m "feat: Task 3.1 - 实现文件哈希计算函数"
# 标记任务完成,进入下一个任务关键原则:一次一个任务
❌ 错误做法:
"请实现整个同步引擎"
→ AI 生成大量代码,质量不可控,上下文漂移严重
✅ 正确做法:
"请实现 Task 3.1:文件哈希计算函数"
→ 聚焦、可审查、可测试、可回滚Phase 3:上下文工程
上下文工程贯穿整个工作流,决定了 AI Agent 的输出质量。详细内容参见 03a-上下文工程方法论,这里聚焦开发阶段的实践要点。
操作步骤
步骤 1:精确选择相关文件
原则:只给 AI 看它需要的文件,不多不少。
✅ 好的上下文:
"参考 src/sync/hash.ts 和 src/types/index.ts,
实现 src/sync/diff.ts 中的差异计算函数"
❌ 差的上下文:
"看看整个 src 目录,帮我实现差异计算"
→ 上下文噪音太多,AI 容易分心步骤 2:利用 MCP 连接外部工具
// .kiro/settings/mcp.json 示例
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@anthropic/github-mcp-server"],
"env": { "GITHUB_TOKEN": "your-token" }
},
"postgres": {
"command": "npx",
"args": ["-y", "@anthropic/postgres-mcp-server"],
"env": { "DATABASE_URL": "postgresql://..." }
}
}
}步骤 3:用 Steering 规则约束 AI 行为
<!-- .kiro/steering/coding-standards.md -->
# 编码规范
## 通用规则
- 所有公共函数必须有文档注释
- 错误处理不能用 try-catch 吞掉异常
- 不允许使用 any 类型(TypeScript)
## 测试规范
- 每个模块必须有单元测试
- 核心逻辑必须有 Property-Based Testing
- 测试文件与源文件同目录3. 工具生态与选型
3.1 Spec-Driven 编码工具推荐
| 工具 | 定位 | Spec 支持 | 核心特点 | 价格(2025) |
|---|---|---|---|---|
| Kiro | Spec-Driven IDE | ⭐⭐⭐⭐⭐ 原生内置 | 内置 Spec 工作流(requirements→design→tasks)、Hooks 自动化、Steering 规则、Vibe/Spec 双模式 | 免费版 50 次/月;Pro $20/月(225 vibe + 125 spec);Pro+ $39/月 |
| Cursor | AI-First 编辑器 | ⭐⭐⭐ 手动配置 | 强大的上下文管理(@引用)、多模型支持、Composer 多文件编辑、.cursorrules 规则文件 | $20/月(Pro);$40/月(Business) |
| Claude Code | 终端 AI Agent | ⭐⭐⭐⭐ CLAUDE.md | Plan Mode 只读分析、Subagent 并行、完整终端访问、深度 repo 感知 | $20/月(Claude Max);$100/月(Max 5x);$200/月(Max 20x) |
| GitHub Copilot | 内联补全 + Agent | ⭐⭐ 基础 | 深度 GitHub 集成、Agent Mode、多模型切换、Copilot Workspace | $10/月(Individual);$19/月(Business) |
| Windsurf | AI 编辑器 | ⭐⭐⭐ Cascade | Cascade 多步骤 Agent、Flow 架构、被 Cognition(Devin)收购后增强 | $15/月(Pro) |
| Augment Code | 企业级 Agent | ⭐⭐⭐⭐ 原生 | 四阶段方法论(Specify→Plan→Tasks→Implement)、企业级安全 | 联系销售 |
| Traycer | Plan-First 工具 | ⭐⭐⭐⭐ 原生 | 将高层意图分解为结构化计划,交给 AI Agent 执行后验证 | 免费(Beta) |
工具选型决策树
你的项目类型是?
├── 个人项目/原型 → Kiro(免费版)或 Cursor
├── 中小团队生产项目
│ ├── 偏好 GUI → Kiro Pro 或 Cursor Pro
│ └── 偏好终端 → Claude Code
├── 企业级项目
│ ├── 需要审计合规 → Augment Code
│ └── 已有 GitHub 生态 → GitHub Copilot Business
└── 开源项目 → Claude Code + Kiro 免费版3.2 模型选择指南
不同模型在编码任务中各有优势,选择合适的模型能显著提升开发效率:
| 模型 | 最适合场景 | 上下文窗口 | 编码基准 | API 价格(输入/输出 per 1M tokens) |
|---|---|---|---|---|
| Claude Opus 4 | 复杂架构设计、长链推理、困难 bug 调试 | 200K | SWE-bench 顶级 | $15 / $75 |
| Claude Sonnet 4 | 日常编码、性价比最优、快速迭代 | 200K | SWE-bench 优秀 | $3 / $15 |
| GPT-4o | 多模态任务、快速原型、广泛工具集成 | 128K | 良好 | $2.50 / $10 |
| Gemini 2.5 Pro | 超长上下文分析、大型代码库理解 | 1M+ | 优秀 | $1.25 / $10 |
| Grok 4 | 推理密集型任务、低成本 API | 128K | 优秀 | $3 / $15 |
| DeepSeek R1 | 推理密集型、开源自部署 | 128K | 良好 | $0.55 / $2.19 |
| Claude Haiku 3.5 | 简单任务、高吞吐、低成本 | 200K | 基础 | $0.80 / $4 |
模型选择策略
任务复杂度评估:
├── 简单(样板代码、CRUD、格式转换)
│ → Claude Haiku 3.5 或 GPT-4o-mini(低成本高速)
├── 中等(功能实现、测试编写、重构)
│ → Claude Sonnet 4(最佳性价比)
├── 复杂(架构设计、跨模块重构、算法设计)
│ → Claude Opus 4 或 Grok 4
└── 超长上下文(大型代码库分析、长文档处理)
→ Gemini 2.5 Pro(1M+ tokens)提示词模板
模型选择决策提示词:
我正在做 [任务描述]。
代码库规模:[文件数/行数]
任务复杂度:[简单/中等/复杂]
预算敏感度:[高/中/低]
需要的上下文量:[少量文件/多文件/整个代码库]
请推荐最适合的模型,并说明理由。4. 从 Vibe Coding 到 Spec-Driven 的演进
4.1 Vibe Coding 的定义与价值
“Vibe Coding”一词由 Andrej Karpathy 在 2025 年初提出,描述了一种用自然语言描述意图、由 AI 生成代码的开发方式。开发者不再逐行编写代码,而是”描述氛围”,让 AI 理解并实现。
Vibe Coding 的核心特征:
- 即兴式交互:像爵士乐即兴演奏,开发者与 AI 实时互动
- 意图驱动:描述”要什么”而非”怎么做”
- 快速迭代:几分钟内从想法到可运行原型
- 低门槛:非专业开发者也能构建应用
4.2 Vibe Coding 的局限性
随着实践深入,Vibe Coding 的问题逐渐暴露:
| 问题 | 表现 | 根因 |
|---|---|---|
| 不可重复 | 同一 prompt 不同时间产出不同代码 | 缺乏确定性规格说明 |
| 上下文漂移 | 长对话中 AI 忘记早期决策 | 没有持久化的设计文档 |
| 质量不可控 | 代码能跑但不可维护 | 缺乏审查机制和编码规范 |
| 知识孤岛 | 每个开发者有自己的 prompt 习惯 | 缺乏团队共享的规格标准 |
| 安全隐患 | AI 生成的代码可能包含漏洞 | 缺乏安全审查流程 |
| 技术债累积 | 快速堆叠导致架构混乱 | 缺乏架构设计和约束 |
研究数据表明,AI 生成的代码比人工编写的代码逻辑错误率高约 30%,这进一步说明了审查机制的必要性。
4.3 演进路径:四个成熟度级别
组织采用 AI 辅助开发通常经历四个阶段:
Level 1: 代码补全(Copilot 模式)
↓ 效率提升 10-20%,但不改变流程
Level 2: Vibe Coding(对话式生成)
↓ 效率提升 30-50%,但质量不稳定
Level 3: Spec-Driven(结构化 Agent)
↓ 效率提升 50-70%,质量可控
Level 4: 全自主工厂(Dark Factory)
→ 效率提升 80%+,人类只审批结果Level 1 → Level 2:从逐行补全到整段生成,开发者开始”描述意图”而非”编写代码”。
Level 2 → Level 3:这是当前大多数团队正在经历的关键跃迁。核心变化是引入 Spec 作为 source of truth,将即兴式交互转变为结构化工作流。
Level 3 → Level 4:少数先锋团队已开始探索”暗工厂”模式——AI 接收 Spec、自主构建、自主测试、产出可交付物,人类只审批最终结果。StrongDM 的案例中,三名工程师运行了一个无人编码、无人审查的软件工厂。
4.4 Vibe Coding 与 Spec-Driven 的关系
两者不是对立关系,而是互补关系:
| 维度 | Vibe Coding | Spec-Driven |
|---|---|---|
| 适用阶段 | 探索、原型、概念验证 | 生产开发、团队协作 |
| 速度 | ⚡ 极快(分钟级) | 🏃 快(小时级) |
| 质量 | 不可预测 | 可控、可审查 |
| 可维护性 | 低 | 高 |
| 团队协作 | 困难 | 自然支持 |
| 适合项目 | 黑客松、MVP、个人工具 | 生产应用、企业项目 |
最佳实践:混合使用
项目生命周期中的模式切换:
1. 创意探索阶段 → Vibe Coding
"帮我快速搭一个文件同步工具的原型"
2. 方案确认后 → 切换到 Spec-Driven
"基于原型验证的结果,创建正式的 Spec"
3. 生产开发 → 严格 Spec-Driven
"按 tasks.md 逐个执行任务"
4. 小修小补 → 回到 Vibe Coding
"修复这个 CSS 对齐问题"5. “70% 问题”与人机协作策略
5.1 什么是”70% 问题”
AI 能轻松处理约 70% 的开发工作——样板代码、标准模式、测试生成、文档编写。但最后 30% 的打磨和集成需要人类的专业判断。这个比例在 2025-2026 年的多项研究中被反复验证。
Connext Global 的调查显示,70% 的受访者认为 AI 的可靠性来自”人类安全网”——AI 加轻度审查(35%)或 AI 加专门监督(35%),仅 17% 认为 AI 可以独立运行。
5.2 70/30 分工详解
70% — AI 高效处理的部分:
├── 样板代码(CRUD、DTO、Schema、配置文件)
├── 标准模式实现(认证、分页、缓存、日志)
├── 测试用例生成(单元测试、集成测试骨架)
├── 文档生成(API 文档、README、注释)
├── 代码重构(提取函数、重命名、格式化)
├── 类型定义和接口声明
├── 数据库迁移文件
└── CI/CD 配置
30% — 人类不可替代的部分:
├── 架构决策(选择哪种方案、权衡取舍)
├── 边缘场景处理(AI 容易遗漏的异常路径)
├── 性能优化(需要 profiling 和实测数据)
├── 安全审查(AI 可能引入的漏洞)
├── 用户体验细节(微交互、动画、手感)
├── 业务逻辑验证(AI 不理解业务上下文)
├── 依赖评估(库的安全性、维护状态、许可证)
└── 技术债管理(何时重构、何时妥协)5.3 最大化 AI 贡献的策略
策略 1:用 Spec 提升 AI 的 70% 质量
没有 Spec 时 AI 的 70%:
→ 能跑但不一致的代码,需要大量人工修正
→ 实际有效贡献可能只有 40-50%
有 Spec 时 AI 的 70%:
→ 符合设计规范的代码,人工只需微调
→ 实际有效贡献可达 65-70%策略 2:用 Steering 规则减少人工审查负担
<!-- 通过 Steering 规则预防常见问题 -->
# 安全规则
- 所有用户输入必须经过验证和清洗
- 数据库查询必须使用参数化查询
- API 密钥不得硬编码在源代码中
- 所有 HTTP 端点必须有认证检查
# 代码质量规则
- 函数不超过 50 行
- 圈复杂度不超过 10
- 不使用 console.log 作为日志方案策略 3:用 Property-Based Testing 自动验证正确性
传统测试:验证特定输入的特定输出(example-based)
PBT:验证所有输入都满足某个属性(property-based)
示例:
- 属性:"排序后的数组长度等于原数组长度"
- 属性:"加密后解密应得到原文"
- 属性:"同步后本地和远程文件内容一致"
PBT 能自动发现 AI 代码中的边缘场景 bug,
减少人类需要手动检查的 30% 中的工作量。提示词模板
审查 AI 生成代码的提示词:
请审查以下代码,重点检查:
1. 是否符合 design.md 中 [章节] 的设计
2. 安全性:SQL 注入、XSS、密钥泄露、权限绕过
3. 性能:N+1 查询、内存泄漏、不必要的计算
4. 边缘场景:空输入、超大输入、并发访问、网络中断
5. 可维护性:命名清晰、职责单一、适当抽象
代码:
[粘贴代码]
请按严重程度排序列出问题,并给出修复建议。6. Spec-Driven 工作流的四种实施模式
根据团队规模和项目类型,Spec-Driven 工作流有四种典型实施模式:
模式 1:Solo Developer(一人开发)
开发者 ←→ AI Agent
↓
Spec(自己写 + AI 辅助)
↓
逐任务执行 + 自我审查
↓
git commit + 自动测试适用:个人项目、独立开发者、自由职业 工具推荐:Kiro 或 Claude Code 关键:自律地执行审查,不要因为”只有自己”就跳过
模式 2:Small Team(2-5 人团队)
产品经理 → Spec 初稿
↓
技术负责人 → Spec 审查 + 技术设计
↓
开发者 ←→ AI Agent → 代码草稿
↓
Code Review(团队成员交叉审查)
↓
CI/CD → 自动测试 → 部署适用:创业团队、小型产品团队 工具推荐:Kiro + GitHub PR 流程 关键:Spec 作为团队共享的 source of truth
模式 3:Enterprise Team(大型团队)
产品团队 → PRD
↓
架构师 → 技术 Spec + ADR
↓
多个开发者 ←→ 各自的 AI Agent
↓
自动化 Code Review + 安全扫描
↓
QA 团队 → 验收测试
↓
DevOps → 自动部署适用:企业级项目、大型团队 工具推荐:Augment Code + GitHub Copilot Business 关键:统一的 Steering 规则、安全合规、审计追踪
模式 4:Dark Factory(全自主)
人类 → 高层 Spec(Markdown 格式)
↓
AI 系统 → 自动分解任务
↓
AI Agent 集群 → 并行实现
↓
AI 测试 → 自动验证行为场景
↓
人类 → 审批最终产出物适用:高度标准化的项目、内部工具 工具推荐:自建 Agent 编排系统 关键:极高的 Spec 质量要求,完善的自动化测试
实战案例:用 Kiro 开发 RustSync 文件同步工具
项目背景
RustSync 是一个基于 Tauri(Rust + React)的桌面文件同步工具,支持增量同步到百度网盘。以下是使用 Spec-Driven 工作流的完整开发过程。
完整工作流演示
Day 1 上午:规划(约 30 分钟)
├── 在 Kiro 中创建 spec "rustsync-tool"
├── AI 生成 requirements.md → 审查确认 12 个用户故事
├── AI 生成 design.md → 审查确认架构设计(Tauri + React)
└── AI 生成 tasks.md → 确认 25 个实现任务
Day 1 下午:核心模块(约 4 小时)
├── Task 1: 项目初始化(Tauri + React + TypeScript)
├── Task 2: 配置管理模块(TOML 配置读写)
├── Task 3: 文件监控模块(inotify/FSEvents 封装)
└── 每个任务:AI 生成 → 人工审查 → 测试 → git commit
Day 2:同步引擎(约 6 小时)
├── Task 4: 差异计算引擎(基于文件哈希的增量检测)
├── Task 5: 百度网盘 API 集成(OAuth + 文件上传/下载)
├── Task 6: 同步调度器(队列管理 + 并发控制)
└── Task 7: 冲突检测与解决(时间戳 + 用户选择)
Day 3:UI 层(约 5 小时)
├── Task 8-15: React 组件实现
│ ├── 文件夹列表、同步状态栏、设置面板
│ ├── 同步日志、同步报告、添加文件夹对话框
│ └── 通过 Steering 规则确保 CSS Modules + 函数式组件
└── 通过 MCP 读取设计稿辅助 UI 实现
Day 4:测试与打磨(约 4 小时)
├── Task 16-20: 单元测试 + Property-Based Testing
├── Task 21-23: 集成测试
└── Task 24-25: 打包与发布配置关键 Steering 文件
<!-- .kiro/steering/coding-standards.md -->
# RustSync 编码规范
## Rust 代码规范
- 使用 thiserror 处理错误,禁止 unwrap()
- 所有公共函数必须有文档注释
- 使用 clippy 的所有默认 lint
- 异步代码使用 tokio
## TypeScript 代码规范
- 使用 CSS Modules,不用内联样式
- 组件使用函数式组件 + hooks
- 类型定义集中在 types/index.ts
- 状态管理使用 React hooks,不引入额外状态库
## 测试规范
- 每个模块必须有单元测试
- 核心逻辑必须有 Property-Based Testing
- 测试文件与源文件同目录,使用 .test.ts/.test.rs 后缀案例分析
这个案例展示了 Spec-Driven 工作流的几个关键优势:
- 规划投入小,回报大:30 分钟的 Spec 创建节省了后续数天的返工
- 微任务可控:每个 Task 1-2 小时,审查负担可控
- Steering 规则统一质量:AI 生成的代码自动遵循团队规范
- MCP 扩展能力:通过 MCP 连接外部工具,AI 能力不受限于代码编辑
避坑指南
❌ 常见错误
-
不用 Spec 直接 Vibe Coding 生产代码
- 问题:代码不一致、功能重复、废弃库引入、架构混乱
- 正确做法:先写 Spec(哪怕只花 15 分钟),再让 AI 编码
-
给 AI 太大的任务
- 问题:上下文漂移严重,AI 忘记初始目标,生成大量不可审查的代码
- 正确做法:拆成微任务,每个 1-2 小时工作量,一次只执行一个
-
不审查 AI 生成的代码
- 问题:合并了自己不理解的代码,埋下技术债和安全隐患
- 正确做法:每行代码都要理解,不理解就让 AI 解释
-
盲目信任 AI 推荐的依赖库
- 问题:AI 可能推荐不存在的库(幻觉)或有安全漏洞的版本
- 正确做法:手动验证每个依赖的存在性、维护状态和安全性
-
跳过 Plan Mode 直接执行
- 问题:AI 不了解现有代码库结构,生成的代码与现有架构冲突
- 正确做法:先用 Plan Mode 分析代码库,再执行修改
-
Spec 写完就不更新
- 问题:代码和 Spec 逐渐脱节,Spec 失去 source of truth 的价值
- 正确做法:代码变更时同步更新 Spec,保持一致性
-
上下文给太多或太少
- 问题:太多导致 AI 分心,太少导致 AI 缺乏必要信息
- 正确做法:只给当前任务相关的文件和设计文档
-
忽视 Steering 规则
- 问题:AI 每次生成的代码风格不一致,团队成员各自为政
- 正确做法:项目初始化时就建立 Steering 规则,全团队共享
✅ 最佳实践
- Spec 是 source of truth,代码是 Spec 的实现,不是反过来
- 一次一个任务,完成后审查、测试、提交,再进入下一个
- 每个任务都要有测试,核心逻辑用 Property-Based Testing
- 用 Steering/Rules 文件统一编码规范,让 AI 自动遵循
- 定期用
git diff审查 AI 的所有改动,不要盲目接受 - 保持 Spec 与代码同步,需求变更时先改 Spec 再改代码
- 善用 MCP 扩展 AI 能力,连接数据库、API、设计工具
- 建立团队的 Spec 模板,降低每次创建 Spec 的成本
- 记录架构决策(ADR),帮助 AI 理解”为什么这样设计”
- 渐进式采用,从 Vibe Coding 逐步过渡到 Spec-Driven,不要一步到位
相关资源与延伸阅读
-
Kiro IDE — AWS 推出的 Spec-Driven 原生 IDE,内置 requirements→design→tasks 工作流
- 官网:kiro.dev
-
Claude Code CLI — Anthropic 的终端 AI Agent,支持 Plan Mode 和 Subagent
-
Cursor — AI-First 代码编辑器,强大的上下文管理和多模型支持
- 官网:cursor.com
-
Augment Code — 企业级 Spec-Driven 开发平台,四阶段方法论
-
Traycer AI — Plan-First AI 编码工具,将高层意图分解为结构化计划
- 官网:traycer.ai
-
Addy Osmani 的 AI 编码工作流 — Google Chrome 团队工程师分享的 LLM 编码工作流实践
-
Spec-Driven Development 社区讨论 — Reddit r/ChatGPTCoding 社区的实践分享
-
fast-check — TypeScript/JavaScript 的 Property-Based Testing 库,Spec-Driven 测试的利器
- GitHub:github.com/dubzzz/fast-check
参考来源
- Addy Osmani - How to write a good spec for AI agents (2025 年)
- Addy Osmani - My LLM coding workflow going into 2026 (2026 年 1 月)
- Tessl - From Vibe Coding to Spec-Driven Development (2026 年 1 月)
- Augment Code - AI Coding Agents for Spec-Driven Development Automation (2025 年 9 月)
- Augment Code - Spec-Driven Development & AI Agents Explained (2025 年 9 月)
- Seven Peaks Software - A Practical Guide to Agentic Software Development (2025 年 12 月)
- Zencoder - Why Vibe Coding Fails AI Engineers (2026 年 1 月)
- Brad Jolicoeur - Master AI in Software Engineering: Vibe vs. Spec Coding (2026 年 2 月)
- The Cube Research - Vibe Coding, AI Code Review, and the Trust Gap (2026 年 2 月)
- Connext Global Survey - AI Reliability and Human Oversight (2026 年 2 月)
- Implicator - The End of Coding: Specifications as the New Source Code (2026 年 2 月)
Content was rephrased for compliance with licensing restrictions.
📖 返回 总览与导航 | 上一节:16c-系统设计文档AI生成 | 下一节:17b-15分钟瀑布规划法