OpenSpec - AI 编程助手的规范驱动开发工具
📋 项目概况
OpenSpec 是一个开源的规范驱动开发工具,专门为 AI 编程助手设计。它通过在编写任何代码之前建立明确的规范,使人类和 AI 编程助手在工作目标上达成一致,从而提供确定性和可审查的输出结果。
核心价值
- 意图锁定:在代码编写前明确约定要构建什么
- 确定性输出:减少 AI 编程助手的不可预测性
- 可审查性:所有变更都有明确的规范依据
- 团队协作:人类和 AI 利益相关者在工作开始前就规范达成一致
- 轻量级:简单工作流,无需 API 密钥,最小化设置
🔍 核心特性
1. 轻量级工作流
- 简单流程:提案 → 审查 → 实施 → 归档
- 无需 API 密钥:本地运行,无外部依赖
- 最小化设置:几分钟即可完成初始化
2. 结构化变更管理
openspec/
├── specs/ # 当前真相(源规范)
│ └── [domain]/
│ └── spec.md
└── changes/ # 提议更新
└── [change-name]/
├── proposal.md # 变更提案
├── tasks.md # 实施任务清单
├── design.md # 技术决策(可选)
└── specs/ # 规范增量
└── [domain]/
└── spec.md
3. 跨工具兼容性
- 原生支持工具:Claude Code、CodeBuddy、Cursor、OpenCode、Qoder 等
- 通用支持:通过 AGENTS.md 存根支持所有其他 AI 助手
- 斜杠命令:支持的工具可使用快捷命令
🚀 快速开始
安装要求
- Node.js >= 20.19.0
安装步骤
-
全局安装 CLI
npm install -g @fission-ai/openspec@latest -
项目初始化
cd my-project
openspec init -
创建第一个变更
# 向 AI 助手请求创建变更提案
"Create an OpenSpec change proposal for adding profile search filters"
# 或使用斜杠命令(支持的工具)
"/openspec:proposal Add profile search filters"
核心工作流
- 起草变更提案 - 捕获你想要的规范更新
- 审查与对齐 - 与 AI 助手一起审查提案直到达成一致
- 实施任务 - 参考约定规范实施任务
- 归档与更新 - 将批准的更新合并回源真相规范
🔧 命令参考
基本命令
openspec list # 查看活动变更文件夹
openspec view # 规范和变更的交互式仪表板
openspec show <change> # 显示变更详情(提案、任务、规范更新)
openspec validate <change> # 检查规范格式和结构
openspec archive <change> [-y] # 将完成的变更移入 archive/
项目管理
openspec update # 更新 AI 指导和斜杠命令绑定
openspec init # 在项目中初始化 OpenSpec
📊 与同类工具对比
vs. spec-kit
OpenSpec 优势:
- 双文件夹模型(specs/ 当前真相,changes/ 提议更新)保持状态和差异分离
- 在修改现有功能或多规范更新时表现更好
- 跨规范更新和演进功能的结构更清晰
spec-kit 优势:
- 绿地/0→1 项目表现更强
- 新功能开发体验更佳
vs. Kiro.dev
OpenSpec 优势:
- 将每个功能的所有变更组织在一个文件夹中
- 更容易跟踪相关规范、任务和设计
- 功能跟踪更加集中化
Kiro.dev 特点:
- 更新分布在多个规范文件夹
- 更灵活的文件组织方式
vs. 无规范开发
无规范的问题:
- AI 编程助手从模糊提示生成代码
- 经常遗漏需求或添加不需要的功能
- 输出结果不可预测
OpenSpec 价值:
- 在编写代码前就约定期望行为
- 提供可预测性和可审查性
- 减少沟通成本和返工
🏗️ 文件格式规范
增量格式(Delta Format)
增量文件显示规范如何变化:
# ADDED Requirements - 新功能
### Requirement: 双因素认证
系统必须在登录期间要求第二因素。
# MODIFIED Requirements - 改变行为(包含完整更新文本)
### Requirement: 用户认证
系统在成功登录时应颁发 JWT。
# REMOVED Requirements - 弃用功能
### Requirement: 旧认证方式
已弃用的认证方法描述。
格式要求
- 使用
### Requirement: <名称>作为标题 - 每个需求至少需要一个
#### Scenario:块 - 需求文本中使用 SHALL/MUST
示例文件结构
AI 生成的规范(openspec/specs/auth/spec.md):
# 认证规范
## 目的
认证和会话管理。
## 需求
### Requirement: 用户认证
系统在成功登录时应颁发 JWT。
#### Scenario: 有效凭据
- 当用户提交有效凭据时
- 那么返回 JWT
AI 生成的变更增量(openspec/changes/add-2fa/specs/auth/spec.md):
# 认证增量
## ADDED 需求
### Requirement: 双因素认证
系统在登录期间必须要求第二因素。
#### Scenario: 需要 OTP
- 当用户提交有效凭据时
- 那么需要 OTP 挑战
AI 生成的任务(openspec/changes/add-2fa/tasks.md):
## 1. 数据库设置
- [ ] 1.1 向用户表添加 OTP 密钥列
- [ ] 1.2 创建 OTP 验证日志表
## 2. 后端实现
- [ ] 2.1 添加 OTP 生成端点
- [ ] 2.2 修改登录流程以要求 OTP
- [ ] 2.3 添加 OTP 验证端点
## 3. 前端更新
- [ ] 3.1 创建 OTP 输入组件
- [ ] 3.2 更新登录流程 UI
👥 团队采用策略
采用步骤
- 初始化 OpenSpec - 在仓库中运行
openspec init - 从新功能开始 - 要求 AI 将即将进行的工作捕获为变更提案
- 增量增长 - 每个变更归档到记录系统的活规范中
- 保持灵活性 - 不同团队成员可以使用 Claude Code、CodeBuddy、Cursor 或任何 AGENTS.md 兼容工具,同时共享相同的规范
最佳实践
- 规范先行:总是在编写代码前明确规范
- 小步快跑:将大功能分解为小的、可管理的变更
- 及时归档:完成实施后立即归档变更
- 团队同步:当有人切换工具时运行
openspec update
🔗 与现有生态系统集成
与 Claude Code 集成
OpenSpec 为 Claude Code 提供:
- 原生斜杠命令支持(
/openspec:proposal、/openspec:apply、/openspec:archive) - 自动上下文注入
- 无缝的工作流集成
与其他 AI 工具集成
通过标准的 AGENTS.md 机制,OpenSpec 可以与任何支持该标准的 AI 编程助手协作。
🎯 使用场景
适用场景
- 现有功能修改:特别是当更新跨越多个规范时
- 团队协作项目:需要明确规范和可审查性的项目
- 复杂功能开发:需要详细规划和分解的功能
- 质量要求高的项目:需要确定性和可追溯性的项目
不太适合的场景
- 简单原型开发:过度工程化
- 单人快速项目:可能增加不必要的开销
- 探索性编程:需要灵活性和快速迭代的项目
🔮 发展前景
OpenSpec 代表了 AI 辅助软件开发的重要趋势:
- 从对话到规范:将模糊的需求转化为明确的规范
- 从不可预测到可确定:通过规范驱动提高 AI 输出的可预测性
- 从个人到团队:支持多人协作的 AI 开发工作流
- 从临时到结构化:建立可持续的知识积累和管理机制
📚 相关资源
- 官方网站:openspec.dev
- GitHub 仓库:Fission-AI/OpenSpec
- 社区:OpenSpec Discord
🔗 相关文档
- Claude Code 完全指南 - Claude Code 详细使用指南
- 规范驱动开发(Spec-Driven Development) - 使用 GitHub spec-kit 实现规范驱动开发
- BMAD 方法论 - AI 代理驱动的敏捷开发框架
最后更新时间:2025-12-19