Skip to content

规范驱动开发 (SDD / Specification-Driven Development)

规范驱动开发(SDD)提供了一套结构化、规范先行的工程化研发流程体系,将业务需求、架构决策、任务计划与代码实现紧密连接。


SDD 生命周期

[/prd: 需求规格] ──▶ [/adr: 架构决策] ──▶ [/plan: 任务分解] ──▶ [/impl: 编码执行与验证]
       │                    │                     │                         │
       └────────────────────┴─────────────────────┴─────────────────────────┘
                       (支持任意阶段起手与自由阶段跳转)
  1. /prd [topic]:需求规格说明书 (Product Requirements Document)
    • 明确问题背景、用户画像、用户故事 (US-xx)、功能需求 (FR-xx)、非功能需求 (NFR)、边界/排除范围 (Out of Scope) 与验收标准 (Given/When/Then)。
    • 自动生成并维护在 docs/prd/<topic>.md
  2. /adr [title]:架构决策记录 (Architecture Decision Record)
    • 记录技术选型、架构分层、数据模型、API 契约、利弊权衡与决策后果。
    • 自动生成并维护在 docs/adr/(支持单层扁平模式与分层模式)。
  3. /plan [topic]:实施计划与任务分解 (Implementation Plan)
    • 将 PRD 与 ADR 规范细化拆解为原子化、测试驱动的实施阶段与任务清单。
    • 自动生成并维护在 docs/plan/<topic>.md
  4. /impl [task]:编码实现与验证交付 (Implementation & Verification)
    • 严格依照 Plan、ADR 与 PRD 进行测试驱动编码,遵循 Karpathy 代码质量准则。
    • 自动运行单元测试、类型检查 (tsc) 与质量门禁。

🏛️ 为什么 ADR 是 SDD 体系中最关键的核心枢纽?

在整个 SDD(PRDADRPLANIMPL)生命周期中,ADR(架构决策记录)是整个工程化架构的定海神针与核心枢纽,其关键意义体现在以下四个维度:

               ┌──────────────────────────────┐
               │    PRD:解决「做什么」(What)    │
               │    业务诉求 · 用户故事 · 验收标准 │
               └──────────────┬───────────────┘

               ┌──────────────▼───────────────┐
               │ ⭐ ADR:解决「怎么架构」(How)   │ ◄───【核心枢纽:架构防腐、选型裁决、契约基准】
               │ 技术选型 · 数据模型 · API 契约 │
               └──────────────┬───────────────┘

               ┌──────────────▼───────────────┐
               │   PLAN:解决「怎么排期」(When)  │
               │   原子任务 · 依赖顺序 · 改动路径 │
               └──────────────┬───────────────┘

               ┌──────────────▼───────────────┐
               │   IMPL:解决「怎么编码」(Code)  │
               │   测试驱动 · 代码落地 · 质量验收 │
               └──────────────────────────────┘
  1. 跨越业务与代码鸿沟的唯一桥梁
    • PRD 关注业务价值与用户体验,PlanImpl 关注文件路径与代码函数。
    • 如果缺乏 ADR 直接从 PRD 跨入编码,由于缺少系统设计、数据模型、状态机与接口契约的严谨论证,AI 生成的代码极易陷入“局部可用但整体架构畸形”的陷阱。ADR 是将抽象业务诉求翻译为坚固软件架构的唯一转换器
  2. 不可逆决策的防御屏障(Architecture Defense)
    • 界面文字或局部逻辑随时可以低成本修改,但数据模型、分层通信协议、核心第三方库选型、鉴权机制等架构决策具有极高的重构代价
    • ADR 强制在落子前对备选方案(Options)、技术权衡(Pros/Cons)与改动影响面(Blast Radius)进行论证,把架构风险扼杀在写代码之前。
  3. 记录「为什么这么做」与「被否决方案」的活化石
    • 翻看 PRD 无法知道技术实现细节,翻看代码无法知道当时为什么不采用方案 B。
    • 只有 ADR 沉淀了决策背景与被否决的方案(Rejected Alternatives),为未来系统演进、团队接手以及架构替代(/adr supersede)提供了唯一权威的上下文真相源。
  4. 硬性工程护栏与质量闭环底座
    • 在所有规范阶段中,ADR 是唯一直接接入 Git 提交硬门禁(/adr-guard on)的环节,确保团队在引入重大特性(feat:)或架构重构(refactor:)时,架构决策永不缺席。

与独立 ADR 治理体系 (adr-guard) 的协同关系

ADR 在工程化体系中具备双重身份:

  1. 独立架构治理底座 (adr-guard):独立运行 /adr new/adr supersede/adr tree/map/adr check/lint、单层扁平/三层分层模式,以及 Git 提交门禁 (/adr-guard on)。
  2. SDD 核心架构阶段 (/adr):作为 SDD 规范生命周期的第二阶段,自动继承 /prd 的需求作为决策依据,并作为 /plan 任务分解的技术架构基石。

SDD 作为「生命周期编排者」,而 adr-guard 作为「专业架构决策引擎」。日常单点技术改动可随时单独使用 /adr,大型特性开发则通过 SDD 四阶段获得全链路规格护航。


核心特性

1. 任意阶段起手

开发者可根据实际任务进展自由从任意阶段切入:

  • 从零构思新功能/新业务 → /prd <feature>
  • 评估系统架构决策与选型 → /adr <decision>
  • 架构明确,需要精细化任务排期 → /plan <feature>
  • 紧急修复或已有方案的单点实现 → 直接 /impl <task>

2. 交互式阶段流转提示 (Interactive Stage Transitions)

每个阶段完成时,系统会自动生成规范制品摘要,并通过交互式选项(如 ask_question 或选择菜单)主动询问开发者后续步骤:

  • 推荐下一阶段:如 /prd/adr/adr/plan/plan/impl
  • 自由跨阶段跳转:对于轻量需求,可直接从 /prd 跳转至 /impl
  • 回退与调整:在 /plan 阶段发现架构漏洞时,可随时回退到 /adr/prd
  • 停留在当前阶段:确认当前产物并结束流转。

3. 会话热上下文与磁盘冷制品的双重协同

推荐在同一个会话中连续流转 SDD 流程:

  • 会话内热上下文 (Hot Context):会话内保留了全部业务潜台词、细微约束与被否决方案(Rejected Alternatives),使得后续 /plan 任务拆解与 /impl 编码实现达到极限精准度,彻底消除割裂会话带来的认知断层与信息衰减。

4. 跨会话暂存与状态交接 (/sdd handoff)

当需要暂停开发、切换任务或会话 Context 过大时,可随时执行 /sdd handoff

  • 自动锁定当前阶段:准确记录当前完成的阶段(如 PRD/ADR 已完成,待执行 Plan)与制品链接。
  • 萃取隐式讨论认知:将未写入 Markdown 的被否决方案与约束打包存入 Git 忽略的项目目录(.opencode/handoffs/)。
  • 一键在新会话中无缝恢复:生成一条可直接复制粘贴的开场白(Read .opencode/handoffs/latest.md...),在新会话中以极简 Token 消耗满血继续流转。

指令速查表

指令说明对应产物目录
/prd [topic]创建或维护需求规格说明书docs/prd/<topic>.md
/adr [title]创建或废弃/替代架构决策记录docs/adr/
/plan [topic]创建分阶段实施任务计划docs/plan/<topic>.md
/impl [task]执行编码实现与自动化测试验证源码文件与测试套件
/sdd status检查项目内所有 SDD 规范制品清单主对话界面 / TUI
/sdd handoff [msg]暂存当前 SDD 状态与隐式上下文,供新会话接手.opencode/handoffs/
/sdd help显示 SDD 指南与帮助文档主对话界面 / TUI

基于 MIT 协议发布。