← 返回藏书阁

Spec-driven development

wiki/ai/concepts/Spec-driven-development.md
分类:ai / concepts · 更新:2026-07-05 17:46

Spec-driven development(规格驱动开发)

定义

一种开发方法论,核心思想是:在 AI 写代码之前,先通过结构化的规格文档对齐「要做什么」。区别于直接让 AI 写代码然后反复修改的传统方式。

核心流程

  1. Proposal(提案) — 定义为什么要做这个变更
  2. Specs(规格) — 描述需求场景和验收标准
  3. Design(设计) — 技术方案、架构决策
  4. Tasks(任务) — 拆解为可执行的实施清单
  5. Apply(执行) — 按任务清单逐项开发
  6. Archive(归档) — 保存历史,供未来参考

代表工具

OpenSpec 是这一理念的典型实现,通过 /opsx:propose/opsx:apply/opsx:archive 三个命令驱动。

与传统方式对比

  • 传统:需求 → 直接写代码 → 反复修改(容易跑偏)
  • Spec-driven:需求 → 规格文档 → 对齐确认 → 再写代码(减少返工)

价值

  • 需求对齐不依赖聊天记忆,有持久文档
  • 每个变更有完整可追溯记录
  • AI 可以基于规格自主工作,不跑偏
  • 规格库积累后,类似需求可复用

类比

类似 LLM Wiki 的「先编译知识再查询」理念——不是每次从零开始,而是先投资一次把知识/规格固化下来。

2026-07-05 补充:GitHub Spec Kit 把 SDD 工具化

[[github-spec-kitGitHub Spec Kit]] 说明 Spec-driven development 正在从个别 agent prompt 演进为可安装、可组合、可扩展的工程 workflow。它把流程拆成 constitution → specify → clarify/checklist/analyze → plan → tasks → implement → converge,并通过 specify CLI 把模板、脚本、agent integration 和 slash commands 注入项目。

这补充了本页原有 OpenSpec 视角:SDD 的关键不只是“写一份 spec”,而是让 spec、plan、tasks 和 convergence check 形成可版本化、可审查、可重复执行的约束链。对 Agentic-Coding 来说,这是一种上游 harness;对 Context-Engineering 来说,.specify/ 和 slash commands 是项目级 context provider。

写入记录

  • 2026-07-05 17:44 CST:补充 GitHub Spec Kit 作为 SDD 工具化实现,强调 constitution/spec/plan/tasks/converge 约束链。