OpenSpec:让 AI 编程从"开盲盒"到"先签字再干活"

0 阅读7分钟

Hi~大家好呀,我是清汤饺子。

我曾经让 AI 改个按钮颜色,它噼里啪啦一顿操作,把整个配色系统重构了。

你问我什么配色系统?我没说要重构配色系统啊。

AI:但重构之后更好看啊。

……行吧。

这个场景你经历过吗?需求说加个功能,AI 直接把项目翻了个底朝天。最后你花的时间比不用 AI 还多三倍。

问题出在哪?不是 AI 不够聪明,是你和 AI 之间没有"签字画押"

然后我发现了 OpenSpec。

一、解决什么问题

AI 编程最大的噩梦,不是它写得慢,是它完全按自己的理解来

你脑子里想的是 A,AI 理解的可能是 B,它输出的变成了 C。你还得花时间把 C 改回接近 A 的样子。

这就是没有"需求对齐"的问题。

传统的软件开发里,有个东西叫Spec(需求规格说明书) ——在动手之前,产品、设计、开发三方签字确认"我们要做什么"。

OpenSpec 把这个机制引入了 AI 编程:先签字,再干活

不是让 AI 写文档,是让 AI 和你在"做什么"这件事上真正对齐。

二、OpenSpec 是什么

作者是 Fission-AI,GitHub 上叫 OpenSpec

定位是:The most loved spec framework

核心价值主张:在写代码之前,AI 和人类对"要做什么"达成一致。

它解决的是 Superpowers 和 ECC 没覆盖到的那个环节——Superpowers 管"工程纪律",ECC 管"性能和记忆",OpenSpec 管**"需求对齐"**。

三个工具解决的问题正好互补。

三、核心理念

OpenSpec 的 Philosophy 里有几条我特别认同:

fluid not rigid — 流畅不僵硬

它不是要你写几十页的瀑布式文档。Spec 应该像对话一样自然,迭代式的。

iterative not waterfall — 迭代而非瀑布

以前的需求文档是一次性写完,然后"锁死"。OpenSpec 的 spec 是可以迭代的,每次改动都有记录。

easy not complex — 简单不复杂

不要搞得太重,简单到你可以随时改。

built for brownfield not just greenfield — 支持存量项目

不只是新项目可以用,存量项目也能用。真实开发场景大多是在别人写的代码上改,不是从零新建。

scalable from personal to enterprise — 从个人到企业级

一个人能用,团队也能用。

四、核心工作流

OpenSpec 的工作流就三步,非常简单:

1. propose —— 提案

你告诉 AI:/opsx:propose add-dark-mode

AI 自动生成一整套文档:

  • proposal.md — 为什么要做这个改动
  • specs/ — 具体需求和边界情况
  • design.md — 技术方案
  • tasks.md — 任务清单,每个任务精确到文件路径

这是最让我惊喜的地方——以前要人类自己写需求文档,现在 AI 帮你写。你只需要确认、修改,不需要从零憋字。

2. apply —— 执行

你确认 spec 之后:/opsx:apply

AI 按照 tasks.md 清单一个个执行。每完成一个任务打一个勾,你可以随时喊停。

最关键的是:AI 严格按照 spec 来执行,不会自己跑偏

你改个按钮颜色,它就只改按钮颜色,不会顺手把配色系统重构了。

3. archive —— 归档

收尾:/opsx:archive

归档到 openspec/changes/archive/,保持项目干净,下次新需求不影响旧的。

五、Artifact-Guided Workflow(新功能)

这是 v2 的核心升级。

以前是你手工写 spec,AI 按 spec 执行。现在是 AI 根据你的 idea 自动生成完整 artifact

你只管说想做什么,AI 把 proposal、specs、design、tasks 全套给你生成出来。你审核、修改、确认,然后 apply。

人类只需要在关键节点做决策,不需要从头参与到每一个细节。

六、我的真实感受

惊喜时刻

  • 终于有了一个"需求对齐"的机制。AI 不会自己跑偏,因为它要按 spec 执行
  • propose 之后 AI 自动生成 spec,质量居然还不错
  • 有了 spec 做依据,code review 也轻松多了

崩溃时刻

  • spec 写错了,apply 之后全错了。AI 是严格按照 spec 执行的,spec 对它就是对,spec 错它就错
  • 需要花时间养成写 spec 的习惯,一开始会觉得"这么麻烦干嘛"

适合谁

  • 有一定复杂度的需求,不是"改个 typo"这种
  • 团队协作场景,需要对齐多方预期
  • 讨厌 AI 自己跑偏的人

不适合谁

  • 简单任务,直接让 AI 写反而更快
  • 纯探索性开发,还没想清楚要做什么

七、和 Superpowers + ECC 的关系

这三个工具解决的问题正好互补:

工具解决的问题
OpenSpec需求对齐 — 先签字再动手
Superpowers工程纪律 — TDD、task 分解、子 Agent 编排
ECC性能和记忆 — Token 优化、memory 持久化、安全扫描

OpenSpec 在最上游——它管的是"做什么"。

Superpowers 在中游——它管的是"怎么做"。

ECC 在底层——它管的是"怎么跑得更好"。

三个一起用,才是完整的 AI 编程工作流。

八、技术原理

看完 GitHub 仓库,我发现 OpenSpec 的核心设计非常简洁——它不是给 AI 增加能力,而是给 AI 和人类之间增加一个"共同文档"作为契约

1. 核心机制:Artifact + 人类确认

OpenSpec 的工作流核心是 Artifact 生成 + 人类确认

  1. 提出一个 high-level 的想法("我想加个深色模式")
  2. AI 根据你的想法,自动生成一整套 Artifact(proposal.md、specs、design.md、tasks.md)
  3. 审核、修改、确认这整套文档
  4. AI 严格按照确认后的 Artifact 执行

关键是:在第三步你签字确认之前,AI 不会动手写代码

2. OpenSpec Directory 结构

OpenSpec 在项目根目录创建的结构非常清晰:

openspec/
├── changes/
│   └── archive/         # 每次改动的归档
├── specs/               # 需求规格
├── design/              # 技术方案
├── tasks/               # 任务清单
└── .openspecrc          # 配置文件

这个结构让每一次改动都有据可查、可回滚。

3. propose 的内部逻辑

当 AI 执行 /opsx:propose 时,内部经历:

  1. 理解需求:AI 解析你的自然语言输入
  2. 生成 proposal.md:回答"为什么要做这个改动"
  3. 生成 specs/ :拆解需求成具体规格和边界情况
  4. 生成 design.md:给出技术方案和备选方案
  5. 生成 tasks.md:拆解为可执行的任务清单,每个任务精确到文件路径

这个过程本质上是 Socratic 式的 逆向工程——AI 不是在执行,而是在问你"你要做什么、做到什么程度"。

4. 人类在环(Human-in-the-Loop)

OpenSpec 每一层都有"人类确认"的节点:

想法 → proposal → 你确认 → specs → 你确认 → design → 你确认 → tasks → apply

这不是审批流程,这是 协作编辑。你在确认的过程中可以修改、补充、否定。AI 的 proposal 不是终点,是起点。

5. v2 Artifact-Guided Workflow 的升级

v2 最大的变化是:AI 不再只是执行者,还是提案者

以前是"你写 spec,AI 执行"。现在变成"你说想法,AI 帮你写 spec,你确认,AI 执行"。

从"你主导"变成了"AI 主导生成,你主导确认"——这降低了使用门槛,让不擅长写 spec 的人也能用上这套方法论。

GitHub 仓库:github.com/Fission-AI/…

写在最后

OpenSpec 解决了一个根本问题:AI 编程最大的风险不是 AI 不够聪明,是人类和 AI 对"做什么"没有对齐

你花 10 分钟写清楚 spec,AI 按 spec 执行,省掉的可能是一小时的返工。

当然,它不是万能的。spec 写对了才有效,写错了反而会误导 AI。

核心问题是:你愿不愿意在动手之前,先花时间想清楚"到底要做什么"?

这件事,AI 帮不了你。


你在 AI 编程时有没有过"AI 完全按自己理解来"的经历?最后是怎么解决的?欢迎评论区聊聊。

如果觉得有帮助,点个赞收藏一下,我会更有动力更新下一期。

也欢迎关注我的公众号「清汤饺子」,获取更多技术干货!