|
AI 编码助手越来越强,但"写代码"从来不是软件开发最难的部分——写对代码才是。
当我们把需求丢给 AI,它能秒出几百行代码,但这些代码真的是我们想要的吗?它符合设计意图吗?有没有超出范围?有没有遗漏场景?
如果没有一套规范驱动的工作流来约束 AI 的行为,"AI 写代码"很容易变成"AI 制造技术债"。
本文介绍两个解决这个问题的框架:OpenSpec 和 Superpowers。它们都属于 SDD(Spec-Driven Development,规范驱动开发) 的实践——先写规范,再写代码,用规范约束 AI 的每一步行为。
什么是规范驱动开发(SDD)
传统的 AI 辅助编码是这样的: - 用户描述需求 → AI 直接写代码 → 用户检查代码 → 发现不对 → 重来
复制代码SDD 的思路完全不同: - 用户描述需求 → 生成规范文档(提案/设计/规格/任务) → AI 按规范实现 → 按规范验证
复制代码核心理念只有一句话:先想清楚再动手,用文档约束行为,用验证确保正确。
下面分别看两个框架是怎么落地这个理念的。
OpenSpec — 规格驱动的变更管理
OpenSpec 是 CodeMaker 内置的结构化开发工作流框架,核心思想是每次变更都有完整的设计文档可追溯。它不是一个独立工具,而是嵌入在 AI 编码助手中的一套工作流规范。
2 核心概念:Artifact 链
OpenSpec 的核心是一条 Artifact 依赖链,每个 artifact 都是前一个的细化: - proposal.md → design.md → specs/*.md → tasks.md → 代码实现 → 归档
- (为什么做) (怎么做) (做成什么样) (分几步做) (动手做) (存档)
复制代码每个 artifact 的职责:
| Artifact | 职责 | 核心内容 |
| proposal.md |
变更提案 |
为什么做、目标/非目标、影响范围 |
| design.md |
设计决策 |
技术方案选择、替代方案对比、风险评估 |
| specs/*.md |
需求规格 |
Requirements + Scenarios(WHEN/THEN) |
| tasks.md |
任务清单 |
可执行的 checkbox 任务列表 |
2 工作流程
OpenSpec 提供了一组命令来驱动整个流程:
| 命令 | 作用 | 说明 |
/opsx:explore |
探索模式 |
自由思考,不写代码,只讨论 |
/opsx:propose |
提案 |
生成 proposal + 后续 artifacts |
/opsx:ff |
快速通道 |
一次性生成所有 artifacts |
| /opsx:apply |
实现 |
逐 task 实现代码 |
/opsx:verify |
验证 |
对照 artifacts 检查实现 |
| /opsx:archive |
归档 |
归档完成的变更 |
3 典型使用流程
以"启动时检查并拉起后台服务"为例:
第一步:快速生成所有 artifacts - /opsx:ff 启动时检查并拉起 UniCloudService 后台服务
复制代码AI 会自动生成:
proposal.md — 阐述为什么需要这个变更
design.md — 技术方案:复用 ServiceUtils、启动失败不阻塞
specs/unicloud-service-startup/spec.md — 4 个场景(未注册/已运行/未运行/启动失败)
tasks.md — 3 个可执行任务
第二步:开始实现 AI 逐个 task 实现代码,每个 task 完成后自动对照 specs 验证。
第三步:归档 变更归档到 openspec/changes/archive/2026-03-25-start-unicloud-service/,形成可追溯的变更历史。
4 Spec 管理体系
OpenSpec 最独特的设计是主 spec + delta spec 体系: - openspec/
- ├── specs/ # 主 specs(项目级知识库)
- │ └── disk-mount/spec.md
- │
- └── changes/ # 变更目录
- ├── start-unicloud-service/ # 活跃变更
- │ ├── proposal.md
- │ ├── design.md
- │ ├── specs/ # delta specs(变更级)
- │ │ └── unicloud-service-startup/spec.md
- │ └── tasks.md
- │
- └── archive/ # 已归档变更
- └── 2026-03-25-start-unicloud-service/
复制代码每次变更产生 delta spec,归档时同步到主 spec,形成项目级规格知识库。
Superpowers — 多代理协作的完整开发工作流
Superpowers 是由 Jesse Vincent 开发的开源项目,为 AI 编码代理提供一套完整的软件开发工作流。它支持 Claude Code、Cursor、Codex、Gemini CLI 等多个平台,核心特色是子代理驱动开发和强制 TDD。
1 核心概念:Skills 组合
Superpowers 由一组可组合的 Skills 构成,每个 skill 是一份 Markdown 格式的指令文件,定义了 AI 在特定阶段应该做什么。
| 类别 | Skills | 职责 |
| 协作 |
brainstorming |
苏格拉底式对话,提问 → 方案对比 → 设计文档 |
| 规划 |
writing-plans |
拆分为 2-5 分钟的 bite-sized tasks |
| 执行 |
subagent-driven-development |
每个 task 派遣独立子代理实现 |
| 测试 |
test-driven-development |
强制 RED-GREEN-REFACTOR 循环 |
| 审查 |
requesting-code-review |
两阶段审查:Spec 合规 → 代码质量 |
| Git |
using-git-worktrees |
隔离工作空间 + 基线验证 |
| 收尾 |
finishing-a-development-branch |
合并 / PR / 保留 / 丢弃 |
2 工作流程
Superpowers 的完整流程如下: - brainstorming 苏格拉底式对话,逐个提问,输出设计文档
- ↓
- using-git-worktrees 创建隔离工作空间,验证编译基线
- ↓
- writing-plans 拆分为 bite-sized tasks(每步 2-5 分钟)
- ↓
- subagent-driven-dev 每个 task 派遣子代理:
- ├── Implementer 子代理(实现 + 自审查)
- ├── Spec Reviewer 子代理(合规审查)
- └── Code Quality Reviewer 子代理(质量审查)
- ↓
- finishing-branch 收尾:合并 / 创建 PR / 保留 / 丢弃
复制代码3 子代理驱动开发(核心特色)
这是 Superpowers 最核心的设计。每个 task 的执行过程: - Controller(编排者)
- │
- ├─→ 派遣 Implementer 子代理
- │ ├── 提问(如有疑问)
- │ ├── 实现代码
- │ ├── 写测试(TDD)
- │ ├── 自审查
- │ └── 报告状态:DONE / DONE_WITH_CONCERNS / BLOCKED / NEEDS_CONTEXT
- │
- ├─→ 派遣 Spec Reviewer 子代理
- │ └── 对照 plan 逐条检查:做对了吗?
- │ ├── ✅ 通过 → 继续
- │ └── ❌ 问题 → Implementer 修复 → 重新审查
- │
- └─→ 派遣 Code Quality Reviewer 子代理
- └── 审查代码质量:做好了吗?
- ├── ✅ 通过 → 标记完成
- └── ❌ 问题 → Implementer 修复 → 重新审查
复制代码关键设计:每个子代理拥有独立的上下文。Controller 精确裁剪传递给子代理的信息,避免上下文污染。这是"多代理"比"单代理"质量更高的根本原因。
4 强制 TDD
Superpowers 在 Plan 阶段就把 TDD 写进每个 step: - - [ ] Step 1: 写失败测试
- - [ ] Step 2: 运行确认失败
- - [ ] Step 3: 写最小实现代码
- - [ ] Step 4: 运行确认通过
- - [ ] Step 5: 提交
复制代码如果 Implementer 子代理没有先写测试就开始写代码,Spec Reviewer 会直接拒绝。
5 两阶段审查
每个 task 完成后,强制经过两轮独立审查:
| 阶段 | 审查者 | 关注点 | 输出 |
| 第一阶段 |
Spec Reviewer |
做对了吗?需求覆盖、场景遗漏、过度实现 |
✅ / ❌ + 具体问题 |
| 第二阶段 |
Code Quality Reviewer |
做好了吗?代码质量、架构、安全、测试 |
Critical / Important / Minor 分级 |
阶段 2 必须在阶段 1 通过后才能开始。如果代码做的事情本身就不对,审查代码质量没有意义。
OpenSpec与SuperPowers的对比
| 维度 | OpenSpec | Superpowers |
| 一句话定位 |
规格驱动的变更管理框架 |
多代理协作的完整开发工作流 |
| 核心理念 |
先写 Spec 再实现,变更可追溯 |
先设计再编码,TDD + 子代理分工 |
| 哲学 |
Proposal → Design → Spec → Tasks |
Brainstorm → Plan → TDD + Subagent → Review |
| 侧重点 |
决策追溯 + 知识积累 |
执行质量 + 自动化审查 |
1 流程对比 - OpenSpec: explore → proposal → design → specs → tasks → apply → verify → archive
- Superpowers: brainstorming → git-worktree → writing-plans → subagent-dev → finishing-branch
复制代码
| 阶段 | OpenSpec | Superpowers |
| 探索/需求 |
explore + proposal |
brainstorming(苏格拉底式一问一答) |
| 设计 |
design.md(Decisions 记录) |
融合在 design doc 中 |
| 规格 |
独立 specs/ 目录,有 delta/主 spec 同步 |
无独立 spec,融合在 design doc 中 |
| 任务拆分 |
tasks.md(功能粒度) |
Plan(2-5 分钟/step,含完整代码) |
| 实现 |
单代理逐 task 实现 |
子代理隔离实现 + 两阶段审查 |
| 测试 |
不强制 TDD |
强制 TDD(RED-GREEN-REFACTOR) |
| 审查 |
自审查 checklist |
独立子代理审查(上下文隔离) |
| Git |
不强制分支策略 |
强制 git worktree 隔离 |
| 收尾 |
archive(归档 artifacts) |
finishing-branch(合并/PR/丢弃) |
2 核心能力差异
① 子代理 vs 单代理
| | Superpowers(子代理) | OpenSpec(单代理) |
| 执行模式 |
Controller + Implementer + Reviewer × 2 |
同一个 AI 全程负责 |
| 上下文 |
每个子代理独立上下文,精确裁剪 |
共享上下文,长对话可能漂移 |
| 审查客观性 |
高(审查者没有"我写的"心理包袱) |
中(需要角色切换来模拟) |
| 平台依赖 |
需要支持子代理派遣(Claude Code 等) |
任何 AI 助手均可 |
② Spec 管理
| | OpenSpec | Superpowers |
| 独立 Spec 体系 |
✅ 主 spec + delta spec + 同步 |
❌ 无独立 spec,融合在 design doc |
| 长期积累 |
specs 按 capability 组织,可查询 |
plan/design 平铺在 docs 目录 |
| 变更追溯 |
archive 按日期归档,含完整 artifacts |
依赖 Git 历史 |
③ 测试策略
| | Superpowers | OpenSpec |
| TDD |
强制:写失败测试 → 运行 → 实现 → 运行 → 提交 |
不强制,以编译通过和行为验证为准 |
| Plan 中的测试 |
每个 step 包含完整测试代码 |
tasks 中不含测试代码 |
3 适用场景
| 场景 | 推荐 | 原因 |
| 全新项目 / 绿地开发 |
Superpowers |
TDD + worktree + 子代理,端到端自动化 |
| 大型企业项目改动 |
OpenSpec |
spec 追溯 + 变更归档,适合团队 review |
| 需要长期维护 specs |
OpenSpec |
主 spec + delta spec + 同步 + 归档 |
| 有严格测试要求 |
Superpowers |
内置 TDD 强制 |
| 不支持子代理的平台 |
OpenSpec |
天然单代理模式 |
| 多代理协作环境 |
Superpowers |
核心设计就是子代理驱动 |
总结
| 维度 | OpenSpec | Superpowers |
| 核心优势 |
Spec 驱动 + 变更追溯 + 知识积累 |
子代理隔离 + TDD 强制 + 自动化审查 |
| 核心劣势 |
无 TDD 强制、无子代理、无 git 集成 |
平台依赖强、token 开销大、无 spec 管理 |
| 一句话 |
"让每次变更都有设计文档可追溯" |
"让 AI 代理像有纪律的开发团队一样工作" |
两者解决的问题有重叠但侧重不同:Superpowers 侧重执行质量(通过子代理 + TDD + Review 保证代码正确),OpenSpec 侧重决策追溯(通过 artifact 链 + spec 管理保证设计可查)。
它们不是竞争关系,而是互补关系。最佳实践是:用 OpenSpec 做 spec 管理和变更追溯,从 Superpowers 中提取审查 SDD 强化Spec文件合规审查,约束 AI 可能的幻觉 - 唐宋元明清2188 - 博客园 和 worktree 能力增强执行质量。毕竟,规范编程的终极目标只有一个——让 AI 写的每一行代码,都有据可查、有规可循。
以上就是关于 OpenSpec 和 Superpowers 两种 SDD 框架的介绍与对比。如果你正在使用 AI 辅助开发,不妨试试用规范来约束 AI 的行为——你会发现,花在设计上的时间,会在实现阶段成倍地省回来。
出处:http://www.cnblogs.com/kybs0/
让学习成为习惯,假设明天就有重大机遇等着你,你准备好了么
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |