Skip to content

第48课 · OpenSpec:规范驱动开发

本节要点

  • OpenSpec 是什么:一个给 AI 编程加「协议层」的插件,让需求从「聊天里的一句话」变成「仓库里的一份文档」
  • Spec 是什么:Specification(规范文档)的简称——你把需求写进文档,AI 照着文档干活,不再是「你说一句,AI 猜一句」
  • 五个阶段一个闭环:Explore 探索 → Propose 提议 → Apply 执行 → Sync 同步 → Archive 归档
  • 归档是关键差异:相比第 5 课讲的 Superpowers,OpenSpec 有完整的归档机制——做完一个功能,变更记录归档,主规范持续演进
  • 兼容 30+ 主流 AI 编程工具:OpenCode、Claude Code、Cursor、GitHub Copilot……一套规范,所有工具通用
  • 适合大型项目:小需求不用搞这么复杂,但如果你在做稍大一点的项目,用 Spec 驱动能保持主线不跑偏

1. 为什么需要 OpenSpec?

还记得第 5 课讲的 Superpowers 插件吗?它每次跟 AI 头脑风暴、探索需求后,会生成设计文档和任务文档。

用着用着你会发现一个问题——文档越积越多,但没有一个总纲

Superpowers 的问题
  • 每次对话需求,它都生成一个 Spec 文件
  • 文件越攒越多,全部并列堆在一起
  • 没有一个主框架把它们串起来
  • 你不知道哪些是当前在做的,哪些是历史的
  • 每次都相当于在全新的基础上做变更

OpenSpec 的思路不同:它有一个主架构文档,描述你整个系统的结构。每次你要做一个新功能或修一个 bug,它会创建一个变更(Change),走完一个完整生命周期后归档,然后把变更内容同步回主架构。

这样你的项目就有一个持续演进的主线,而不是一堆散落的碎片。


2. Spec 是什么?

如果你没接触过软件开发,可能没听过这个词。

Spec = Specification,中文叫「规范文档」或「规格说明」。

打个比方:

📋 你去装修公司装修房子,设计师会先出一份施工图纸——哪里放沙发、哪里开窗户、电线怎么走。这份图纸就是 Spec。施工队(AI)照着图纸干活,而不是凭感觉砌墙。

在 AI 编程里,Spec 就是你把想做什么、为什么这么做、具体改哪些地方,都写进一份文档。AI 读了文档再动手,而不是靠你聊天时的几句话去猜。

OpenSpec 的核心理念用一句话概括:

Agree First, Then Build —— 先对齐,再编码。

你跟 AI 先把「要做什么」在文档里讨论清楚、审查通过,然后再让 AI 去写代码。这样不会浪费代码量,也不会跑偏。


3. 五个阶段:一个功能的完整生命周期

OpenSpec 给每个功能(或 bug 修复)设计了一个五阶段闭环。每个功能都走同一条路:

🤔 Explore    →    📝 Propose    →    ⚡ Apply    →    🔄 Sync    →    📦 Archive
   探索              提议              执行           同步           归档

阶段 1:Explore 探索

有一个需求,但还没想清楚怎么做?

输入 /opsx:explore,进入探索模式。AI 会读取你的代码、权衡不同方案,跟你聊清楚需求。这个阶段不写任何代码,纯粹是思考伙伴。

💡 第 5 课学的 Superpowers 里叫 brainstorm(头脑风暴),OpenSpec 里叫 explore,本质一样。

阶段 2:Propose 提议

需求聊清楚了,输入 /opsx:propose。AI 会自动在你的项目里创建一个变更文件夹,包含这些文档:

文件作用
proposal.md需求文档——这次要解决什么问题
design.md设计文档——打算怎么解决
specs/受影响的规范变更——跟主架构的差异
tasks.md任务列表——拆成一个个小任务,带编号

写完这些文档后,你先看一眼(或者让 AI 帮你 review),确认没问题再往下走。

阶段 3:Apply 执行

方案审查通过,输入 /opsx:apply。AI 按照 tasks.md 里的任务列表,一个一个去完成,做完了就打勾(✓)。

如果执行过程中发现方案有问题,可以随时更新文档继续编码——不是死板的阶段门禁。

阶段 4:Sync 同步

代码写完了,输入 /opsx:sync。这一步把实际实现的内容回写到主规范文档里。

为什么要同步?因为 AI 执行时可能跟计划有出入。Sync 把真实情况记录下来,保证主架构文档是最新状态。

阶段 5:Archive 归档

人工验证没问题后,输入 /opsx:archive。这一步把:

  • 变更的差异合并到主规范
  • 变更文件夹加上时间戳,移入 archive/ 目录存档

归档后,规范变成新的「客观真理」,准备做下一个功能。

📦 归档是 OpenSpec 和 Superpowers 的关键差异。 Superpowers 没有归档机制,所有 Spec 文档并列保存着,时间一长就很乱——你不知道哪些是当前在做的,哪些是历史的。OpenSpec 归档后,历史变更有条理地存在 archive/ 里,随时可以回看。


4. 安装 OpenSpec

前提条件

OpenSpec 通过 npm 安装,所以你需要先装好 Node.js(第 1 课的环境准备应该已经装了)。

安装步骤

打开终端,运行:

bash
npm install -g @fission-ai/openspec@latest

然后在你的项目文件夹里初始化:

bash
# 基本初始化
openspec init

# 或者指定你用的 AI 工具(推荐)
openspec init --tools claude,opencode,codex

初始化后,OpenSpec 会自动在你的 AI 工具配置里添加六个 Skill(斜杠命令),你在 AI 对话框里输入 /opsx 就能看到它们。

让 AI 帮你安装

如果你不想记命令,也可以直接把 GitHub 链接发给 AI,让它帮你安装:

帮我安装 OpenSpec 插件:https://github.com/Fission-AI/OpenSpec

AI 会自动执行安装和配置。

卸载 Superpowers(如果之前装了)

OpenSpec 和 Superpowers 功能相似,留一个就行。如果你想换成 OpenSpec,跟 AI 说:

帮我卸载 Superpowers 插件,包括 Skill 也一起卸载

TIP

两个插件同时装着会功能冲突,建议卸一个留一个。我个人用下来感觉 OpenSpec 更贴近需求,所以推荐它。


5. OpenSpec 的核心优势

① 告别模糊提示词

以前跟 AI 做事,需求写在聊天历史里。聊着聊着上下文满了,你压缩会话或开新会话,之前的细节就丢了。

用 OpenSpec,需求写进 Spec 文档。文档在仓库里,不在聊天里。 压缩会话、开新会话都不影响,因为文档还在。

② 可审查、可追溯

每次变更都有完整记录:方案文档、设计文档、任务列表。归档后加时间戳存档。

六个月后回头看,你知道当时为什么这么做改了哪些东西任务列表是怎么拆的

③ 循序渐进

先定方案 → 审查通过 → AI 执行。不会一上来就猛写代码,写完发现方向不对又要推倒重来。

④ 保持上下文干净

讨论阶段可能会聊很久,上下文容易爆。但需求写进文档后,你就可以放心压缩会话了——文档是持久化的,压缩不影响

AI 用文档继续推进,注意力不会因为上下文太长而涣散。

⑤ 主线推进,不跑偏

每次变更都跟主架构对齐。做完一个功能,Sync 回主架构,Archive 归档。然后开下一个变更,继续在主线上推进。


6. 兼容 30+ 主流 AI 编程工具

OpenSpec 不挑工具,一套规范框架覆盖所有主流 AI 编码 agent:

  • 第一梯队:Claude Code、OpenCode、Codex
  • 第二梯队:Cursor、Windsurf、GitHub Copilot
  • 更多:Cline、Continue、Gemini CLI、Amazon Q、RooCode、Kiro、Qwen Code……还在持续增加

工作流完全一致——不管你用哪个工具,五个阶段、五条命令,用法一样。


7. 实战演示:修两个 Bug 的完整流程

视频里我用自己开发的一个 AI 审计工具箱做演示,还原了一个真实的开发过程。

发现问题

我在测试时发现了两个 bug:

  1. 流程模式中运行时,调用 Read 工具报错
  2. 运行过程中点「停止」按钮没有反应

第一步:Explore 探索

输入 /opsx:explore,把两个 bug 描述发给 AI:

目前在流程模式中运行时,调用 Read 的工具报错。另外,运行过程中点击停止,但是没有反应,并没有停止。帮我看一下这两个问题。

AI 进入探索模式,读代码、定位原因、跟你聊方案。

💡 关于 Sub Agent

探索过程中,AI 可能会派 Sub Agent 去做更细致的排查。在 OpenCode 里可以用 Ctrl+X + 方向下键查看 Sub Agent 的执行情况。

第二步:Propose 提议

方案聊清楚后,输入 /opsx:propose。AI 创建变更文件夹,写好需求文档、设计文档和任务列表。

重要:写完文档后先别急着执行,让 AI review 一下。

如果你装了 oh-my-opencode-slim 插件,它会派 oracle(用更好的模型)独立检查文档。新开的 Agent 没有当前上下文的干扰,能站在第三方角度发现文档里的问题。

比如我的演示里,oracle 发现了一个冲突:proposal 和 spec「自己打脸」——两个文档说了相反的话。我让 AI 用通俗易懂的方式解释冲突,确认后让它修改。

第三步:Apply 执行

文档确认没问题,输入 /opsx:apply。AI 按照任务列表(比如 1.1 到 4.3)逐个完成,做完了打勾。

⏱️ 执行时间取决于任务多少,可能几分钟,也可能跑几个小时。

如果你用的是 Electron 开发的桌面应用,还可以装一个 Electron MCP,让 AI 自己打开应用做功能测试,不用手动验证。

第四步:Sync 同步

代码写完、人工验证没问题后,输入 /opsx:sync

这一步把本次变更的内容同步到主架构文档,保证主架构是最新的。

第五步:Archive 归档

最后输入 /opsx:archive。AI 把任务列表全部标记完成,变更文件夹加时间戳归档。

至此,一次完整的变更(或功能开发)就全部完成了

又发现新问题?再开一个变更

演示最后,我又发现了一个新的 bug(任务列表显示顺序有点混乱)。没关系——归档完上一个变更后,重新 /opsx:explore,开启一个新的变更。

这就是 OpenSpec 的节奏:一个 Spec 一个 Spec 地小步前进。 每一步都有记录、有方向,不会跑偏。


8. 什么时候用 OpenSpec?

适用场景

做稍大一点的项目时用。 比如你从零开始搭一个工具、一个系统,功能不止两三个,可能会持续迭代——这时候用 OpenSpec 管理变更,效果最好。

如果你只是让 AI 帮你写个小脚本、处理个 Excel,不用搞这么复杂。OpenSpec 的价值在于管理持续演进的项目,让需求有迹可循、方向不跑偏。

一句话总结:小需求直接聊,大项目用 Spec。


关键收获

TIP

OpenSpec = 给 AI 编程加一个「协议层」。

需求写进文档,不再散落在聊天记录里。每个功能走五个阶段:探索 → 提议 → 执行 → 同步 → 归档。归档后主规范持续演进,历史变更完整保留。

三个核心好处:

  • 告别模糊提示词——需求在文档里
  • 可审查可追溯——每次变更都有完整记录
  • 循序渐进——先对齐再编码,不浪费代码量

安装一行命令:

bash
npm install -g @fission-ai/openspec@latest

参考链接

© 2025 逆行的狗