type
Post
status
Published
date
Apr 10, 2026
slug
VibeCoding-007
summary
OpenSpec
tags
Vibe Coding
category
Vibe Coding
icon
password
SDD 三大框架对比
1 三大框架核心信息
框架名称 | 定位标签 | 背景与适用场景 | 核心流程/特点 | 特性 |
OpenSpec | 最轻量 | Fission-AI (YC) 出品
三步工作流
适合 Brownfield(遗留项目)+ 轻量变更 | 聚焦「为什么做这个变更」(变更上下文) | ✅ /verify 三维验证
✅ Delta Spec 增量更新
✅ 24+ AI 工具 零锁定 |
spec-kit | 最完整 | GitHub 官方出品
四步流程
适合 Greenfield(全新项目)大型项目 | 聚焦「该构建什么」(规格说明) | ✅ Constitution 深度约束
✅ 项目级规则强制执行
✅ 完整需求→代码全流程 |
Superpowers | 最自动 | obra·Skills 框架
适合高质量交付场景 | 聚焦「代码写对了吗」(质量保证) | ✅ 自动 TDD 纪律性执行
✅ 行为驱动开发内置
✅ Skills 自动化流程 |
2 三框架核心差异(互补不互斥)
- OpenSpec:负责「为什么做这个变更」——管理变更上下文,适配遗留项目与轻量迭代
- spec-kit:负责「该构建什么」——管理规格说明,为大型新项目提供完整流程与约束
- Superpowers:负责「代码写对了吗」——管理质量保证,通过自动化流程保障交付质量


OpenSpec
OpenSpec 项目架构 & 工作流
核心定位:类 Git 逻辑,管理需求规格变更
1 项目架构(src/ 目录)
模块 | 核心内容 |
cli/ | Commander.js 命令行入口 |
commands/ | 命令实现层,封装子命令逻辑 |
core/(重点) | init.ts(29KB 核心文件)、archive.ts(归档+Delta 合并)、specs-apply.ts(Delta 合并算法)、Zod 验证、24 个 AI 工具适配器 |
prompts/ | AI 交互 Prompt 模板 |
schemas/ | 内置工作流 Schema 定义 |
核心文件速记:init 控核心流程、archive 管归档、specs-apply 是 Delta 算法核心
2 核心工作流(标准四步)
步骤 | 操作 | 核心作用 |
1 | openspec init | 初始化项目,检测并配置 AI 工具 |
2 | /opsx:propose | AI 生成提案(Why 变更原因+规格变更+任务清单) |
3 | /opsx:apply | 按任务清单,落地规格变更至代码 |
4 | openspec archive | Delta 合并入主规格,归档 Why/What/How 变更记录 |
3 两种工作流模式
模式 | 流程 | 特点 |
Core(默认) | propose → apply → archive | 3 步完成,简洁高效,适配常规迭代 |
Expanded | new → continue → apply → verify → archive | 5 步流程,支持精细控制,适配复杂变更 |
4 Delta 规格系统(类 Git diff)
变更类型 | 标识 | 核心说明 | 示例 |
新增 | ADDED | 新增需求条目(含 Given/When/Then 场景) | 导出 PDF 功能 |
修改 | MODIFIED | 调整已有需求 | 登录超时 30min→15min |
删除 | REMOVED | 废弃需求(历史完整归档) | 旧版 API 过渡至 v2 后不再维护 |
OpenSpec 安装 & 目录拆解
核心定位:三步安装,快速搭建 AI 协作基础设施
1 安装三步流程
步骤 | 操作 | 核心说明 |
1 | npm install -g openspec | 全局安装,要求 Node.js ≥ 20.19 |
2 | openspec init | 交互式生成项目目录结构 |
3 | config profile | 配置单/多命令,适配不同工作流 |
2 目录结构拆解(openspec/)
目录/文件 | 核心作用 |
config.yaml | 项目配置,主动注入每次请求 |
specs/ | 系统当前行为的完整描述(源真相) |
changes/ | 变更提案区,每个功能一个独立文件夹 |
🔗 Git 类比
- specs/ ≈ main 分支 — 「当前系统长什么样」
- changes/ ≈ feature 分支 — 每个功能独立开发
- archive ≈ merge — 归档时合并变更到主 Spec
3 命令 Profile 类型
类型 | 包含命令 | 特点 |
core profile | propose / apply / archive | 仅 3 个核心命令,简洁高效 |
custom profile | propose/apply / archive/verify / onboard/sync 等 | 共 11 个命令,支持更精细的流程控制 |
切换命令示例:
4 跨工具语法差异
工具 | 命令语法 | 说明 |
Claude Code | /opsx:propose | 冒号分隔 |
Cursor / Windsurf | /opsx-propose | 连字符分隔 |
所有工具 | 功能完全相同 | 仅语法形式不同,逻辑一致 |
config.yaml · 项目的「AI 宪法」
核心定位:替代传统project.md,以 主动注入 替代 被动读取,保障 AI 协作确定性
1 为什么用 config.yaml?
对比项 | 旧方案(project.md) | 新方案(config.yaml) |
读取机制 | 被动读取,AI 可能读不到 | 主动注入,100% 生效,无遗漏 |
稳定性 | 不确定(读/不读全看 AI) | 100% 稳定,强制注入每个请求 |
定位 | 文档参考 | AI 协作核心配置(项目的“宪法”) |
2 三层结构(从基础到核心)
层级 | 作用 | 特点 |
schema | 定义工作流类型 | 基础配置,一般不改 |
context | 全局上下文,核心层 | 极度精炼,主动注入每个请求 |
rules | 格式规则约束 | 按 artifact 类型分层(proposal/specs/design/tasks 各有标准) |
3 context 三铁律(核心准则)
原则 | 核心要求 | 目的 |
✅ 极度精炼 | 只写 AI 不知道的项目特殊约定;通用最佳实践不用写 | 减少 token 消耗,避免冗余 |
✅ 活文档 | AI 忽略了就加,膨胀了就剪 | 始终保持精炼、有效 |
✅ 超 10 行审视 | context 每字都是 token 成本 | 控制长度,优化性能 |
4 核心结论
主动注入 > 被动读取 context 每一字节都是 token 成本 → 精炼是优化性能的第一步
CLAUDE.md 分阶段交互
核心目标:通过分阶段控制,防止 AI 「错上加错」,大幅降低修复成本
1 核心规则
在
CLAUDE.md 中写明交互规则:每完成一个 Phase → 暂停总结 → 等待用户确认 → 再继续下一个阶段
2 两种交互模式对比
对比项 | 无分阶段规则(AI 默认行为) | 有分阶段规则(CLAUDE.md 控制) |
执行逻辑 | AI 一口气写完所有 Phase,追求快速交付 | 每完成一个 Phase 必须暂停,先总结变更,等待确认再继续 |
偏差处理 | Phase 1 出现理解偏差后,后续阶段在错误上继续堆叠 | Phase 1 完成即可发现偏差,仅需修正约 50 行代码,损失最小 |
问题暴露时机 | 写 500-1000 行代码后,才发现方向根本错误 | 偏差早期暴露,可立即调整方向,后续阶段在正确基础上推进 |
修复成本 | 极高,几乎等于全部重写 | 极低,仅需修正少量代码,避免大规模返工 |
核心效果 | 错上加错,越走越偏 | 小步快跑,精准迭代,全程可控 |
3 关键结论
- 分阶段控制是 AI 协作的“刹车”,能把错误扼杀在早期阶段
- 修复成本差异巨大:50 行 vs 1000 行,本质是「小修小改」和「推倒重来」的区别
CLAUDE.md规则的核心,就是强制 AI 进入「暂停-确认-继续」的循环,避免一次性写死
OpenSpec 三步核心工作流 + 四件制品
核心目标:用「先设计、后编码」的方式,把返工时间压到最低
1 完整工作流(含可选步骤)
- 关键节点:
propose阶段生成全部四件制品,是整个流程的核心输入
2 四件制品详解(核心交付物)
制品 | 定位 | 核心内容 |
proposal.md | 为什么做 | 意图:变更要解决的问题<br>范围:影响的模块<br>方法:大致实现思路<br>out-of-scope:明确不做什么,防止 AI 越界 |
specs/ | 做什么 | Delta Spec 格式(只写变化部分):<br>• ADDED 新增需求<br>• MODIFIED 修改已有需求<br>• REMOVED 删除需求<br>(不重写整个文件,是 OpenSpec 高效的关键) |
design.md | 怎么做 | 技术方案选型<br>架构决策及理由<br>数据流描述<br>涉及的文件清单 |
tasks.md | 执行清单 | 带 checkbox 的分阶段任务<br>按 Phase 分组,每个 Phase 有验证步骤<br>AI apply 时逐个标记 [x]<br>checkpoint 防止 AI 跑偏 |
3 效率对比:直接写代码 vs OpenSpec 流程
方式 | 时间投入 | 结果 |
直接写代码 | 2h 编码 + 1h 返工 = 3h ❌ | 返工成本高,方向错误代价极大 |
OpenSpec 流程 | propose 5min + review 10min + apply 1.5h + verify 5min ≈ 2h ✅ | 省的不是编码时间,是返工时间 |
4 核心认知
propose不是写代码,而是交出设计方案给你审查
- 审查几十行的设计,比审查几百行的代码容易 10 倍
- 上游花 10 分钟打磨 proposal,能省下下游 2 小时返工
- 工程实践:先结构化需求 + 总结架构,再进行 propose
out-of-scope 关键点 & Review 不可跳过
核心原则:明确“不做什么” + 严格执行评审,杜绝 AI 越界与返工
1 AI 的「善意」陷阱
场景 | 风险表现 | 核心逻辑 |
需求不完整 | 只要求导航栏,AI 顺带引入动画库、搜索功能 | AI 会基于“善意”补充未明确需求 |
后果 | 功能溢出,偏离预期 | 未声明“不做什么”,AI 无法判断边界 |
关键认知 | 告诉 AI「不做什么」,和告诉它「做什么」同等重要 | 双向定义才能精准控制范围 |
2 out-of-scope 实操
操作 | 具体示例 | 效果 |
在 proposal.md 中明确写出「不做」清单 | ✅ 不做动画效果<br>✅ 不做搜索功能<br>✅ 不接入后端 API | AI 严格遵守,绝不越界,100% 可控 |
3 Review 不可跳过
环节 | 内容 | 成本对比 |
时机 | propose 阶段之后 | - |
审查对象 | 「设计方案」(几十行),而非直接看代码(几百行) | 设计评审成本远低于代码返工 |
耗时 | 仅需 5-10 分钟 | - |
价值 | 发现问题 → 改设计方案,成本极低 | 避免后续生成 1000 行错误代码的大规模返工 |
核心结论 | 越早发现问题,修改代价越小 | 本质是“止损”,而非节省时间 |
4 反模式 #2:跳过提案打磨,直接 apply
反模式 | 形象类比 | 后果 |
不做 propose 和 review,直接执行代码生成 | 不看建筑图纸直接开工 | 最常见的反模式,代价最高,必然返工 |
5 完整 OpenSpec 闭环
完整 OpenSpec = in-scope 清单 + out-of-scope 清单 + review 通过 → AI 精准执行,绝不越界
/opsx:verify 三维验证 · 一页速记清单
核心定位:事后验证(代码写完后),通过 3C 模型查漏补缺,确保交付质量,而非“唯一防线”
1 三维验证框架(3C Model)
维度 | 核心问题 | 检查要点 |
Completeness(完整性) | 所有任务完成了吗?需求都有对应代码吗? | ✅ 全任务 Check 状态<br>✅ 全需求覆盖代码实现 |
Correctness(正确性) | 实现匹配规格意图吗?边界条件处理了吗? | ✅ 实现与 Spec 一致<br>✅ 边缘场景已处理 |
Coherence(一致性) | design.md 方案在代码中体现了吗?命名一致吗? | ✅ 代码落地设计方案<br>✅ 命名/结构无冲突 |
2 真实输出样例
3 输出三级判定
等级 | 定义 | 处理策略 |
CRITICAL(必须修复) | 阻断归档的致命问题 | 必须修复,否则无法归档 |
WARNING(建议修复) | 不阻断归档的潜在风险 | 建议修复,不强制阻断 |
SUGGESTION(锦上添花) | 优化建议,非硬性要求 | 按需采纳,提升质量 |
4 关键认知与边界
🚨 啊哈时刻
- AI 跑完
apply可能自认“搞定”,但/opsx:verify能快速暴露WARNING
- 验证的核心价值:在“以为做完”的瞬间,用规范判定实际未完成
🆚 与 /analyze 的区别
命令 | 阶段 | 定位 | 关系 |
/opsx:verify | 事后验证 | 代码写完后,校验交付物 | 两者互补,不替代 |
/opsx:analyze | 事前检查 | 文档/提案阶段,预排风险 | ㅤ |
5 核心原则
- verify 不阻止归档:即使存在
WARNING,用户仍可选择归档,拥有最终决定权
- 第一道防线:
verify是质量把关的首要环节,但不是唯一防线
- 省返工:通过早期校验,把问题扼杀在归档前,降低后期维护成本
Delta Spec——只写变化,不重写整个需求
1 全量 Spec vs Delta Spec 对比
方式 | 操作 | 缺点 |
❌ 全量 Spec | 每次改需求都要重读整个 spec 文件、重写全部章节内容 | AI 需处理大量 token,容易「丢东西」 |
✅ Delta Spec | 每个 change 只描述自己的变化,spec 文件很小 | AI 精准处理,不容易「丢东西」 |
2 Delta Spec 三种变更类型
ADDED:新增需求
MODIFIED:修改已有需求
REMOVED:删除需求
实操场景示例
以
add-projects-section 变更为例:ADDED: 新增 Projects 展示区域
MODIFIED: Hero CTA 按钮锚点改为跳转 → #projects
3 归档行为
ADDED:追加到主 spec
MODIFIED:替换对应部分
REMOVED:从主 spec 删除
4 为什么高效
- 每个 change spec 文件很小 → AI token 消耗少
- 不容易「丢东西」
- 精准聚焦当前变化
5 MODIFIED vs 新建 spec 决策规则
- 扩展已有模块 → 使用
MODIFIED
- 全新业务域(首次) →
ADDED新文件
- 判断依据:主 spec 里有没有对应内容?
6 核心结论
每个 Delta Spec 文件只有变化部分 → AI 精准聚焦 → 不丢需求,不错改
项目:开发一个可部署的个人品牌站
OpenSpec SDD 驱动开发工作流
模版
config.yaml
CLAUDE.md
初始项目环境搭建+ OpenSpec 初始化
Step 1 全局配置 OpenSpec
Step 2 创建前端项目脚手架
Step 3 配置 OpenSpec 的 宪法
Step 4 创建项目宪法(CLAUDE.md)
Change 1 :开发品牌站的 Hero-Section
Step 5 使用 Open Spec 的探索模式
/opsx:explore
Step 6 确定 Change 1的 提案
Step 7 开始分阶段执行Change 1的 代码生成
Step 8 针对 Change 1的apply 结果进行三维校验
Step 9 针对 Change 1 完成Spec归档
Change 2 :开发品牌站的 navigation
Step 10 确定 Change 2的 提案
Step 11 确定 Change 2的 提案并开始构建代码!
加快节奏
Step 12 针对 Change 2的apply 结果进行三维校验
Step 13 针对 Change 2 完成Spec归档
Change 3 :OpenSpec Delta Spec 的功能标记
Step 14 Change 3 提案 并 测试 修改的功能标记
Step 15 一次性完成 Change 3 的所有变更流程
Step 16 针对 Change 3 完成Spec归档
Change 4 : 配置 About Section + SEO优化 + 部署上线
Step 17 Change 4 继续丰富个人品牌站
Step 18 Change 4 添加网站的 SEO优化策略
Step 19 单次执行多步的提案文件
Step 20 个人品牌站部署上线

项目升级-全栈
项目初始化,OpenSpec 配置
Step 1 切换 OpenSpec 的配置模式
📎 参考文章
- 一些引用
- 引用文章
欢迎您在底部评论区留言,一起交流~
Loading...
