Spec-Driven Development 规范驱动开发

1. 背景

随着 AI 编码能力的增强,一个常见模式是:你描述目标,AI 返回代码块,看起来正确但常常无法直接运行,需要进行多轮对话修改。这种“氛围编程” (vibe-coding) 方法适合快速原型,但对于复杂大型项目任务时,可靠性较低。

问题不在于 AI 的编码能力,而在于我们的方法。 我们像对待搜索引擎一样对待 AI 编码,而实际上应该把它们看作是需要明确指令的“结对程序员”。

为了解决这个问题,规范驱动开发 (Spec-Driven Development, SDD) 应运而生。Spec-Driven Development (SDD) 作为一种明确的 AI 开发范式,最早在 2024年底至2025年初GitHub Next 团队 (通过推出 GitHub Spec Kit) 和 Tessl 等 AI 开发工具公司共同推动普及。它的提出是对 “Vibe Coding” (氛围编程,由 Andrej Karpathy 在 2025 年初普及) 的一种结构化反思。虽然 Vibe Coding 能够通过自然语言提示快速生成原型,但在面对复杂、生产级软件时,往往缺乏一致性和可维护性。SDD 旨在通过将规范 (Spec) 提升为项目的 “唯一事实来源” (Source of Truth),解决 AI 编程中的上下文丢失与幻觉问题。在这种范式下,规范不再是文档,而是代码的蓝图;代码不再是核心资产,而是规范的下游产物。

扩展: TDD (Test-Driven Development) 也是一种流行的AI编程模式, 它的核心思想是先写测试用例,然后根据测试用例编写代码,确保代码符合预期。

2. 定义

规范驱动开发 (Spec-Driven Development, SDD) 是一种软件开发方法,它将传统的开发流程颠倒过来。 规范不再是编码开始后就被丢弃的脚手架,而是成为可执行的,能直接生成工作实现的核心。

在这种模式下,开发者首先与 AI 协作,创建一份详细、清晰且可执行的规范文档,这份文档定义了要构建什么以及为什么构建。然后,这份规范将驱动技术规划、任务分解和最终的代码实现。

核心优势

注:笔者认为, SDD本质上是一种编程上下文工程方法,提供更清晰的上下文,确保 AI 生成的代码符合预期。

2.1 核心观点

2.2 为什么重要(当下的必要性)

SDLC: Software Development Life Cycle, 软件开发生命周期

2.3 核心原则

2.4 实现方法(操作要点)

3. 使用方式 (流程)

规范驱动开发通常遵循一个结构化的流程,每个阶段都有明确的任务和验证点。 开发者在其中扮演引导和验证的角色,而 AI 则负责大部分的撰写工作。

一个典型的流程分为四个阶段:

  1. Specify (规范): 开发者提供高层次描述(用户旅程、体验、成功标准),AI 生成详细的功能规范。这个阶段关注 “什么”“为什么”,而不是技术实现。
  2. Plan (规划): 开发者提供技术栈、架构和约束,AI 生成全面的技术计划。这个阶段关注 “如何” 构建。
  3. Tasks (任务): AI 将规范和计划分解为小的、可审查、可独立测试的工作单元。
  4. Implement (实现): AI 逐一完成任务。开发者审查的是专注、解决特定问题的代码变更,而不是庞大的代码转储。

在每个阶段,开发者都需要 验证和修正 AI 生成的产出,确保其符合真实需求和约束。

3.1 工作流细化(与团队协作)

3.2 实践建议(落地到工具)

4. Spec-Kit

Spec-Kit 是 GitHub 推出的开源工具包,旨在将规范驱动开发带入开发者的 AI 工作流中。

4.1 Spec-Kit 核心功能

Spec-Kit 提供了一系列命令行工具和模板,与 Cursor、Claude Code、Gemini CLI 等 AI 编码工具深度集成。它包含四阶段核心工作流和一些辅助命令。

初始化

核心工作流

辅助命令

4.2 Spec-Kit 使用方式

安装 specify-cli:

uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
# upgrade
uv tool install specify-cli --force --from git+https://github.com/github/spec-kit.git

初始化项目, 在项目目录中,运行初始化命令,并指定 AI 代理为 Claude。

specify init . --ai claude

执行工作流, 启动 Claude Code 并使用 /speckit.* 命令来完成开发流程。

# 启动 Claude Code
claude

# 1. 创建规范
/speckit.specify 开发一个用户注册功能...

# 2. 制定计划
/speckit.plan 使用 React 和 aaaa UI 库...

# 3. 分解任务
/speckit.tasks

# 4. 实现代码
/speckit.implement

注: speckit 消化 token 很大。

5. Claude Code Spec Workflow

claude-code-spec-workflow 是一个针对 Claude Code 的自动化工作流项目,它实现了规范驱动开发和 Bug 修复的流程。

注意: 该项目的开发重点已转移到提供更强功能和更广泛兼容性的 MCP (Model Context Protocol) 版本。

5.1 Claude Code Spec Workflow 核心功能

该工作流为 Claude Code 提供了智能任务执行、专用代理、实时仪表盘等功能。

规范工作流 (新功能)

Bug 修复工作流

5.2 Claude Code Spec Workflow 使用方式

  1. 全局安装:
npm i -g @pimzino/claude-code-spec-workflow
  1. 在项目中设置:
claude-code-spec-workflow

# This will create:
#   .claude/ directory structure
#   14 slash commands (9 spec workflow + 5 bug fix workflow)
#   Auto-generated task commands for existing specs
#   Intelligent orchestrator for automated execution
#   Document templates
#   NPX-based task command generation
#   Complete workflow instructions embedded in each command
#   Claude Code sub-agents (mandatory)
# 
# ✔ Installation completed!
# 
# Spec Workflow installation completed successfully!

tree .claude
# .claude
# ├── agents
# │   ├── spec-design-validator.md
# │   ├── spec-requirements-validator.md
# │   ├── spec-task-executor.md
# │   └── spec-task-validator.md
# ├── bugs
# ├── commands
# │   ├── bug-analyze.md
# │   ├── bug-create.md
# │   ├── bug-fix.md
# │   ├── bug-status.md
# │   ├── bug-verify.md
# │   ├── spec-create.md
# │   ├── spec-execute.md
# │   ├── spec-list.md
# │   ├── spec-status.md
# │   └── spec-steering-setup.md
# ├── settings.local.json
# ├── specs
# ├── steering
# └── templates
#     ├── bug-analysis-template.md
#     ├── bug-report-template.md
#     ├── bug-verification-template.md
#     ├── design-template.md
#     ├── product-template.md
#     ├── requirements-template.md
#     ├── structure-template.md
#     ├── tasks-template.md
#     └── tech-template.md
# 
# 7 directories, 24 files
  1. 使用斜杠命令:

使用斜杠命令来驱动工作流。例如,开发一个新功能:

# 创建项目上下文文档
/spec-steering-setup

# 描述需求后,一键创建规范和任务
/spec-create lingolearn-app "开发一个单词卡片应用..."

# 逐个执行生成的任务
/spec-execute 1 lingolearn-app

执行效果说明

APPENDIX. 参考