OpenSpec 实战:4 个命令让 AI 按规矩写代码

0 阅读3分钟

OpenSpec 实战:4 个命令让 AI 按规矩写代码

用 AI 写代码最怕什么?不是它写不出来,而是它写跑偏了——你想要个登录功能,它给你顺手重构了半个项目。OpenSpec 就是解决这个问题的:先把需求、设计、任务拆清楚,再让 AI 动手。写错了还能随时回退修正,不用从头来过。

一、先搞懂 OpenSpec 在干嘛

你可以把 OpenSpec 想象成一个漏斗,需求从上往下越来越具体:

层级文件干什么
最上层proposal.md确定方向——要做什么、为什么做
中上层specs/*.md定义验收标准——做成什么样算合格
中下层design.md技术方案——用什么技术、怎么实现
最底层tasks.md行动清单——拆成一步步可执行的任务

这套东西的核心思路叫 SDD(Spec-Driven Development,规格驱动开发)——先写规格,再写代码。AI 不是对着你一句话需求瞎猜,而是照着一份完整的"施工图纸"干活。

二、四个命令,对应开发的四个阶段

OpenSpec 提供了 4 个 /opsx 开头的快捷命令,刚好覆盖从想法到上线的完整流程。

/opsx:explore — 想清楚再动手

这个命令让 AI 当你的"思考搭档"。你丢一个模糊的想法过去,比如"我想加个支付功能"或者"这段代码太乱了怎么重构",AI 会帮你梳理思路、查阅现有代码、找出潜在的坑。

关键点:这个阶段 AI 绝对不会改你的代码。纯粹的脑暴时间,PM 和开发都能用。

/opsx:propose — 一键生成全套文档

想清楚了,跑这个命令。AI 会一口气帮你生成:

  • proposal.md — 背景和目标
  • design.md — 技术方案
  • specs/*.md — 验收标准
  • tasks.md — 任务拆解

相当于把你脑子里的想法(或者 PM 丢过来的需求文档)转化成一份严谨的"技术契约"。后面 AI 写代码就照着这份契约来,不会跑偏。

/opsx:apply — 真正开始写代码

这是核心阶段。AI 会先读 proposal.mddesign.md 理解上下文,然后严格按照 tasks.md 里的任务列表,一步一步改你的项目代码。每完成一个任务就打勾 - [✅],进度一目了然。

跟直接让 AI "帮我写个 XXX" 的区别在哪?它写出来的代码是对着设计方案和验收标准来的,不是随心所欲瞎写。

/opsx:archive — 收尾归档

tasks.md 里的任务全部完成、代码测试通过后,跑这个命令。AI 会帮你整理归档这次的文档,保持仓库整洁。

三、写错了怎么办?随时回退

如果 OpenSpec 只是个单向流水线,那它跟写个 TODO List 也没什么区别。

它真正值得说的地方是 "Stages are fluid"——阶段是流动的,你可以在任何时候回退修正。这才是规格驱动比"直接让 AI 写"强的地方:出了问题,你知道该改哪里。

在 Apply 阶段发现错误时,根据错误性质走不同的路:

局部错误:改文档,重新跑

比如 design.md 里的技术方案有个细节没考虑到,或者 tasks.md 的任务拆得不对。

处理方式很简单:

  1. 停掉当前的 Apply
  2. 直接改对应的文件
  3. 重新执行 /opsx:apply

不用回到起点,改哪补哪就行。

意图错误:方向跑偏了,退回去重新想

比如做着做着发现,这个需求压根不应该这么做,或者 proposal.md 的范围定错了。

这种情况需要退得更远:

  1. 停掉当前的 Apply
  2. 执行 /opsx:explore 重新梳理思路
  3. 更新 proposal.md 的范围
  4. 重新走 Propose → Apply 流程

openspec-stages-fluid-flowchart.png

说白了,这套工作流不怕你犯错,怕的是你犯了错不知道该回到哪一步去改。OpenSpec 把每个阶段的产出物(proposal、design、tasks)拆得很清楚,哪层出问题就回哪层,不用推倒重来。