Skip to content

OpenSpec 深度指南

OpenSpec 是一个规格驱动的 Agent 开发框架。它要求先描述变更、规格和任务,再让 AI Coding Agent 按规格实现。

是什么

很多 Agent 开发失败,不是因为模型不会写代码,而是因为需求没有被说清楚。OpenSpec 解决的是这个问题:在编码前先建立一个项目级规格目录,把“为什么改、改什么、怎么验收”写下来。

初始化后,项目里会出现类似结构:

text
openspec/
  project.md
  specs/
  changes/
    archive/

然后你通过 /opsx:* 这类命令让 Agent 创建变更、补规格、写任务和执行实现。

官方地址

类型地址
官网https://openspec.dev/
官方文档https://openspec.pro/getting-started/
官方 GitHubhttps://github.com/Fission-AI/OpenSpec

适用场景

场景是否推荐
复杂功能开发推荐
团队希望需求、设计、任务可追踪推荐
修改会影响多个模块或接口推荐
一次性小改文案不必使用
不愿意维护项目规格文档可能不适合

安装准备

环境检查命令说明
Node.js / npmnode --versionnpm --version安装 OpenSpec CLI
Gitgit --version追踪规格变更
Coding AgentClaude Code、Codex、Cursor、OpenCode 等加载 OpenSpec 生成的命令
项目根目录pwd建议在项目根目录执行 init

安装方式

npm

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

pnpm

bash
pnpm add -g @fission-ai/openspec@latest

yarn

bash
yarn global add @fission-ai/openspec@latest

bun

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

验证:

bash
openspec --version

初始化项目

进入项目根目录:

bash
cd your-project
openspec init

如果要直接指定工具:

bash
openspec init --tools claude
openspec init --tools codex
openspec init --tools all

openspec init 会创建 openspec/ 目录,并根据选择的工具生成对应命令或 skill。

不同工具的文件落点

工具生成位置说明
Claude Code.claude/skills/openspec-*.claude/commands/opsx/重启 Claude Code 后加载
Codex.codex/skills/openspec-*~/.codex/prompts/opsx-*.mdprompts 可能受 CODEX_HOME 影响
Cursor.cursor/commands/openspec-*.mdCursor 命令文件
OpenCode.opencode/commands/openspec-*.mdOpenCode 命令文件
Windsurf.windsurf/workflows/openspec-*.mdWindsurf workflow
GitHub Copilot.github/prompts/openspec-*.prompt.mdCopilot prompt 文件

命令大全

OpenSpec 有两类命令:CLI 命令和 Agent 内部 slash command。

CLI 命令

命令作用示例注意事项
openspec --version查看版本openspec --version安装后先执行
openspec init初始化当前项目openspec init会生成目录和工具集成
openspec init [path]初始化指定路径openspec init ./app默认是当前目录
openspec init --tools claude只生成 Claude Code 集成openspec init --tools claude适合单工具项目
openspec init --tools codex只生成 Codex 集成openspec init --tools codex会涉及 Codex prompts
openspec init --tools all生成所有支持工具集成openspec init --tools all文件较多,团队项目要先确认
openspec list查看当前 OpenSpec 状态openspec list初始化后验证
openspec update重新生成工具集成文件openspec update升级或配置变化后使用

Agent slash commands

不同宿主工具展示方式不同,但核心通常是 opsx 前缀:

命令作用示例
/opsx:new创建新变更/opsx:new add-dark-mode
/opsx:plan生成或完善计划/opsx:plan add-dark-mode
/opsx:implement按 OpenSpec 任务实现/opsx:implement add-dark-mode
/opsx:review审查规格和实现是否匹配/opsx:review add-dark-mode
/opsx:archive完成后归档变更/opsx:archive add-dark-mode

实际命令名称以 openspec init 生成的文件为准。

推荐工作流

创建一个新功能

text
openspec init
  -> /opsx:new add-dark-mode
  -> 填写 proposal / design / tasks
  -> /opsx:implement add-dark-mode
  -> 运行测试
  -> /opsx:review add-dark-mode
  -> /opsx:archive add-dark-mode

修改已有能力

先让 Agent 阅读 openspec/project.md 和相关 specs/,再创建 change。不要直接让它改代码,否则 OpenSpec 的约束就失效了。

与 Claude Code、Codex、Gemini 的关系

OpenSpec 不是 Coding Agent 本身,而是“规格层”。它通过生成不同宿主可识别的命令和 skill,让 Claude Code、Codex、Cursor、OpenCode 等工具按相同的规格目录工作。

工具推荐方式
Claude Codeopenspec init --tools claude
Codexopenspec init --tools codex
多工具团队openspec init --tools all 后把不需要的文件排除

安全建议

  • openspec/ 是项目资产,团队项目建议纳入版本控制。
  • 初始化前先看 git status,避免混入无关变更。
  • --tools all 会生成较多工具文件,先确认团队是否需要。
  • Codex prompts 可能写到用户级目录,卸载时别只删项目文件。
  • 规格不等于真相,最终仍要用测试和 review 验证。

排错

slash command 没出现

重启对应 Agent。很多工具只在启动时扫描命令文件。

Claude Code 可检查:

bash
ls .claude/skills
ls .claude/commands/opsx

Codex 可检查:

bash
ls .codex/skills
ls ~/.codex/prompts

想添加另一个工具

如果项目已经初始化,可以再次运行:

bash
openspec init --tools codex

OpenSpec 会进入扩展模式,补充对应工具文件。

想清理 OpenSpec

官方公开 CLI 文档没有统一的项目卸载命令。实用做法是手动删除生成文件:

bash
rm -rf openspec
rm -rf .claude/skills/openspec-*
rm -rf .claude/commands/opsx
rm -rf .codex/skills/openspec-*
rm -f ~/.codex/prompts/opsx-*.md

执行前一定先确认这些文件确实不再需要。

总结

OpenSpec 适合复杂需求和团队协作。它牺牲了一点“马上开写”的速度,换来更清晰的需求、可追踪的变更和更稳定的 Agent 执行边界。

如果你的 AI 编程已经从“试试看”进入“真实交付”,OpenSpec 值得作为项目流程的一部分。

用心记录代码与生活