# 从 OpenSpec 到 OpenSpec × Superpowers:一套让 AI 编码流程"长出肌肉记忆"的工作流

312 阅读13分钟

从 OpenSpec 到 OpenSpec × Superpowers:一套让 AI 编码流程"长出肌肉记忆"的工作流

TL;DR

  • 单用 OpenSpec 只能保证"规格存在",但从规格到代码并行开发测试纪律质量兜底都是真空地带。
  • 把 Superpowers 的 brainstorming / writing-plans / subagent-driven-development / test-driven-development / code-reviewer 嵌进 OpenSpec 的建档 → 归档骨架,得到一条从想法到归档的 7 阶段流水线
  • TDD 不再是"写完代码补几个测试"的事后行为,而是三层嵌入(契约 / 实现 / 集成)贯穿全流程。
  • 对比单用 OpenSpec:规格覆盖率并行效率测试可追溯性Review 严谨度 全面升级。

一、起点:一个真实困境

01-dilemma.png

如果你用过 OpenSpec(或类似的 spec-driven 工具)配合 AI 编码,大概率遇到过这些痛点:

  1. 规格写完,AI 写代码却不看规格
    proposal / design / tasks 四份工件写得整整齐齐,但真到写代码的时候,AI 只看了一眼 tasks.md 就开干,具体实现偏离 design 里的决策。

  2. 多任务不知道怎么并行
    明明 tasks.md 里有 6 条独立任务,AI 只会一条一条串行做,耗时 10 分钟的活干了 40 分钟。

  3. 测试永远是"事后补"
    实现完了才问"要不要写测试?"——于是测试成了给已经写好的代码做确认,而不是驱动开发。

  4. Review 靠主会话瞄一眼
    没有独立的 review pass,主会话既当裁判又当运动员,质量问题容易漏。

  5. 归档时发现对不上
    代码写了一堆,回头翻 tasks.md,有一半任务其实没做或做了没勾选;specs/ 里的基线规格也没同步。

这些问题都不是 OpenSpec 的错——OpenSpec 的定位是"规格管理",它管好了自己那一段。但规格和代码之间的这段"施工"才是最容易翻车的地方。


二、破局思路:让规格、计划、开发、质量各司其职

02-division.png

这套流程的核心观念:每个环节用最擅长它的工具,工具之间用明确的"工件"衔接

环节最擅长的工具产出的工件
探索需求、定设计方向superpowers:brainstormingdocs/superpowers/specs/<date>-<topic>-design.md
调研旧代码、澄清需求/opsx:explore探索结论(写入 change 前置备忘)
建档、生成四份工件/opsx:proposeopenspec/changes/<name>/{proposal,design,specs,tasks}.md
写实施计划superpowers:writing-plansdocs/superpowers/plans/<date>-<topic>-plan.md
并行开发独立任务superpowers:subagent-driven-development多个子 agent 返回的实现代码
单文件高内聚逻辑superpowers:test-driven-development先测后码的实现
自动化验证superpowers:verification-before-completion测试 / lint / 构建证据
代码审查code-reviewer 子代理P0/P1 必修清单
归档/opsx:verify/opsx:archive归档后的 specs + CHANGELOG

关键设计:这些工具之间通过工件引用串联——后一环节读前一环节的产物,不靠主会话把内容复制粘贴过来。这样 AI 上下文再长也不会丢失信息链。


三、完整流程:7 阶段拆解

03-pipeline.png

🟠 Phase 1:入口选择(并行双入口)

            需求 / 想法
                │
       ┌────────┴────────┐
       │                  │
  [新功能?]           [旧代码?]
       │                  │
       ▼                  ▼
superpowers:       /opsx:explore
brainstorming

为什么需要两个入口?
brainstorming 偏"设计新功能",强项是从零探索方案、对比权衡、定稿设计。
opsx:explore 偏"理解现有系统",强项是读代码、梳理既有架构、澄清模糊需求。

两者不是互斥的——复杂改造可以先 brainstorm 定方向,再 explore 挖代码

通用纪律(两个入口都要遵守):

  • 逐个提问:不要一次抛 5 个问题让用户晕,问完一个等用户答完再问下一个
  • ✅ / ⏳ 标注机制:用户已确认的打 ✅ [已确认],识别出但未确认的打 ⏳ [待确认]
  • 结束前不能有 :所有疑问必须由用户拍板

这套机制能让需求模糊的改造也能收敛到一个清晰的起点。

🔵 Phase 2:建档(OpenSpec 工件生成)

/opsx:propose "add-douyin-material-selection"

一步生成 4 份工件:

工件回答什么
proposal.mdWhy / What(为什么做、影响哪些模块)
design.md关键技术决策与权衡(浓缩版)
specs.md规格 Scenario(WHEN / THEN,QA 可执行)
tasks.md任务清单 + 🧪 验收契约(TDD 第 1 层)

🔑 重要改进:tasks.md 的每条任务必须附验收契约

什么是验收契约?就是 1-3 句 SHALL / MUST 断言,写清这条任务"做完算做完"的判定标准。例:

- [ ] **任务 A.2**:在 `src/api/material/index.js` 新增 `fetchMaterialList` 方法
  - **验收契约**    - MUST 返回 `{ list, total }` 结构
    - SHALL 支持 `page_info` 分页参数(`page``page_size`    - MUST 在 `status_code !== 1` 时 throw 并带错误消息

这条契约就是 TDD 的第 1 层——实现者拿到任务第一件事,不是写代码,而是按契约写测试。

🟢 Phase 3:写实施计划(可跳过)

superpowers:writing-plans  # 读 tasks.md,产出 plan.md

plan.mdtasks.md 有本质区别:

文件回答什么类比
tasks.md做什么 + 验收契约 + 完成状态施工合同
plan.md怎么做 + Phase 划分 + 派单策略 + 检查点施工图

合同定义交付物,施工图定义怎么造——这是一个软件工程里常见的分层。

逃生口:如果是"单文件改个 bug"这种极简变更(≤3 任务且无并行),可以跳过 plan,直接按 tasks.md 串行执行。不是所有变更都需要施工图。

🟢 Phase 4:开发阶段(并行 + 串行混合)

这是整条流水线最耗时收益最大的阶段。分两步走:

4a. 创建 worktree
superpowers:using-git-worktrees

整个 change 共享一个 worktree,所有子 agent 在同一分支工作——不为每个子 agent 开独立 worktree。理由:

  • git 历史清晰(一条分支 = 一个 change)
  • merge 成本低(无需跨分支合并)
  • 并发冲突可控(主线做协调)
4b. 按 plan 逐 Phase 派单

根据 plan.md 的 Phase 分类,选不同派单方式:

Phase 类型特征派单方式
独立纯函数 / 重命名 / 文件迁移无共享状态,可并行superpowers:subagent-driven-development
单文件高内聚逻辑需整体思考主线 superpowers:test-driven-development
手工 e2e 验证需浏览器/人工主线,截图归档

🔑 TDD 第 2 层嵌入:每个任务内部都走 TDD 循环——

写单元测试(按 tasks.md 的验收契约)
    → 跑测试 → 红(期待失败)
    → 写实现代码
    → 跑测试 → 绿(期待通过)
    → 重构(可选)

🔑 tasks.md 状态更新规则

  • 并行子 agent 不直接写 tasks.md——避免多个 agent 同时改同一个文件导致 git 冲突
  • 子 agent 返回完成报告主线在接收后统一勾选 - [ ]- [x]

这是从无数次并发冲突翻车经验里总结出的铁律。

🟣 Phase 5:验证(机器检查)

superpowers:verification-before-completion

🔑 TDD 第 3 层嵌入:跨模块集成测试 + lint + 构建 + 手工 e2e(截图归档)。

核心原则:有证据才算通过。不是说"测试应该都过了吧?",而是真的跑一次把输出贴出来。

🟣 Phase 6:Code Review(独立审查 pass)

派 code-reviewer 子代理 → 全量 review

为什么要独立的 review pass?

写作者和审稿人不能是同一个人——不然你写的 bug 你一定看不出来。

主会话刚写完代码,大脑里全是"这样写对"的假设。换一个无上下文的 code-reviewer 子代理从零看代码,能发现主线盲区。

P0 / P1 必修:严重问题必须修,修完回 Phase 5 重跑验证。
高危变更(认证、核心 request、大跨模块)额外在关键 Phase 做轻 review

⚪ Phase 7:归档

/opsx:verify     # 确认 tasks 全勾选、代码与 specs 对齐
/opsx:archive    # change 入 archive,specs 同步,CHANGELOG 追加

归档条件

  • tasks.md 全部 - [x]
  • delta specs 已同步到 openspec/specs/
  • openspec/CHANGELOG.md 已追加本次记录

不满足任何一条都不能归档。


四、TDD 的三层嵌入:为什么这么设计

04-tdd-layers.png

很多人把 TDD 理解成"先写测试再写代码",然后在流程里开辟一个"TDD 阶段"放在派单前或派单后——这是对 TDD 最大的误解

TDD 是贯穿全流程的纪律,不是某一个节点。它在这套流程里分成三层

┌─────────────────────────────────────────────────────────┐
│ 第 1 层|契约层(Phase 2 建档时)                        │
│   在 tasks.md 写清每条任务的"做完的判定标准"             │
│   → 接口签名、边界条件、预期断言                         │
│   → 类比:还没施工,先把验收单写好                       │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│ 第 2 层|实现层(Phase 4 开发中)                        │
│   每个子 agent / 主线在自己的任务内部:                  │
│     写测试 → 跑红 → 实现 → 跑绿 → 重构                   │
│   → 类比:按验收单施工,每步都拿验收单对照               │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│ 第 3 层|集成层(Phase 5 验证时)                        │
│   跨模块集成测试 + lint + 构建 + 手工 e2e                │
│   → 类比:所有子承包商完工,总包跑一遍整体验收           │
└─────────────────────────────────────────────────────────┘

三层缺一不可

  • 没有契约层,实现层无从开始(测试写什么?)
  • 没有实现层,代码和测试脱节
  • 没有集成层,子模块间的契约不一致会漏

五、这套流程解决了哪些问题

05-problem-solved.png

原来的痛点这套流程怎么解
规格写完 AI 不看proposal / design / tasks 都强制 Markdown 链接引用上游 design.md;工件之间明确的引用链防止信息断层
任务不并行plan.md 明确标注哪些 Phase 可并行,subagent-driven-development 负责派单
测试事后补TDD 三层嵌入,契约在建档时就写进 tasks.md,实现时按契约先写测试
Review 靠自己瞄独立的 code-reviewer 子代理 pass,无上下文视角发现主线盲区
归档对不上/opsx:verify 强制校验 tasks 全勾选、代码与 specs 对齐,不合格不能归档
并发写 tasks.md 冲突规则:子 agent 只返回报告,主线统一勾选
worktree 乱规则:整个 change 共享单一 worktree,不为每个子 agent 开独立分支

六、对比:只用 OpenSpec vs OpenSpec × Superpowers

06-comparison.png

6.1 能力维度对比

能力只用 OpenSpecOpenSpec × Superpowers
需求探索/opsx:explorebrainstorming(新功能)+ opsx:explore(旧代码)
规格生成/opsx:propose✅ 同上,且自动带验收契约
实施计划❌ 无writing-plans 产出 plan.md
并行开发❌ 无subagent-driven-development 派单
测试驱动❌ 无✅ TDD 三层嵌入
自动验证❌ 手工verification-before-completion
独立 Review❌ 无code-reviewer 子代理 pass
归档校验/opsx:archive/opsx:verify + /opsx:archive
工件完整性proposal + design + specs + tasks同上 + design 外部 spec + plan + review 报告

6.2 典型场景对比:新增"抖音物料选择"功能

🔴 只用 OpenSpec
1. /opsx:explore 问几个问题 → 写下结论
2. /opsx:propose → 4 份工件
3. /opsx:apply  → AI 开始实现
     └ AI 自由发挥:一条条任务做,偶尔参考 design
     └ 测试?做完代码才想起来要不要写
     └ 6 条独立任务全串行,慢
4. /opsx:archive → 归档
     └ 回头看 tasks,有 2 条没勾选(忘了)
     └ specs 没有同步到基线

典型问题:规格和实现脱节、速度慢、测试覆盖靠运气、归档对不上。

🟢 OpenSpec × Superpowers
1. brainstorming → 逐个提问定方案 → design.md 持久化
2. /opsx:propose(引用 design.md)→ 4 份工件 + 验收契约
3. writing-plans → plan.md(标注 6 条任务可 3+3 分 Phase 并行)
4. worktree + subagent-driven-development
     ├ Phase 1:3 个子 agent 并行(每个内部 TDD)
     │   └ 返回完成报告 → 主线勾选 tasks
     ├ Phase 2:3 个子 agent 并行
     │   └ 同上
     └ Phase 3:主线串行(涉及跨模块)
5. verification-before-completion → 跑测试/lint/build 证据
6. code-reviewer 子代理全量 review → P0/P1 修完
7. /opsx:verify → /opsx:archive

典型效果

  • 速度:6 条串行 40 分钟 → 3+3 并行 + 主线 15 分钟,约 2.5 倍加速
  • 测试覆盖:三层 TDD 保证契约、实现、集成都有测试
  • 质量:独立 review pass 发现主线盲区
  • 对账:归档前强制校验,不合格不能归档

6.3 文档体系对比

文档类型只用 OpenSpecOpenSpec × Superpowers
为什么要做proposal.mddesign.md(完整设计)+ proposal.md(摘要)
怎么做(技术)design.mddesign.md(浓缩决策)+ 引用完整 design.md
做什么(任务)tasks.mdtasks.md + 验收契约(TDD 契约层)
怎么执行❌ 无(靠 AI 临时决策)plan.md(Phase + 派单 + 检查点)
Review 记录❌ 无code-reviewer 子代理返回的结构化报告

七、这套流程的适用边界

07-boundary.png

✅ 适合

  • 业务功能开发(新增 / 修改 / 重构)
  • 跨 2 个以上文件的改动
  • 涉及接口 / 权限 / 路由变更
  • 多人协作、AI 协作重度使用的项目

❌ 不适合(过重):

  • 一行改动的 bug 修复
  • 配置文件微调(如 .env 改个变量)
  • 纯文档排版
  • 紧急线上事故修复(走独立的 hotfix 流程)

边界判断:CLAUDE.md 里写明了"业务功能、行为变更、接口变更或非平凡重构"走全流程,其它 case 可以根据变更复杂度自行取舍。极简变更允许跳过 writing-plans


八、落地成本与回报

08-roi.png

落地成本

项目成本
新增依赖0 —— 所有工具(OpenSpec、Superpowers skills)都是现有的
文档更新.claude/CLAUDE.md(+10 行)、openspec/config.yaml(+11 行)
学习曲线约 1-2 次完整跑流程即可熟悉
每次变更开销额外 5-10 分钟(写 plan、跑 verify、派 review)

回报

项目回报
并行效率独立任务 2-3 倍加速
测试覆盖三层 TDD 保证契约 / 实现 / 集成都有测试
质量兜底独立 review pass 发现主线盲区
归档严谨度/opsx:verify 强制校验,告别"归档后发现没对齐"
规格 ⇌ 代码一致性工件引用链保证信息不丢失

粗算 ROI:单次变更额外开销约 10% 时间,换来 2-3 倍加速 + 显著更高质量——收益正向


九、给正在考虑落地的读者

09-ladder.png

如果你也想用这套流程,建议按这个顺序走:

  1. 先只用 OpenSpec 跑 1-2 个变更,体会"规格存在但不管施工"的痛点
  2. 把 Superpowers 的 skills 装好(brainstorming、writing-plans、subagent-driven-development、test-driven-development、code-reviewer)
  3. 修改项目的 CLAUDE.md,写清 7 阶段流程和每阶段的 skill 调用
  4. 修改 openspec/config.yaml,加验收契约、上游引用、brainstorming 段等规则
  5. 找一个中等规模的变更试跑一次,体会完整流程
  6. 复盘,根据实际情况调整(比如 worktree 策略、并行阈值、review 粒度)

最重要的一条:流程是为了让你不用每次重新思考,把精力花在业务上。如果流程让你觉得"好累",说明哪里错了——是流程过重还是工具没配好?该优化就优化,别让流程变成新的负担。 openspec-superpowers-workflow.png


十、参考

本项目落地文件

文件作用
.claude/CLAUDE.md7 阶段强制工作流、派单策略、TDD 三层约定
openspec/config.yaml验收契约规则、上游引用规则、brainstorming 段
docs/superpowers/specs/2026-04-30-workflow-redesign-design.md本次流程重设计的完整设计文档
/Users/jinduoxia/Desktop/文档/流程图/openspec/openspec-superpowers-workflow/流程图(drawio + png)

相关技能

  • OpenSpec:规格驱动的变更管理
  • superpowers:brainstorming:头脑风暴、设计探索
  • superpowers:writing-plans:实施计划生成
  • superpowers:subagent-driven-development:子 agent 并行派单
  • superpowers:test-driven-development:TDD 纪律
  • superpowers:verification-before-completion:自动化验证
  • superpowers:using-git-worktrees:worktree 隔离
  • code-reviewer:独立 review 子代理

写在最后

工具再多,流程再好,最终拼的是一致性。偶尔一次没走全流程没关系,但不能长期"我这次偷个懒"——那流程就形同虚设。

这套流程的价值不在于"多精巧",而在于把几个看似独立的工具粘合成一条链,让 AI 知道每一步从哪接、到哪交,不用每次从零思考。

这就是"长出肌肉记忆"的意思——让正确的事情变得自然