Skip to content

Spec-Driven Development(规范驱动开发)

DotCraft 采用 spec-first(规范先行) 的方式构建:每一项协议与跨模块行为都先写成规范(spec),再去实现,之后由代码对齐这份规范。本页说明这一思路,以及为 DotCraft 贡献代码时如何遵循它。

什么是 Spec-Driven Development?

Spec-Driven Development(SDD,规范驱动开发)是一种方法论:作为唯一事实来源(source of truth)的是版本化、人类可读的规范,而不是代码。你先描述预期的行为、契约与约束;实现与测试随后从规范推导,并对规范进行校验。当需求变化时,先改规范,再让代码回到一致。

SDD 在 2025–2026 年间逐渐流行,作为对 AI 辅助下随性"vibe coding"的一种结构化替代——后者往往偏离意图,并随项目增长而劣化。把意图固化在持久的规范里,能给人和 Agent 都提供一份稳定的契约。

SDD 通常分为三个严谨度层级:spec-first(先写规范再写代码)、spec-anchored(把规范作为代码持续对齐的活契约)、spec-as-source(从规范重新生成代码)。DotCraft 处于 spec-first / spec-anchored 层级——规范在实现之前编写,并始终作为契约存在。

DotCraft 如何应用它

specs/ 目录存放 DotCraft 的活规范——session-coreappserver-protocolapp-binding 等。它们定义的是 what(是什么):行为、线协议契约、生命周期与约束,而非实现细节。

工作准则:

  • 先规范,后代码。 当你修改 specs/ 中定义的协议设计或跨模块流程时,先更新规范,再实现。
  • 在规范层面解决冲突。 如果改动与现有规范冲突,先在规范层面解决,再动代码。
  • 一致性测试对齐规范。 依赖协议的代码带有与规范对齐的测试,偏离会以测试失败的形式暴露出来。
  • 文档跟随行为。 行为变化时,更新面向用户的文档(中英双语)。
  • 规范描述契约,而非代码。 规范说明"必须为真的事项",并保持足够高层,以经受实现迭代。

工作流

对于较大的功能,节奏是:先讨论、先规范后代码、一次只做一个里程碑:

阶段内容
1. 范围与调研厘清目标、受益者、成功标准与非目标。仅在有帮助时才调研先例。
2. 里程碑大纲把工作拆成若干里程碑,给出目标、产出与范围边界。
3. 风险与可行性评估对现有模块的架构压力、兼容性、UX 与测试难度。
4. 里程碑规范specs/ 下编写编号规范(如 feature-name-m1.md)——写行为与验收,而非实现。
5. 实现计划仅针对当前里程碑,规划涉及的模块、契约与验证方式。
6. 实现只做一个里程碑;遇到与规范不符时以提问呈现,而不是悄悄偏离。
7. 基于规范的验证对照里程碑规范的验收清单检查结果。

工具:dotcraft-dev 插件

位于 samples/plugins/dotcraft-dev 的开发插件把这套工作流打包为 Agent 技能,因此当你让 Agent 规划或构建时,它会遵循 SDD。从插件目录启用它(参见 插件与工具),随后通过它的技能推进工作:

技能作用
dev-guide项目的 spec-first 规范、测试规则与双语文档指引。
feature-workflow为大型功能运行上述七阶段流程——里程碑规范、一次一个里程碑的实现、基于规范的验证。
error-diagnosis对 LLM / Agent / 工具 / 会话故障的只读诊断。
ui-prototype在改动生产代码前先做独立的 Desktop UI 原型。
svg-design设计与校验仓库原生的 SVG 资源。
release-draft起草发布说明。

启用插件后,像"规划一个新功能"这样的请求会引导 Agent 进入 feature-workflow 技能:它会讨论范围、提出里程碑、把规范写入 specs/,然后才实现并对照规范验证。这些技能也以独立形式放在 samples/skills/ 下,便于你在不使用整套插件的情况下采用。

参见

延伸阅读:What is Spec-Driven Development?(IBM) · Understanding Spec-Driven Development(Martin Fowler)

Apache License 2.0