二、Spec-Kit 解决方案与技术剖析
2.1 规约驱动编程简介
定义:规约编程顾名思义以规范文档驱动的编程(Specification Driven Development, 简称 SDD ),一种以规范为核心的编程方法,旨在通过明确的需求和规则定义,提升软件开发的效率、质量和协作性。在传统开发中,Spec 是"指导性文件"——写完就束之高阁,真正的工作还是靠人工编码,人工评审进行驱动优化。但在 AI 编程时代,Spec 不仅仅是指导,而是变成了“可执行的源代码”,即直接让 AI 根据 Spec 生成完整的代码实现。
简单来说:在开始编码之前,先定义清晰的规范(Specification),将业务需求、接口定义、数据模型、业务规则等以结构化、可执行的方式编写,让文档即代码,代码即文档。
在规约驱动下:维护软件 = 维护规约(不是维护代码)、调试 = 修复规约(不是修复代码)、重构 = 重构规约(代码自动重新生成)
流程变化:
传统开发:需求 → 设计文档 → 代码 → 测试(代码是真理,四个环节独立)
规约驱动:需求 → Spec 规约 → 自动生成代码/文档/测试( 一体化,规约是真理,代码是生成物)关键转变2.2 Spec-Kit 实现方案
基于研发痛点和业界实践探索, 近期 GitHub 官方发布了 Spec-Kit 实现规约编程的开源工具并引发广泛关注,源代码见:https://github.com/github/spec-kit ,笔者进行 clone 并进行分析其设计的原理,了解 Spec-Kit 是如何设计解决研发痛点或者为什么可以做到团队级 Spec 编程。这也是对 AI 时代软件开发模式的前瞻性探索,为未来的软件工程提供了新的范式参考,该项目的核心价值在于:
- 核心创新
范式转变 | 零差距实现 | 意图驱动 |
|---|---|---|
从"代码为王"到"规范为王" | 规范直接生成代码, 而非指导开发 | 自然语言表达开发意图 |
颠覆传统开发模式,让规范成为第一生产力 | 消除规范-实现差距,告别文档与代码不一致 | AI 自动转换为实现,专注业务而非细节 |
- 架构亮点
- 多 AI Coding 工具集成:支持 12 种不同 AI Coding 工具初始化(如 CodeBuddy、Claude、Cursor等)及支持切换
- 模板驱动工作流:5个核心命令实现完整 SDD 流程
- 跨平台脚本系统:Bash 和 PowerShell 双重支持
- 自动化发布流程:为每个 AI 代理生成专用模板包
- 模板驱动 的 Spec 自动闭环工作流: 确保 AI 输出一致性和结
constitution → specify → plan → tasks → implement
↓ ↓ ↓ ↓ ↓
项目原则 → 功能规范 → 实现计划 → 任务分解 → 代码实现 constitution → specify → plan → tasks → implement ↓ ↓ ↓ ↓ ↓ 架构设计:
- 架构设计:
我借助 CodeBuddy Code 对其源代码进行了分析
如下是其设计原则:可以看到主要使用的是 Python + Shell 脚本+ md 模版文档
例如执行/specify.md 命令时,Spec-Kit 会跑 .specify/scripts/bash/create-new-feature.sh 这个脚本,生成的文档用的是.specify/templates/spec-template.md 这个模板,实现规范创建指令,并实现需求模版规范化。
通过如下指令进行解决相关的任务, 如下:
- /constitution - 建立项目宪法:定义项目核心原则、技术约束、质量标准
- /specify - 写需求文档:自然语言描述功能需求、AI 自动生成完整规约、质量检测清单与验证
- /clarify - 澄清规约:进行用户需求澄清细节、确认
- /plan - 做技术方案:生成技术栈选型、架构设计、数据模型、API 契约
- /tasks - 任务分解清单:按照用户故事组织、依赖关系分析、并行执行优化
- /analyze - 审核文档: 识别spec.md`、`plan.md`、`tasks.md 不一致性、操作约束、规范分析报告、提供建议与修复
- /implement - 开始干活:逐任务自动执行、进度跟踪、质量验证
其中最关键的 4 个指令是:/specify、/plan 、/tasks 、/implement 指令。
以其中 /constitution 指令驱动下的 constiution.md 翻译中文进行分析,主要实现以模板驱动的规约生成,校验输入、定义工作流、一致性检查、影响力报告、验证和样式输出要求约束。
---
description: 从交互式或提供的原则输入创建或更新项目章程,确保所有依赖模板保持同步
---
## 用户输入
```text
$ARGUMENTS
```
在继续之前,你**必须**考虑用户输入(如果不为空)。
## 概述
您正在更新 `/memory/constitution.md` 处的项目章程。此文件是一个模板,包含方括号中的占位符标记(例如 `[PROJECT_NAME]`、`[PRINCIPLE_1_NAME]`)。您的工作是(a)收集/派生具体值,(b)精确填充模板,以及(c)在依赖制品之间传播任何修订。
遵循此执行流程:
1. 在 `/memory/constitution.md` 处加载现有章程模板。
- 识别形式为 `[ALL_CAPS_IDENTIFIER]` 的每个占位符标记。
**重要**:用户可能需要比模板中使用的原则更少或更多的原则。如果指定了数字,请尊重它 - 遵循一般模板。您将相应地更新文档。
2. 收集/派生占位符的值:
- 如果用户输入(对话)提供值,请使用它。
- 否则从现有仓库上下文(README、docs、先前的章程版本(如果嵌入))推断。
- 对于治理日期:`RATIFICATION_DATE` 是原始采用日期(如果未知,请询问或标记 TODO),`LAST_AMENDED_DATE` 是今天(如果进行了更改),否则保留以前的。
- `CONSTITUTION_VERSION` 必须根据语义版本控制规则递增:
- 主要:向后不兼容的治理/原则删除或重新定义。
- 次要:添加或实质性扩展的新原则/部分指导。
- 补丁:澄清、措辞、拼写错误修复、非语义细化。
- 如果版本碰撞类型模糊,请在最终确定之前提出理由。
3. 起草更新的章程内容:
- 用具体文本替换每个占位符(除了项目选择不定义的有意保留的模板插槽外,没有括号标记 - 明确证明任何剩余的)。
- 保留标题层次结构,一旦替换,可以删除注释,除非它们仍然添加澄清指导。
- 确保每个原则部分:简洁的名称行、段落(或项目符号列表)捕获不可协商的规则、明确的理由(如果不明显)。
- 确保治理部分列出修订程序、版本控制策略和合规性审查期望。
4. 一致性传播检查清单(将先前的检查清单转换为主动验证):
- 阅读 `/templates/plan-template.md` 并确保任何"章程检查"或规则与更新的原则一致。
- 阅读 `/templates/spec-template.md` 以进行范围/需求对齐 - 如果章程添加/删除强制性部分或约束,则更新。
- 阅读 `/templates/tasks-template.md` 并确保任务分类反映新的或删除的原则驱动的任务类型(例如,可观察性、版本控制、测试纪律)。
- 阅读 `/templates/commands/*.md` 中的每个命令文件(包括此文件)以验证在需要通用指导时没有过时的引用(仅特定于代理的名称,如 CLAUDE)。
- 阅读任何运行时指导文档(例如,`README.md`、`docs/quickstart.md` 或特定于代理的指导文件(如果存在))。更新对更改的原则的引用。
5. 生成同步影响报告(在更新后作为 HTML 注释添加到章程文件顶部):
- 版本更改:旧 → 新
- 修改的原则列表(如果重命名,则旧标题 → 新标题)
- 添加的部分
- 删除的部分
- 需要更新的模板(✅ 已更新 / ⚠ 待处理)及文件路径
- 如果有任何占位符有意推迟,则后续 TODO
6. 最终输出前的验证:
- 没有剩余的未解释的括号标记。
- 版本行与报告匹配。
- 日期 ISO 格式 YYYY-MM-DD。
- 原则是声明性的、可测试的,并且没有模糊的语言("应该" → 在适当的地方用 MUST/SHOULD 理由替换)。
7. 将完成的章程写回 `/memory/constitution.md`(覆盖)。
8. 向用户输出最终摘要:
- 新版本和碰撞理由。
- 标记为手动后续的任何文件。
- 建议的提交消息(例如,`docs: amend constitution to vX.Y.Z (principle additions + governance update)`)。
格式和样式要求:
- 完全按照模板中的方式使用 Markdown 标题(不要降级/提升级别)。
- 换行长理由行以保持可读性(理想情况下 <100 个字符),但不要用尴尬的中断强制执行。
- 在部分之间保留一个空行。
- 避免尾随空格。
如果用户提供部分更新(例如,仅一个原则修订),仍然执行验证和版本决策步骤。
如果缺少关键信息(例如,批准日期确实未知),请插入 `TODO(<FIELD_NAME>): explanation` 并在同步影响报告的延期项目下包含。
不要创建新模板;始终在现有的 `/memory/constitution.md` 文件上操作。类似的其他 MD 也类似,接下来,将以实际上手和应用进行实践。
2.3 Spec-Kit 方案优势
相比日常我们使用 AI Coding 工具,Spec-kit 带来的优势,Spec-kit 从确立团队原则(/constitution),到“说清楚要做什么”(/specify),到“把不清楚的先问清”(/clarify),再到“定技术方案”(/plan)、“自动拆任务”(/tasks)、“一致性分析”(/analyze)、“落地实现”(/implement),通过这一套固定命令,拉齐整个研发链路。
总结一句话少拍脑袋,用文档记录,确保每次执行进行对齐。
- 链路可追踪:每个技术选择都能追溯到规格里的具体需求,规格/计划/研究/合约是活文档,与代码同分支、 共同演进。
- 团队协作友好: Spec 规格是团队共识对象,而不是提示词的“黑箱艺术”;“Clarifications”有迹可循,方便评审与补齐
- 抗噪声: 文档模板把 大模型 容易“过拟合到实现细节”的毛病卡住了(例如明确“禁止 HOW”),降低误差传播。
- 可落地:Spec-kit 官方示例从命令到目录结构再到脚本都给全了,实践门槛很低(初始化项目、选择 Agent、看到命令就能跑起来)。
接下来以进行快速上手和项目示例进行演示其在新项目和存量项目中的落地表现。
学员评价