为什么是 spec-kit
在 spec-kit、OpenSpec、BMAD、AI-DLC 和 Kiro 原生 spec 这五个候选中,本手册选择 spec-kit 作为主干。它的强制力不如 AI-DLC,安装和产物也比 OpenSpec、Kiro 原生 spec 多;但按八类标准逐项比较,除了 AI-DLC,它的覆盖面最完整,而且可以按任务大小增减命令。
这个选择不等于把缺口忽略掉。spec-kit 常用的手动命令路径仍靠 agent 和人遵守阶段顺序,需求到代码和测试也没有完整追溯。需要强制的部分,要分别放进 CI、合并规则或额外的执行时阻断。
5.1 五个候选的检查结果
下面的”完整”表示方案有直接承接这项标准的模板、命令或流程;“部分”表示只覆盖其中一段,或者仍要靠项目自行约定;“缺”表示主流程里没有对应机制。这里比较的是能力覆盖,不代表这些能力已经形成硬门。
| 把关标准 | spec-kit | OpenSpec | BMAD | AI-DLC | Kiro 原生 spec |
|---|---|---|---|---|---|
| 需求唯一 ID + 双向可追溯 | 部分:需求有编号,没有内置 RTM | 部分:增量规格有结构,没有内置 RTM | 部分:需求有编号,没有完整 RTM | 完整:需求编号和追溯关系由流程维护 | 部分:需求分条记录,没有双向追溯 |
| 需求与验收条件的结构化表达 | 完整:用户故事带 Given-When-Then 场景 | 完整:需求带场景格式和结构校验 | 完整:用户故事和验收条件有固定结构 | 完整:用户故事和验收条件有编号与质量规则 | 完整:需求使用 EARS 句式 |
| what 与 how 分离 | 完整:规格与计划分开 | 完整:规格与设计分开 | 完整:需求与架构产物分开 | 完整:需求阶段与设计阶段分开 | 完整:需求、设计和任务分开 |
| 规格质量门 | 完整:澄清、检查表和一致性分析分成独立命令 | 部分:校验器检查规格结构 | 完整:有多视角评审流程 | 完整:各阶段有检查和独立评审 | 部分:有需求分析和阶段检查点 |
| 测试即验收证据 + 变更检测 | 部分:任务可以要求测试,基线比较要自行补 | 缺:主流程没有测试基线保护 | 部分:工作流要求验证,没有测试变更保护 | 部分:有测试合同和验证记录,不保护测试源码 | 缺:主流程没有测试基线保护 |
| 规格版本化 + 多视角评审 | 部分:产物可进 git,评审门要自行配置 | 部分:增量规格和归档可版本化,评审靠外部流程 | 完整:规格版本化并有多视角评审 | 完整:阶段产物、评审结论和后续变更都有记录 | 部分:产物可版本化,检查点仍靠人确认 |
| 带验收条件的任务分解 | 部分:任务按用户故事组织,单项任务不一定带独立验收条件 | 部分:任务清单承接规格,单项任务的验收条件要自行补 | 完整:故事拆成带验收条件的任务 | 完整:实现步骤与需求、验收条件关联 | 部分:任务从需求生成,单项任务的验收条件要自行补 |
| 非功能需求单列共享 | 完整:constitution 和 preset 承载共享约束 | 部分:可以放进项目配置,主流程没有单独质量门 | 部分:项目上下文承载共享约束 | 完整:非功能需求单独维护并进入后续阶段 | 部分:共享约束由 steering 承载,不属于 spec 本身 |
spec-kit 的优势是覆盖面:八类标准都有承接点,其中 what 与 how 分离、结构化验收场景、规格质量命令和共享约束可以直接使用。主要缺口也很具体:没有双向追溯矩阵,任务不保证逐项带验收条件,测试基线和变更检测要由项目补上。
执行机制要另看。相同的模板和检查,如果只靠 agent 记得运行,仍然属于约定。
| 候选 | 常用路径怎样推进 | 程序能检查或阻断什么 | 仍可绕过的部分 |
|---|---|---|---|
| spec-kit | 人逐个调用规格、计划、任务和实现命令 | 校验脚本能检查产物;specify workflow run 模式可以按工作流执行阶段门 | 手动命令路径没有统一的阶段状态门;检查未接入 CI 时可以跳过 |
| OpenSpec | agent 按变更流程维护增量规格 | 规格校验失败可以返回错误码并接入 CI | 校验器不负责阻止 agent 提前实现 |
| BMAD | agent 按角色和工作流产出、评审故事 | 流程状态可以记录进度 | 阶段推进主要靠提示词和人工确认 |
| AI-DLC | 引擎按阶段状态推进 | 未批准计划时拒绝写项目代码;保护审计记录和已评审的流程产物 | 应用代码和测试源码不在这些保护范围内 |
| Kiro 原生 spec | agent 依次生成需求、设计和任务 | 阶段检查点会要求人确认 | 确认动作本身不是运行时写入阻断 |
因此,不能把 spec-kit 的所有用法都归为提示词门。workflow 模式可以由程序执行阶段门;本手册采用的手动命令组合则没有统一的阶段状态门。AI-DLC 的区别在于,阶段状态、审批和产物保护本来就是核心流程的一部分,不需要项目再把这些机制拼起来。
五个候选都没有在执行时锁住测试源码。AI-DLC 的评审冻结只管流程产物;计划审批记录的测试说明和测试合同也不等于测试文件本身不可修改。
5.2 AI-DLC 的强项与代价
AI-DLC 把流程治理做得最完整:
- 规格阶段维护追溯关系,把需求连到设计和实现步骤。
- 写代码前要由人批准计划。批准时记录计划、测试说明和测试合同的指纹;这些文件随后发生变化,引擎要求重新批准。
- 带评审的阶段得到最终结论后,引擎保护这个阶段的产出文档,直到人决定打回重做。
- 审计记录由工具写入,agent 不能直接修改。人在门上批准时,未处理的评审意见会记为已接受风险。
这些机制管的是阶段有没有被跳过、批准后流程产物有没有变化。它们不保护应用代码和测试源码。
代价也来自这套结构。会话要携带更多阶段产物,写代码前需要更多人工确认。官方 issue 里有用户反馈:V2 达到相同结果时消耗的 token 多于 V1;前期阶段持续占用主会话,需要反复压缩;自动暂停依赖的上下文占用信号在 Kiro 上拿不到。这些是使用者报告,说明了需要关注的成本,不代表每个项目都会遇到相同程度的问题。
如果项目需要引擎保护审批状态、流程产物和操作记录,并且能承担额外的交互与上下文成本,可以优先考虑 AI-DLC。正式合规仍要按具体控制要求检查权限、留存和防篡改机制;有审计日志不等于已经满足合规要求。
5.3 选 spec-kit 的理由
spec-kit 首先胜在覆盖面。它没有 AI-DLC 的原生 RTM 和审计引擎,但结构化需求、what 与 how 分离、规格质量检查、任务分解和共享约束都有对应产物或命令。用 git、PR 和 CI 承担审批与留痕的项目,不必先引入一套更重的流程引擎。
它的命令也可以拆开组合。较小的功能可以只走规格、计划、任务、实现和收敛检查;风险更高或边界不清的功能,再增加澄清、检查表和一致性分析。任务分档可以直接复用这种组合方式,不需要为每种任务另造一套流程。
缺口可以局部补。spec-kit 提供 bug、assess、git 等扩展,preset 可以承载组织级标准;社区目录还有追溯、EARS 格式检查和评审门扩展。社区扩展不由官方审查,采用前仍要读源码并锁定版本。
这也划出了它的适用边界。项目只需要轻量规格和结构校验时,OpenSpec 或 Kiro 原生 spec 的负担更小;项目把引擎级审批和详细审计放在首位时,AI-DLC 更合适。spec-kit 适合处在两者之间、愿意用现有 git 和 CI 补强门禁的项目。
5.4 代价和补法
| 代价 | 补法 | 补到哪一层 |
|---|---|---|
| 本手册采用手动命令组合,阶段门可以跳过(workflow 模式能执行阶段门,但产物和命令更多) | 在 CI 中分别检查必需产物、规格校验结果、需求到任务的映射和测试结果;分支规则拒绝不合格的改动 | 合并门,不是本地执行时阻断 |
| 没有测试源码保护 | 先记录测试失败,再实现;测试单独提交;合并前比较测试与已批准基线。需要 agent 在本地会话里不能修改测试时,要另建写入阻断,并覆盖文件工具、shell 重定向等写入通道 | 基线比较属于合并门;额外的写入控制才属于执行时阻断 |
| 没有需求到代码和测试的双向追溯 | 一致性分析先检查规格、计划和任务之间的覆盖;再用追溯清单或机器可读清单,把需求 ID 连到代码位置和测试。需要原生 RTM 时考虑 AI-DLC | 一致性分析只补到任务,完整链路要另建 |
| 社区扩展没有官方审查 | 安装前读源码,固定版本;升级时重新检查权限、脚本和生成的命令 | 供应链检查,不能替代功能验收 |
CI 只能执行结果稳定、能返回明确状态的检查。AI 给出的一致性分析可以进入评审,但不能直接当成确定性硬门;要阻止合并,还要把必需文件、ID 映射、测试结果等条件写成脚本或现成校验器能判断的规则。
这些补法也不能阻止 agent 在本地会话里改文件。CI 和分支规则保证的是问题改动进不了主分支。需要当场拒绝写入时,必须另加 hook、沙箱或编排器,并测试所有写入通道。
5.5 从 AI-DLC 吸取的经验
AI-DLC 有三项做法可以放进 spec-kit 流程。
- 按任务选择流程范围。小改动不必走完整链路,高风险任务增加设计、评审和验收阶段。
- 先判断意图模糊、结构不确定、验证难度、风险和未决假设,再决定增加或跳过哪些阶段;跳过时记录理由。
- 每条严重评审意见都要有去向:修复,或者登记为技术债并由人接受风险。
这三项做法不依赖 AI-DLC 的引擎,可以落实到任务分档、命令组合和评审记录中。
本章小结
选择 spec-kit,依据是八类标准的覆盖面和命令的可组合性,不是它有最强的流程门。手动命令路径仍靠约定推进,追溯、测试基线和合并门要另外补;如果项目需要引擎级审批和审计,应优先评估 AI-DLC。
参考与出处
- spec-kit 的手动命令路径与两种使用范围:spec-kit Quickstart
- spec-kit workflow 的阶段编排和 gate:Workflows
- spec-kit 实现命令遇到未完成检查表时的处理:implement 命令模板
- spec-kit 的跨产物一致性检查:analyze 命令模板
- spec-kit 任务按用户故事组织:tasks 模板
- spec-kit 的扩展与 preset:Customization
- OpenSpec 不设阶段门:OpenSpec Concepts
- OpenSpec 校验失败的退出码:OpenSpec CLI 参考
- BMAD 的方法与工作流:BMAD-METHOD
- Kiro 原生 spec 的结构与阶段:Kiro Specs
- AI-DLC 计划审批与评审冻结的范围:plan-approval-guard、review-freeze
- AI-DLC 审计记录的保护:Hooks and Tools
- AI-DLC 的成本问题:V2 比 V1 更费 token、前期阶段在主会话累积上下文、Kiro 上拿不到上下文占用信号
- AI-DLC 的五项不确定性与批准时的风险记录:composing.md、Stage Protocol