OpenSpec 规格驱动开发
预计阅读时间: 16 分钟OpenSpec 是一个规格驱动开发(Spec-Driven Development)框架,为 AI 编程助手提供结构化的规格层。它解决了一个核心问题:当需求只存在于聊天记录中时,AI 的输出是不可预测的。OpenSpec 让人和 AI 在写代码之前先"对齐要构建什么"。
为什么需要 OpenSpec
直接告诉 Claude Code "帮我做一个功能",可能会遇到:
- AI 理解的需求和你的意图有偏差
- 缺少明确的验收标准,改完不知道对不对
- 需求变更时,之前的上下文已经丢失
- 多人协作时,没有共享的需求文档
OpenSpec 通过规格文档解决这些问题——每个变更都有独立的文件夹,包含提案、规格、设计和任务清单,所有内容都提交到 Git,成为持久化的上下文。
安装
系统要求
- Node.js 20.19.0 或更高版本
- Claude Code — 必须已安装
安装 OpenSpec
也支持其他包管理器:
初始化项目
在项目目录中运行:
初始化会创建以下结构:
openspec init 会自动检测已安装的 AI 工具并生成对应的命令文件。对于 Claude Code,会创建 .claude/commands/opsx/ 目录。
通过 CC-Switch 安装
如果你已安装 CC-Switch,可以通过 Skills 市场发现 OpenSpec 相关的社区 Skills:
- 打开 CC-Switch Desktop
- 进入 Skills 市场
- 搜索 "openspec"
- 选择需要的 Skills 安装到 Claude Code
OpenSpec 的核心安装需要运行 openspec init 来初始化项目结构和命令文件。CC-Switch 主要用于发现和管理 OpenSpec 发布到 skills.sh 的独立 Skills。
核心工作流
OpenSpec 的核心是三步工作流:
第一步:Propose(提案)
在 Claude Code 中运行:
OpenSpec 会创建一个变更文件夹,包含:
每个文件都是结构化的 Markdown,AI 会根据你的描述自动生成初稿,你可以逐个审阅和修改。
proposal.md 是变更的入口——它定义了意图、范围和方法。所有后续文件都基于提案生成。
第二步:Apply(实现)
审阅完规格后,让 Claude Code 按照任务清单实现:
Claude Code 会:
- 读取
tasks.md中的任务清单 - 逐个实现每个任务
- 完成后自动勾选复选框
第三步:Archive(归档)
实现完成后,归档变更:
归档操作会:
- 将增量规格合并到主规格目录(
openspec/specs/) - 将变更文件夹移动到带日期的归档目录
- 更新规格源,反映系统的新状态
归档后的规格成为"活文档"——它描述了系统当前的行为。下次修改时,新的提案会基于这些规格生成增量变更。
探索模式
当你还不确定要做什么时,用探索模式:
探索模式会开启一个开放式对话,不会生成任何文件。适合:
- 调研可行性
- 讨论技术方案
- 澄清需求
确认方向后,再用 /opsx:propose 创建正式的变更提案。
扩展工作流
通过配置 Profile 启用更多命令:
扩展命令
工作流模式
快速功能(需求明确):
探索式(需求不明确):
并行变更:
同时维护多个变更文件夹,各自独立推进。
配置
项目配置
配置文件位于 openspec/config.yaml:
OpenSpec 支持多语言输出——在 context 中设置 语言:中文(简体),AI 会用中文生成所有规格文档。
自定义 Schema
Schema 定义了制品类型和依赖关系。默认使用 spec-driven:
创建自定义 Schema:
CLI 命令
规格文档结构
每个变更文件夹包含四个核心制品:
proposal.md(提案)
specs/(规格)
design.md(设计)
tasks.md(任务)
实战场景
场景一:将 OpenSpec 引入现有代码库
项目已经开发了一半,想引入 OpenSpec 规范后续变更:
OpenSpec 会分析现有代码结构,生成当前系统的"现状快照"作为基线规格。之后的变更都从这个基线出发。
用 /opsx:explore 不会生成任何文件——它是零副作用的探索。确认方案后再用 /opsx:propose 创建正式规格。
场景二:技术预研与可行性调研
不确定某个技术方案是否可行:
探索模式会帮你分析技术选型的利弊,不会创建任何变更文件夹。调研结果留在聊天记录中,确认可行后再 propose。
场景三:需求方向明确,细节需要澄清
知道要做什么,但细节还不够清楚:
通过 new → continue → continue 逐步生成制品,每一步都可以审阅和修改。
场景四:需求清晰,快速实现
知道自己要什么,直接走快速通道:
场景五:中断后恢复进度
开会到一半被打断了?apply 会自动从 tasks.md 的断点继续:
OpenSpec 读取 tasks.md,找到第一个未勾选的复选框,从那里继续。不需要记住上次做到哪里。
场景六:实现后发现规格有遗漏
代码写到一半发现规格少定义了一个接口:
- 手动编辑
tasks.md,添加遗漏的任务 - 继续执行
/opsx:apply - 或者用
/opsx:verify验证实现与规格的一致性
场景七:多任务并行
同时推进多个不相关的功能:
三个变更文件夹互相独立,各自推进。完成后:
场景八:系统化 Bug 修复
Bug 也可以用 OpenSpec 管理:
场景九:大规模重构
重构不能一步到位,需要分阶段:
在 tasks.md 中将任务分阶段:
每个 Phase 执行一次 /opsx:apply,确认无误后再进入下一阶段。
场景十:多人协作与代码审查
团队协作时,每人负责不同的变更:
openspec sync 会检测多个变更之间的依赖和冲突,bulk-archive 在确认无冲突后批量归档。
最佳实践
配置项目上下文
第一次使用 OpenSpec 时,在 config.yaml 中配置项目上下文——这是一次性投入,长期受益:
配置后,AI 生成的所有规格文档都会使用你的技术栈和语言,不需要每次重复说明。
先探索后动手
不确定要做什么时,先用 /opsx:explore——它是零副作用的。确认方向后再 propose,避免在错误方向上浪费时间。
单一职责原则
每个变更文件夹只做一件事。"添加用户认证 + 重构数据库 + 修复分页 Bug" 应该拆成 3 个变更。
归档是知识积累
归档不只是清理——归档后的规格描述了系统当前的行为。下次变更时,新提案基于这些规格生成增量变更。定期 openspec list 检查未归档的变更。
清理对话历史
执行 /opsx:apply 前用 /clear 清理对话历史,避免无关上下文干扰 AI 的执行质量。
与其他工具的关系
OpenSpec vs Superpowers
Superpowers 和 OpenSpec 解决不同层面的问题:
两者可以结合使用:OpenSpec 社区提供了 superpowers-bridge Schema,将 Superpowers 的头脑风暴、TDD、代码审查等 Skills 桥接到 OpenSpec 的工作流中。
OpenSpec vs Gstack
Gstack 聚焦工程团队模拟(QA、安全、浏览器测试),OpenSpec 聚焦需求规格化。两者互补:用 OpenSpec 定义需求,用 Gstack 的 /review 和 /qa 做质量保障。
相关资源
- OpenSpec GitHub — 项目仓库(52k+ Stars)
- OpenSpec 文档 — 官方文档网站
- OpenSpec npm — npm 包页面
下一步
- OpenSpec + Superpowers 双层规划 — 企业级双层规划工作流
- Superpowers 插件 — 互补的结构化开发方法论
- CC-Switch 配置管理 — 管理 API Provider 和 Skills
- 自定义技能 — 创建和管理自定义 Skills
- Ralph 自主循环 — 互补的自主实现方案

