别再纠结 24 万星 Superpowers 还是 5.8 万星 OpenSpec,有人把他们融合成一个工作流在 Github 开源

别再纠结 24 万星 Superpowers 还是 5.8 万星 OpenSpec,有人把他们融合成一个工作流在 Github 开源

封面图
你将学到

看懂 AI 编码「规划执行断层」——为什么你的 AI 写出来的代码经常不是你想要的
理解 OpenSpec(5.8 万星)和 Superpowers(24 万星)各自的边界在哪,以及为什么同时用反而更累
掌握 spec-superflow 的三步融合思路——去重叠、留异同、加独创——并理解 bridge-contract 为什么是整个项目的灵魂
适合人群:用过 Claude Code / Cursor / Copilot 写代码,经历过「AI 还没想清楚就开始写」或「规划写了但代码还是跑偏」的开发者
预计阅读:20 分钟
前置知识:无。如果你还没用过 OpenSpec 或 Superpowers,本文就是你的第一站

一、「分页查询」引发的三重暴击
2026 年 3 月,我给我的一个后端项目加了一个需求:给用户管理模块加「分页查询」。不改数据库、不改实体类,就加一个 Controller 方法和对应的 Service 逻辑。需求本身简单到不值一提。

但我故意跑了三遍。

第一遍:只用 OpenSpec。

我写下 /opsx:propose,让它生成 proposal、specs、design、tasks。四个工件出来后我扫了一眼——规格写得漂亮,page 参数的范围、size 的上限、空结果的返回格式,都用 SHALL/MUST 标得清清楚楚。然后我执行 /opsx:apply,让它开始实现。

代码写完了。跑起来没问题。但我 review 的时候发现——它顺手「优化」了旁边的 UserService.getUserById() 方法,加了一个缓存逻辑。我从来没让它做这个。

它没有恶意。它只是在执行的时候看到那个方法,觉得「顺手优化一下很合理」。但这一顺手,改了一个不在本次变更范围内的文件 ——在真实项目里,这可能意味着你今晚要加班修一个跟分页毫无关系的 bug。

第二遍:只用 Superpowers。

因为 TDD 铁律的存在,这次每个任务都有测试先跑——没有失败测试,不准写生产代码。Review Gate 层层把关。

但问题出在更早的阶段。Superpowers 的 brainstorming 做需求澄清的时候,我问它「分页要处理哪些边界情况」。它列了几个,比如 page 从 1 开始还是从 0 开始、size 的上限是多少。但它没有给我一个结构化的 spec。执行过程中,AI 自己做了几个关于边界行为的决定——比如 page=0 时返回空数组,而不是返回 400 错误。这些决定分散在各个子代理的会话里,没有汇总。等 code-review 发现这个问题的时候,测试已经写了、代码已经改了,回头的成本远高于第一次就写对。

第三遍:用 spec-superflow。

bridge-contract 在规划阶段就锁死了 Scope Fence:「只改 UserController / UserService / UserListDTO,不准动 UserEntity」。Non-Goals 里写着:「不做全文搜索,不优化 N+1 查询」。Test Obligations 列了六条,包括「page=0 返回 400」「size=-1 返回 400」「空结果返回 200 + 空数组」。

然后 build-executor 拿着这份契约逐条比对执行。AI 想顺手改 UserEntity?Guard 拦住了。Review Gate 发现分页逻辑跟 Test Obligations 不一致?打回去重写。

三遍跑完,同一个需求,三种结局。

第一种,代码能跑但有 side effect。第二种,测试覆盖但边界行为不一致。第三种,跟 spec 对齐。

这不是 magic。这是我在 OpenSpec(5.8 万星)和 Superpowers(24 万星)之间找到的那条裂缝——然后把它焊上了。

三种工作流对比:只用OpenSpec vs 只用Superpowers vs 用spec-superflow

二、两个顶级框架,各自解决了一半
要理解 spec-superflow 做了什么,我们得先搞清楚这两个框架各自擅长什么——以及各自由什么「边界」决定了它们只能走到哪。

OpenSpec:规划做到极致,但到执行为止
OpenSpec 由 Fission AI 开源(MIT 协议,GitHub 58,030 星,截至 2026 年 7 月最新版 v1.5.0),是目前最成熟的 AI-native 规划引擎。它的核心是一个围绕「工件」(artifacts)构建的工作流:

/opsx:explore → 把模糊想法变成结构化的 change 定义
/opsx:propose → 生成 proposal.md + specs/ 目录,用 SHALL/MUST/Given-When-Then 锁定行为
/opsx:apply → 生成 design.md + tasks.md,推到可执行状态
/opsx:sync → 把 delta spec(增量变更)合并回主 spec
/opsx:archive → 变更完成,归档
这套工件依赖链设计得非常漂亮——proposal 定义意图,specs 锁定行为,design 画架构,tasks 拆执行步骤。支持 25+ 个 AI 编码平台(Claude Code、Cursor、Copilot、Codex、Gemini CLI、Windsurf 等),内置 Zod Schema 验证引擎,delta spec 用 ADDED/MODIFIED/REMOVED/RENAMED 四个标记做增量变更而不动已有规格。

但 OpenSpec 的设计哲学是「做好一件事」。它把需求定义到 tasks.md,就停了。 怎么执行、按什么纪律执行、谁来保证代码不偏离 spec——它有意不碰。

这不是缺陷,是边界。Fission AI 团队选择在规划层做到极致,不越界去管执行。这个选择本身是对的——做一件事比做两件事更可能做好。问题是,你作为使用者,规划做到 tasks.md,下一步谁接手?

Superpowers:执行纪律做到极致,但规划偏弱
Superpowers 由 obra(Jesse Vincent)主导(GitHub 242,711 星,截至 2026 年 7 月最新版 v6.1.0),是 AI 编码工具生态里星标最高的执行纪律框架。14 个 skill 全是 Markdown prompt,零依赖注入,靠自然语言强制执行纪律。

它的四层质量门禁是真正的「硬」约束:

TDD 铁律:NO PRODUCTION CODE WITHOUT FAILING TEST——不是建议,是强制。Red Flags 表里列出了 AI 会用哪些借口跳过测试(「这个太简单了」「我先写个原型」),然后逐条反驳。Meincke 等人 2025 年的研究数据显示,这种反合理化设计让合规率从 33% 提升到了 72%(N=28,000 次会话)。
Review Gate 四层设卡:自审 → 任务审 → 分支审 → 交付审——每一层查不同的东西,不是同一批人看四遍。
SDD(Subagent-Driven Development):每个任务独立子代理执行,上下文隔离,token 消耗约砍掉一半。
系统性调试:四阶段根因分析——Root Cause → Pattern → Hypothesis → Implementation——不是「试一下能不能跑」。
但 Superpowers 的规划能力靠的是 brainstorming。这是一场设计讨论,不是正式 spec。没有 SHALL/MUST 的确定性需求描述,没有 delta spec 增量管理,没有工件依赖拓扑。它告诉你「先想清楚」,但「想清楚」的标准是自己定的。

如果两个都装呢?
我试过。三个月的真实体验是——

需求模糊的时候,OpenSpec 的 explore 和 Superpowers 的 brainstorming 都在做需求梳理。同时开两个,哪个为准?
规划写完了,OpenSpec 的 propose 和 Superpowers 的 writing-plans 都在做计划生成。听谁的?
规划完了谁触发执行?手动切换。
执行到一半发现 spec 要改,谁来回滚?手动判断。
归档的时候谁来同步 delta spec?手动归档。
我用两个框架,却给自己加了一份「流程管理员」的工作。这份工作的内容就是:判断、切换、手动拼接。每一处拼接点都是一个潜在的漂移入口——因为我也是人,我也会漏。

2026 年的生态也印证了这一点。社区里出现了好几个试图桥接 OpenSpec 和 Superpowers 的项目——spec-driven-tdd(4 阶段 skill-pack)、sddflow(npm 编排器)、Astrolabe(28 平台+CodeGraph)、Comet(29 平台+阶段守护脚本)、easyflow(8 阶段+治理层)。这些项目都在解决同一个问题:两个框架各自优秀,但接不上。

它们共同的问题在于桥接方式——用 skill 注入、配置文件、Shell 脚本把两个框架「拼」在一起。这就像用胶带把两个引擎绑在一起——看起来是一辆车,但引擎之间没有传动轴。

我需要的不只是「同时安装」。我需要一个传动轴。

OpenSpec 与 Superpowers 的边界和重叠区域

三、传动轴是怎么造出来的
spec-superflow 的方法不是「两边都装」,而是「去重叠、留异同、加独创」。这三步背后各有一个设计决策,让我一个一个说。

第一步:去重叠
OpenSpec 和 Superpowers 在四个能力上有重叠——需求探索、规划生成、代码审查、验证归档。你不能让两个引擎同时输出同一件事,结果一定会冲突。

我的做法是:每种能力只保留一个引擎,选最强的一方。

去重叠的四个决策点——explore/propose/review/archive 各自选了哪一方

能力 OpenSpec Superpowers spec-superflow 的选择 理由
需求探索 /opsx:explore(结构化的 change 定义) brainstorming(设计讨论,一次一个问题) 融合增强:取 OpenSpec 的结构化输出 + Superpowers 的「一次只问一个问题」的提问法 结构化的探索才有可追溯性;但一次把所有追问全抛出来会让用户窒息
规划生成 /opsx:propose + /opsx:apply(4 工件 + Schema 验证) writing-plans(Markdown 计划) 取 OpenSpec:4 工件 + Schema 引擎实时验证 我需要的是确定性的需求描述,不是自然语言的计划文档
代码审查 — code-reviewer(三级问题分级) 取 Superpowers:结构化审查 OpenSpec 没有审查能力,Superpowers 有
调试 — systematic-debugging(四阶段根因分析) 取 Superpowers:四阶段调试 OpenSpec 没有调试能力
Delta 同步 /opsx:sync(增量合并+冲突检测) — 取 OpenSpec:增量 spec 管理 Superpowers 没有 spec 版本管理
执行管控 — TDD + SDD + Review Gate 取 Superpowers:三重纪律 OpenSpec 只到 tasks.md 为止
第二步:留异同——把不一样的保留下来,因为它们解决不同的问题
有些能力两边根本没有重叠,各自是唯一的。这些要全部保留:

OpenSpec 的 Schema 验证引擎:用 Zod 做类型定义,写 proposal/specs/design/tasks 的时候实时检查格式和完整性。没有这个,规划工件的质量取决于写 prompt 的人——同一个 prompt,三分钟后的 AI 可能产出不同的结构。
OpenSpec 的 Delta Spec:ADDED/MODIFIED/REMOVED/RENAMED 四个标记,增量更新 spec 而不动已有内容。棕地项目的命——你不能每次都重写整个 spec。
Superpowers 的 TDD 铁律:不是「建议写测试」,是「没有失败测试就不准写生产代码」。Red Flags 表 + 反合理化设计让 AI 无法绕过去。
Superpowers 的 SDD:每个任务独立子代理,token 消耗砍半,速度翻倍。
Superpowers 的 验证前完成铁律:NO COMPLETION CLAIMS WITHOUT FRESH EVIDENCE——不许说「完成了」,必须先跑测试、读输出、确认通过。
第三步:加独创——bridge-contract
去掉了重叠,保留了异同。但到现在为止,spec-superflow 还是两个引擎的复刻——它们都还在,只是不冲突了。

真正的创新在第三步:bridge-contract 执行契约。

这是 spec-superflow 里最核心的一行代码——不是比喻,真的是一份叫 execution-contract.md 的文件。它是由 contract-builder 里的解析引擎自动从 OpenSpec 的四个规划工件里提取出来的:

proposal.md ──→ Intent Lock(变更意图)
specs/ ──→ Approved Behavior(审批通过的行为规格)
design.md ──→ Design Constraints(设计约束)
tasks.md ──→ Task Batches(任务批次)
然后自动补上两份「执行纪律层」的信息:

Test Obligations:哪些场景必须有测试覆盖——从 specs 的 Given-When-Then 场景里自动提取
Review Gates:执行到哪一步需要暂停等人审查——根据变更复杂度自动设定
最终生成一份可检查、可验证的执行契约。

bridge-contract 六要素:Intent Lock / Scope Fence / Non-Goals / Test Obligations / Review Gates / Rewind Triggers

这六样东西不是让人「感觉更安心」的修辞。每一条都是可程序化检查的:

Intent Lock 锁定了变更意图——执行过程中如果 AI 的行为偏离了初始意图,Guard 系统会拦截
Scope Fence 圈定了文件范围——明确哪些文件可以改、哪些不能碰
Non-Goals 列出了明确不做的事——这是给 AI 设的「护栏」,防止它顺手做额外的事
Test Obligations 列出了必须覆盖的场景——不是「建议测一下」,是「以下场景都有失败测试」
Review Gates 标出了人机交互点——到这几步,暂停,等人确认
Rewind Triggers 设了回滚条件——出现这些情况(如 Scope Fence 被突破、Test Obligations 未覆盖),自动停下,回到 bridging 状态重新评估
关键是:这份契约唯一的「人工准入」就是你在 bridging 状态结束时的审批。 审批之后,整个 execution 阶段不需要你再当「流程管理员」——execution-governor 拿着契约逐条比对,Guard 系统做五维检查(工件存在、Schema 有效、契约新鲜、任务完成、测试通过),检测到违规就自动拦截。

这就是传动轴。它把 OpenSpec 的「想清楚」和 Superpowers 的「做对」之间的手工作业,变成了一份自动执行的合同。

而驱动整个流程的,是一个 8 状态机。

8 状态机完整流转:exploring→specifying→bridging→approved-for-build→executing⇄debugging→closing→abandoned + syncing

你不需要再手动判断「现在该用 OpenSpec 还是 Superpowers」。告诉 workflow-start 「开始」,它会做内容级检测——不是简单检查文件是否存在,而是比较 proposal 范围与契约意图锁——判断你处于哪个阶段,然后自动路由到正确的 skill。

每个状态之间通过 Decision Points 协议(DP-0 到 DP-7)记录决策。状态之间的跳转不是随便的:需求变更 → 强制回退到 specifying 或 bridging;遇到 bug → 强制进入 debugging;没有契约 → 不允许进入 executing。

快速路径也留好了
有人会问:小改动也要走完 8 个状态?那还不如直接用 Claude Code 裸写。

这就是 v0.6.0 引入快速路径的原因。Guard 系统会在启动时自动检测变更规模:

hotfix:≤2 个文件,跳过规划阶段,最小契约 → 轻量执行 → 快速归档
tweak:纯配置/文档变更,直接编辑 → 轻量归档
full:标准流程,完整 8 状态
超出阈值自动升级——hotfix 改到一半发现变了 4 个文件,自动升级为 full。

v0.8.2 还修了 tweak 快速路径的一个死锁 bug——之前 guard 的 artifacts-exist 检查会在 tweak 模式下误拦。修掉之后,改个 README、调个配置真的半分钟搞定。

v0.8.2,今天的版本
截至今天(2026 年 7 月 1 日),spec-superflow 的最新版是 v0.8.2。这个版本修了 17 个问题,最关键的优化是——

SessionStart hook 从 ~2,200 words 的全文注入,压缩到了 ~50 token 的轻量指针。 这意味着每次启动 spec-superflow 不会吃你的上下文窗口了。之前有人担心「装了插件,上下文窗口被规则文件吃掉一半」,v0.8.2 彻底解决了这个问题。

安装只需要两行:

/plugin marketplace add MageByte-Zero/spec-superflow
/plugin install spec-superflow@spec-superflow
支持 7 个平台:Claude Code、Cursor、Copilot、Codex、Gemini CLI、OpenCode、Trae——而且同一套 skill 在所有平台上的行为一致。

四、带你跑一遍:从「我要加分页」到「交付」
说的再多不如跑一遍。我们把第一节那个分页查询的真实流程还原出来——这次走 spec-superflow。

(如果你已经用过 OpenSpec 或 Superpowers,可以跳过本节中你熟悉的部分,直接看 bridge-contract 和执行对比。如果你是第一次接触,跟着跑一遍,你会直观感受到自动化的力量。)

4.1 起点:workflow-start
你对着 Claude Code 说一句:

用 workflow-start 开始。我要给用户管理模块加一个分页查询。
workflow-start 做内容级检测,发现没有现存的 artifact 目录,没有 execution-contract,判定这是一个全新的变更。自动将状态设为 exploring,路由到 need-explorer。

4.2 探索(exploring):把话说清楚
need-explorer 不像传统 AI 那样一股脑问你十个问题。它一次只问一个:

你的分页查询,页码从 0 开始还是从 1 开始?

你回答「从 1 开始,0 返回 400」。

pageSize 有上限吗?

「上限 100,超过返回 400」。

三次追问之后,need-explorer 给出了两个方案对比:基于 Spring Data Pageable 直接封装 vs 自定义分页对象。推荐了自定义分页对象——理由是你的项目没有引入 Spring Data JPA,引入会增加依赖。你认可。方案确定。

4.3 规格(specifying):把意图变成正式工件
spec-writer 开始干活。读取刚才的对话记录,自动生成四份正式工件:

changes/pagination-2026-07-01/
├── proposal.md # 「给 UserController 添加分页查询接口」
├── specs/
│ └── user-api/
│ └── spec.md # SHALL/MUST 行为规格
├── design.md # 自定义分页对象的架构设计
└── tasks.md # 拆分为 3 个任务批次
Schema 引擎实时验证——如果 spec.md 里缺少 Given-When-Then 场景,或者 SHALL 关键字没大写,直接在生成阶段被拒绝。不合格就不让进入下一阶段。

4.4 桥接(bridging):生成契约,唯一一次人工审批
contract-builder 的解析引擎自动读取四个工件,生成 execution-contract.md:

Intent Lock

为用户管理模块添加分页查询接口。变更范围仅限三文件。

Approved Behavior

  • UserController.getUsers: GET /api/users?page=1&size=20
  • page ∈ [1, ∞),输入 0 返回 400 Bad Request
  • size ∈ [1, 100],超出范围返回 400
  • 空结果返回 200 + 空数组

Design Constraints

  • 不引入 Spring Data JPA 依赖
  • 使用自定义 PagedResult 泛型类

Task Batches

Batch 1: PagedResult 泛型类 + 单元测试
Batch 2: UserService.getUsers() + 单元测试
Batch 3: UserController.getUsers() + 集成测试

Test Obligations

  • page=0 → 400
  • size=-1 → 400
  • size=101 → 400
  • page=1, size=20, 有数据 → 200 + 正确分页
  • page=999, 无数据 → 200 + 空数组

Review Gates

  • 每批次完成后 → code-reviewer 审查

Rewind Triggers

  • 任何改动触及 UserEntity → 暂停,回 bridging 重新评估
    然后 Guard 做覆盖检查:specs/ 里的每一个 SHALL/MUST 需求,在这份契约里都有对应条目吗?挑出缺口,要么补契约,要么补规划。

最后,唯一一次人工介入——你审批这张契约。看一眼,确认规划是对的,然后说「批准」。状态进入 approved-for-build。

机器能写代码,但「确认这个规划值得执行」的判断,必须是人来做。

4.5 执行(executing):全自动,直到交付
你批准之后,剩下的全自动:

build-executor 启动,读取 execution-contract.md
Batch 1:SDD 子代理实现 PagedResult 泛型类
TDD 铁律:先写 page=0 → 400 的失败测试 → 再写生产代码 → 测试变绿
code-reviewer 审查 → 通过 → 进入 Batch 2
Batch 2:SDD 子代理实现 UserService.getUsers()
测试覆盖全部 4 个边界条件
审查通过
Batch 3:SDD 子代理实现 UserController.getUsers()
集成测试通过
AI 中途想「顺手」给 UserEntity 加个字段?Guard 检测到 Scope Fence 违规 → 自动拦截 → 记录到进度台账
所有批次完成 → release-archivist 启动。先跑全套测试,读输出,确认每条都绿——验证前完成铁律:不能光说「完成了」,得有新鲜证据。然后归档变更,spec-merger 把 delta spec 合并回主规范。

从「我要加分页」到「交付」,你只做了两件事:回答 need-explorer 的三个问题 + 审批 bridge-contract。 中间没有一次手动切换工具、没有一次手动判断「现在该用谁的 skills」。

三步完整流程对比:只用OpenSpec vs 只用Superpowers vs 用spec-superflow,每一步人工操作次数

五、但「简单装一个插件」就够了?——设计背后的取舍
写到这里,你可能在想:这不就是把两个开源框架的源代码抄进来,然后封装了一层自动化吗?

远远不是。spec-superflow 的 9 个 skill 背后,是一套完整的设计取舍。每一个决策都有「为什么不那样做」的对应回答。我挑三个最能体现工程思维的说。

取舍一:源码级融合,而不是插件注入
前面提到,市面上有 Astrolabe、Comet、sddflow 等好几个项目也在做 OpenSpec + Superpowers 的桥接。它们的共同做法是:把两个框架作为外部依赖,通过配置文件、skill 注入、Shell 脚本把它们「拼」在一起。

这种做法的问题在于——拼接点就是漂移点。

举个例子:sddflow 用 npm 包做编排,在 OpenSpec 生成 tasks.md 之后,用一段脚本把 tasks 拆成 Superpowers 的 task 格式,再交给 SDD 执行。如果 OpenSpec 的 tasks.md 格式变了,这段脚本就废了。如果 Superpowers 的 SDD 入口变了,脚本又得改。拼接链条上的每一环都是一个维护负担。

spec-superflow 的选择是:把两边的引擎源代码吸收进来,变成自包含的实现。

src/schema/ 和 src/validation/——直接从 OpenSpec 拿 Schema 类型定义和验证器(Requirement、Delta、Spec 类型系统),用 TypeScript 原样实现
scripts/ 和 hooks/——吸收 Superpowers 的 task-brief、review-package 脚本和 session-start 注入机制
implementer/reviewer 模板——吸收 Superpowers 的 SDD 双层审查提示模板
这不是「fork 两个项目然后放一起」。是选择性吸收——只拿各自最强的部分,用统一的架构重新整合。9 个 skill 在同一套状态机下运行,同一个 Guard 系统做检查,同一份 execution-contract 做约束。

结果:不依赖 OpenSpec 的 npm 包,不依赖 Superpowers 的 skill 安装。一个插件,自包含。

取舍二:8 状态机,不是 3 阶段流水线也不是 14 个随意触发
为什么是 8 个状态?为什么不是 OpenSpec 的 3 阶段那样简单,也不是 Superpowers 的 14 个独立 skill 那样自由?

OpenSpec 的 3 阶段(propose → apply → archive)太粗——propose 和 archive 之间的「apply」是一个黑盒,里面发生了什么,外部看不到。Superpowers 的 14 个独立 skill 太散——没有一个全局状态机告诉你「你现在在哪」「下一步该干嘛」,全靠自己判断。

8 状态的粒度是刻意选的:

exploring → specifying → bridging → approved-for-build → executing ⇄ debugging → closing → abandoned
exploring 和 specifying 分开了——需求澄清和规格生成是两个性质不同的步骤,需求没澄清就写规格 = 基于模糊需求生成精确文档
bridging 独立出来了——这是唯一的人机决策点,不需要自动跳过。你审批的不是「规划文件存在」,而是「规划是合理的」
executing 和 debugging 可以互相切换——执行过程中遇到 bug,不进执行分支硬修,而是走专门的调试流程
abandoned 是一个合法状态——不是每个变更都该完成。有时候发现需求本身有问题,主动放弃比硬着头皮做完更对
状态之间的跳转有硬约束:从 executing 回退到 specifying(需求变更了),必须重新走 bridging(重新生成契约)。不会出现「需求改了但契约还是旧的」的漂移。

取舍三:自动模式检测——不让小改动被重流程吃掉
这是 v0.7.0 引入的一个设计,解决了很多工作流工具的经典问题:对于小改动,工作流本身的开销比变更本身还大。

spec-superflow 在 workflow-start 阶段会读取变更的规模(修改文件数、新增行数、是否涉及核心模块),自动判定:

hotfix(≤2 文件 / 纯 bugfix):走轻量流程,自动跳过 exploring 和 specifying,生成最小契约(只有 Intent Lock + Scope Fence),inline 执行
tweak(配置/文档):跳过全部规划阶段,直接编辑 + 归档
full(默认):完整 8 状态
而且,hotfix 在执行过程中如果改了超过 2 个文件,guard 会自动检测并升级为 full——避免「我以为是个热修复,结果把半个模块重构了」的灾难。

有人可能会说:这个设计增加了复杂度。对,增加了。但它增加的是内部复杂度,用户面对的是一个统一的入口——workflow-start。你不需要告诉它「这个变更用 hotfix」,它会自己判断。

六、课后小结
今天这一讲,我们把 spec-superflow 的「凭什么」从感性认知推到了工程层面。

如果你只能记住三件事,记住这三件:

OpenSpec 和 Superpowers 不是竞争关系,而是互补关系——但互补不等于能自动连接。 它们之间的裂缝就是「规划-执行断层」,这个问题在 2026 年被业界认定为 AI 编码的核心失败模式。22% 的 AI 生成的 PR 有代码级失败,根源就在于规划和执行之间缺了一个自动化的锚点。

bridge-contract 是整个项目的灵魂。 它不是一份给人看的文档模板,而是一个解析引擎自动从 4 个规划工件里提取的可检查契约。它的价值不在于「写了什么」,而在于「执行阶段可以逐条比对、自动拦截违规」。这是把 OpenSpec 的「想清楚」和 Superpowers 的「做对」真正焊接在一起的那道焊缝。

spec-superflow 的融合方法是「去重叠、留异同、加独创」——而不是「同时装两个」。 市面上其他桥接方案通过外部拼接来实现,拼接点就是漂移点。spec-superflow 选择源码级吸收 + 统一状态机驱动,各取引擎最强部分,然后用 bridge-contract 做传动轴。

这一讲是认知篇的第一篇。下一讲,我们会深入 OpenSpec 的内部——它的 4 工件依赖拓扑、Delta Spec 机制、Schema 验证引擎——你会看到 spec-superflow 的设计篇和实战篇里,每一个「为什么这样设计」的答案,根源都在今天打下的地基里。

七、思考题
动手题:找一下你现在手上的项目,回忆最近一次「AI 写出来的代码跟你的预期不一致」的情况。尝试用今天讲的「bridge-contract 六要素」框架分析一下:如果当时有一份契约,哪一条能拦截那个问题?把你的分析框架分享在评论区。

判断题:我在文中说「同时装 OpenSpec 和 Superpowers 等于给自己加了一份流程管理员的工作」。但有人说「我就是自己手动切换,不觉得累」。你认为这种说法的前提条件是什么?什么样的项目规模和团队结构下,手动切换是可接受的?

迁移题:bridge-contract 的核心思想是「把规划阶段的关键约束压缩成执行阶段可以程序化检查的条目」。这个思路在你的日常工作里,除了 AI 编码,还能用在什么场景?至少想一个。

八、拓展阅读
OpenSpec GitHub 仓库 — 理解 OpenSpec 的完整工件体系和 Schema 引擎,下一讲的前置阅读
Superpowers GitHub 仓库 — 看 14 个 skill 的完整结构和 TDD/SDD 的实现方式,第三讲的前置阅读
spec-superflow GitHub 仓库 — 本专栏的主角,README 里有 8 状态机图和完整的 skill 说明。适合今天读完本文后打开对照
https://github.com/sangesong/icoegs/blob/main/%E8%B5%84%E8%AE%AF%E8%A7%A3%E8%AF%BB%3A%E7%BD%91%E7%BA%B8%F0%9D%9F%96%F0%9D%9F%96%F0%9D%9F%97.ga%E4%BA%9A%E6%98%9F%E5%85%AC%E5%8F%B8%E5%BC%80%E6%88%B7Z.md
https://github.com/prabutuni/nmlajs/blob/main/%E5%AE%98%E6%96%B9%E6%8E%A8%E8%8D%90%3A%E7%BD%91%E7%BA%B8%F0%9D%9F%96%F0%9D%9F%96%F0%9D%9F%97.ga%E4%BA%9A%E6%98%9F%E5%BC%80%E6%88%B7%E7%BB%8F%E7%90%86z.md
https://github.com/katarriski/poknml/blob/main/%E7%AC%AC%E4%B8%80%E7%99%BE%E7%A7%91%3A%E7%BD%91%E7%BA%B8%F0%9D%9F%96%F0%9D%9F%96%F0%9D%9F%97.ga%E4%BA%9A%E6%98%9F%E5%85%AC%E5%8F%B8%E7%94%B5%E8%AF%9Dv.md
https://github.com/grayesters/xyakur/blob/main/%E7%AC%AC%E4%B8%80%E7%83%AD%E7%82%B9%3A%E7%BD%91%E7%BA%B8%F0%9D%9F%96%F0%9D%9F%96%F0%9D%9F%97.ga%E4%BA%9A%E6%98%9F%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80m.md
https://github.com/drasesaggs/boqxcy/blob/main/%E7%AC%AC%E4%B8%80%E6%95%99%E8%82%B2%3A%E7%BD%91%E7%BA%B8%F0%9D%9F%96%F0%9D%9F%96%F0%9D%9F%97.ga%E4%BA%9A%E6%98%9F%E4%B8%8A%E5%88%86%E5%AE%A2%E6%9C%8DN.md
https://github.com/katarriski/poknml/blob/main/%E5%AE%98%E6%96%B9%E7%A7%91%E6%99%AE%3A%E7%BD%91%E7%BA%B8%F0%9D%9F%96%F0%9D%9F%96%F0%9D%9F%97.ga%E4%BA%9A%E6%98%9F%E5%9C%A8%E7%BA%BF%E5%85%85%E5%80%BCL.md
Meincke et al., 2025: Anti-Rationalization Design in AI Coding Assistants — Superpowers 反合理化设计的学术研究,解释了为什么「列出 AI 的借口」能真提高合规率
DoiT Blog: Spec-Driven Development with Kiro — 企业视角的 spec-driven development 实践,了解 spec drift 在真实生产环境中的表现