OpenSpec 是给已经跑了一段时间的项目用的。
上一节的 Spec Kit 是从新功能出发的:从头写需求、从头写方案。日常里更常见的是这些:
- 在一个跑了三年的老项目上,给订单列表加个导出
- 改一下登录的超时时间
- 给某个接口加一个参数
这种时候从头写一份完整规格太重。OpenSpec 的做法是:项目里放一份总规格,描述系统现在是什么样;每次改动只写一份增量。
OpenSpec 由 Fission AI 维护,MIT 许可。README 里用五个词描述自己的理念:
- 灵活而不僵硬:没有阶段关卡,哪个文件有意义就先写哪个
- 迭代而不是瀑布
- 简单而不复杂
- 为老项目设计,不只是为新项目
- 从个人项目到企业都能用
一、安装
需要 Node.js 20.19 以上。
npm install -g @fission-ai/openspec@latestmacOS 也可以用 Homebrew:brew install openspec。
然后在项目里初始化:
cd your-project
openspec init它会问你用哪些 AI 工具,选 Claude Code,然后生成:
openspec/
├── specs/ ← 总规格:系统现在是什么样
├── changes/ ← 进行中的改动,一个改动一个文件夹
└── config.yaml ← 项目配置(可选)同时在 .claude/ 下装好 OpenSpec 的命令和 Skill。
以后升级 OpenSpec,运行 openspec update 重新生成这些文件。
二、全景图:三条命令
README 开头用一段对话演示了完整的一轮:先 explore 想清楚,再 propose、apply、archive:

默认安装的是核心配置,日常只用三条命令:
/opsx:propose → /opsx:apply → /opsx:archive
提案 实现 归档| 命令 | 做什么 | 交出什么 |
|---|---|---|
/opsx:explore |
可选:还没想清楚要不要做时,先和 AI 一起调研、讨论 | 不产生文件,只是一场讨论 |
/opsx:propose |
一步生成改动所需的全部规划文件 | openspec/changes/<改动名>/ 下的四个文件 |
/opsx:apply |
按任务清单实现,做完一个勾一个 | 代码,tasks.md 里的勾 |
/opsx:archive |
把增量合并进总规格,改动文件夹移到归档区 | 更新后的 openspec/specs/ |
还有两个辅助命令:/opsx:update 在你改了主意时同步更新规划文件,/opsx:sync 在不归档的情况下先把增量合并进总规格。
全流程只有两处关卡,都在你手上:
propose之后:审一遍规划文件,满意了再applyarchive之前:确认实现符合规格
和 Spec Kit 比,OpenSpec 砍掉了不少步骤。它的 README 直接说 Spec Kit 很全面,但很重,阶段固定、Markdown 文件多;OpenSpec 选择更轻,容忍来回改。
三、一个改动长什么样
在订单导出的项目里运行:
/opsx:propose 给订单列表加 CSV 导出,按当前筛选条件,最多 10 万行它会在 openspec/changes/add-order-export/ 下生成四个文件:
openspec/changes/add-order-export/
├── proposal.md ← 为什么改、改什么
├── specs/
│ └── orders/
│ └── spec.md ← 增量规格:哪些需求是新增的、修改的、删除的
├── design.md ← 技术方案
└── tasks.md ← 实现清单OpenSpec 自己的仓库就在用 OpenSpec 管理需求:openspec/specs/ 下有 36 份总规格,openspec/changes/ 下是一个个进行中的改动。随便打开一个:

除了上面说的四个文件,还有一个隐藏的 .openspec.yaml,记录这个改动的元数据。
1. proposal.md:为什么,改什么
简短的说明:为什么要做这个改动、改动的范围、影响哪些部分。