Spec-Driven Development

世界上有一种开发方式,叫先想清楚再动手 —— 没错,就是先写规格再写代码

OpenClaw教程 Agentic Coding Vibe Coding

📋 什么是Spec-Driven Development?

Spec-Driven Development(规格驱动开发),简称SDD,就像盖房子先画图纸。你以为程序员都是先写代码再想逻辑?不,在AI时代,正确的打开方式是——先写一份详细的规格说明(Spec),让AI Agent根据规格去写代码。

"凌晨4点,我终于写完了spec,回头一看,AI已经按spec把代码生成了。那一刻我悟了——原来我才是那个写PRD的产品经理。"

2026年5月,GitHub官方发布的 spec-kit 项目(99,329⭐)让这个概念彻底出圈。它的核心理念很简单:

⚙️ 核心原理

1. 传统开发 vs SDD

🏃 传统开发

需求 → 直接写代码 → 调试 → 改需求 → 再写代码 → 无限循环...

像周星驰电影里跑龙套的:没剧本,全靠临场发挥

📐 SDD

需求 → 写Spec → AI按Spec生成代码 → 验证 → 交付

像王家卫写分镜:每一帧都有意义,每一个场景都有规格

2. Spec的三大层次

3. spec-kit的核心流程

# spec-kit 工作流 1. 编写 spec.yaml —— 定义功能、接口、行为 2. spec-kit generate —— AI按规格生成代码骨架 3. spec-kit validate —— 验证代码是否符合规格 4. spec-kit test —— 根据规格自动生成测试用例 5. 迭代:修改spec → 重新生成 → 验证

🚀 OpenClaw实战应用

1. 用OpenClaw Agent实现SDD

在OpenClaw中,你可以把Spec-Driven Development融入Agent工作流

# OpenClaw SDD 工作流配置 # .openclaw/config.yaml skills: - name: spec-writer description: "根据需求文档生成规格说明" prompt: | 你是一个规格编写专家。根据用户的需求描述, 生成详细的spec.yaml文件,包含: - 功能描述 - API接口定义 - 输入输出格式 - 边界条件和错误处理 - 性能要求 - name: spec-validator description: "验证代码实现是否符合规格" prompt: | 对比spec.yaml和实际代码实现, 检查是否存在偏差,输出验证报告。 cron: # 每次代码提交后自动验证 - schedule: "on_commit" task: "spec-validator run" target: "spec-validator"

2. Spec作为Agent的上下文

把Spec文件放入OpenClaw的工作目录,Agent在编码时会自动参考规格

# spec.yaml —— OpenClaw Agent的"圣经" feature: name: "用户认证模块" version: "1.0.0" requirements: - 支持邮箱+密码登录 - 支持OAuth2.0(Google、GitHub) - 密码强度:至少8位,包含大小写+数字 api: endpoints: - path: /api/auth/login method: POST input: email: string (required) password: string (required, 8-64 chars) output: token: string (JWT) expires_in: number (seconds) errors: 401: "邮箱或密码错误" 429: "请求过于频繁,请稍后重试" behavior: - 登录失败5次后锁定账号30分钟 - Token有效期7天 - 支持Remember Me延长至30天
"以前我让AI写代码,它给我整出一个登录页连验证都没有。现在我先把spec写好,AI乖乖地按规格来——这就像给AI套了个紧箍咒,效果拔群。"

💡 实战代码示例

使用spec-kit快速启动项目

# 安装spec-kit pip install spec-kit # 初始化项目 spec-kit init my-project # 生成:spec.yaml, tests/, src/ # 编写规格 cat > spec.yaml << 'EOF' feature: name: "待办事项API" version: "1.0.0" api: endpoints: - path: /api/todos method: GET description: "获取所有待办事项" output: todos: array[{id: int, title: string, done: bool}] - path: /api/todos method: POST input: title: string (required, max 200) output: id: int title: string done: bool (default: false) EOF # AI根据规格生成代码 spec-kit generate --from spec.yaml --lang python # 验证实现 spec-kit validate --spec spec.yaml --src ./src # 自动生成测试 spec-kit test --spec spec.yaml --output ./tests

OpenClaw Agent自动化SDD流程

# 用OpenClaw子Agent实现SDD流水线 # 主Agent负责协调,子Agent分工执行 # Step 1: Spec编写Agent spec_agent: task: "分析需求,生成spec.yaml" skills: - spec-writer output: "spec.yaml" # Step 2: 代码生成Agent code_agent: task: "根据spec.yaml生成代码实现" depends_on: spec_agent skills: - code-generator input: "spec.yaml" output: "src/" # Step 3: 验证Agent validate_agent: task: "验证代码是否符合spec" depends_on: code_agent skills: - spec-validator input: ["spec.yaml", "src/"] output: "validation-report.md" # 如果验证失败,回到Step 1修改spec # 如果验证通过,自动创建PR

🎯 最佳实践

"世界上有两种程序员:一种是先写代码再补文档的,另一种是先写规格再写代码的。前者叫救火队员,后者叫建筑师。在AI时代,建筑师赢麻了。"