在 OpenSpec 的规范驱动开发SDD体系中这四个概念共同构成了项目规范从“动态提案”到“静态生产事实”的精密闭化循环。以下是它们的深层原理解析1. Schema 模板系统Schema TemplatesOpenSpec 的模板系统是为了确保不管是人写的还是 AI 生成的规范都具备绝对一致的结构。AI 极容易在自由格式下放飞自我模板系统就是它的“防走偏轨道”。如何使用集中存放初始化后在openspec/templates/或其脚手架内部会定义系统级的 Markdown 模板如proposal.template.md、design.template.md、spec.template.md。强制生成占位当运行/opsx:propose时系统不允许 AI 随意涂鸦而是强制读取对应的模板将用户输入的需求作为上下文注入生成带有固定 Slot插槽的文件。元数据校验Frontmatter模板顶部通常带有 YAML 格式的 Frontmatter元数据例如---id:change-add-2fatitle:支持双因子认证status:proposingcapabilities_affected:[auth]---AI 在后续更新状态时必须修改这些元数据OpenSpec 的 CLI 核心会解析这些 YAML 来维持整个系统状态机的运转。2. verify-change 与 archive 的过程这是变更从“代码实现”到“准备上线”的两个核心控制关卡。verify-change验证变更在 AI 按照tasks.md完成代码编写后必须证明“代码符合规范且没有破坏现有系统”。verify-change的过程是自动化的规范对齐校验检查当前的tasks.md确保所有原子任务都已处于已勾选状态[x]。自动化测试套件调用配置好的本地测试命令如npm run test或pytest。类型与编译检查确保没有引入 Lint 错误或编译失败如tsc --noEmit。增量规范有效性验证隔离区内的 Delta Specs 格式是否正确是否存在未填写的必填项。archive归档一旦verify-change亮起绿灯即可执行archive。它的过程是将开发分支的规范记忆固化进主干触发同步隐式调用sync-spec见下文逻辑将隔离区中的规范成果合并到全局。清理/冻结现场将openspec/changes/change-id/目录移动到.openspec/archive/历史归档区或者根据配置直接清理从而保证changes/目录只有当前正在活跃的变更彻底清除干扰 AI 的上下文垃圾。3. sync-spec 的具体逻辑sync-spec是 OpenSpec 内部最核心的文档合并引擎。它解决的核心冲突是当你在局部修改了某个规范时如何安全地把它放回全局的“单一事实来源Source of Truth”它的具体逻辑采用的是类似于 Git 合并的三方合并3-Way Merge思想[全局原始规范 Base] ─── (新需求启动) ───► [Delta Spec 隔离区修改] │ │ (他人并发修改提交) │ (执行 sync-spec) ▼ ▼ [全局当前规范 Latest] ◄──────────────────────────────┘ │ ▼ [最终合并规范] (解决冲突/追加/覆盖)寻找 Base 基线读取该 Change 启动时从全局specs/复制过去的原始规范快照。计算 Delta 差异对比隔离区中当前的specs/和当时的 Base找出你究竟改了哪些行、删了哪些规则、加了哪些接口。安全应用到 Latest将这些差异应用到全局现有的openspec/specs/中。无冲突直接合入或覆盖。有冲突即在你开发期间有队友改了同一个模块的全局规范OpenSpec 会报出冲突并召唤 Claude 介入“检测到全局规范已被更新请结合当前变更的意图重新合并这部分规范描述。”4. Delta Spec增量规范的原理Delta Spec 是 OpenSpec 能够支持多任务并发、且不让 AI 上下文过载的底层基石。痛点问题如果直接让 AI 边写代码边去改全局的openspec/specs/auth/spec.md一旦同时开了两个特性分支全局规范就会陷入混乱。而且大模型带着几万字的全局文档去写代码很容易出现注意力漂移Lost in the middle。核心原理Delta Spec 采用“局部快照 差异追踪”的沙盒机制沙盒隔离Sandbox当你为新功能 A 创建 Change 时OpenSpec 只把受影响的那个模块的全局规范例如auth/spec.md拷贝一份到openspec/changes/feature-A/specs/auth/spec.md。增量专注在接下来的 Apply 阶段Claude 的上下文里只拥有这份局部的、被裁剪过的规范拷贝。它只需要关注当前特性对该模块造成的“增量改变Delta”。延迟生效Claude 在写代码时所有的规范修改都沉淀在这个局部文件夹中。它就像 Git 的功能分支Feature Branch一样在最终archive之前绝对不会污染主分支的openspec/specs/全局真理库。