OpenSpec

为 AI 编程助手设计的规范驱动开发 (SDD) 工具

通过轻量级的工作流程,确保人类开发者和 AI 助手在编写任何代码之前就能对需求达成明确共识。


立即开始

为什么需要 OpenSpec?

传统 AI 编程助手的痛点

  • AI 根据模糊提示生成不符合需求的代码。
  • 遗漏重要功能要求或误加入不必要的功能。
  • 代码行为不可预测,修改过程混乱。

OpenSpec 的解决方案

  • 明确共识:编码前确认所有需求。
  • 结构化变更:文档集中管理,清晰可追踪。
  • 可审查输出:AI 生成代码可预测且易审查。
  • 版本控制:完整追踪变更历史。

核心特点

轻量级

无需 API 密钥,最小化设置,快速上手。

🔄

现有项目优先

特别适合修改现有功能(1→n 开发),增量更新。

📝

变更跟踪

完整生命周期管理,跟踪提案、任务和规范差异。

🤖

AI 工具集成

支持 Claude Code, Cursor, GitHub Copilot 等。

准备工作 & 快速开始

系统要求

Node.js >= 20.19.0
支持的 AI 编程助手(如 Claude Code、Cursor 等)

1. 安装 CLI

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

2. 验证安装

$ openspec --version

3. 初始化项目

$ cd your-project-directory
$ openspec init
# 初始化过程会:
# - 询问使用的 AI 工具
# - 自动配置斜杠命令
# - 创建 openspec/ 目录
# - 生成 AGENTS.md

4. 验证设置

$ openspec list

核心概念:双文件夹模型

OpenSpec 使用两个核心目录来管理规范的生命周期。

openspec/specs/ 单一事实来源 openspec/changes/ 提议的变更 Merge / Archive

规范格式 (Markdown)

# Auth Specification
## Purpose
Authentication and session management.
## Requirements
### Requirement: User Authentication
The system SHALL issue a JWT on successful login.
#### Scenario: Valid credentials
- WHEN a user submits valid credentials
- THEN a JWT is returned

变更差异 (Delta)

# Delta for Auth
## ADDED Requirements
### Requirement: 2FA
The system MUST require a second factor.
#### Scenario: OTP required
- WHEN a user submits valid credentials
- THEN an OTP challenge is required

完整工作流程

1. 提案 /openspec:proposal 2. 审查 validate / show 3. 实施 /openspec:apply 4. 归档 archive

1. 起草变更提案

AI 自动创建目录和文件:proposal.md, tasks.md, specs/。

2. 审查与对齐

与 AI 助手讨论,确保所有人对规范达成一致。

3. 实施任务

AI 按照任务清单逐步实施,完成任务后标记。

4. 归档与更新

归档完成的变更,更新主规范并移入 archive/。

实际示例:添加用户资料搜索过滤

workflow-demo
# 1. 创建提案
$ /openspec:proposal Add profile search filters

# 2. 验证和审查
$ openspec validate add-profile-filters
$ openspec show add-profile-filters

# 3. 实施变更 (AI 自动执行)
$ /openspec:apply add-profile-filters

# 4. 归档
$ /openspec:archive add-profile-filters

常见问题

AI 助手没有显示新的斜杠命令怎么办?
重启 AI 编程助手并运行 openspec update。如果问题仍然存在,可以尝试重新初始化 OpenSpec 配置:openspec init --force
可以同时处理多个变更吗?
是的,OpenSpec 支持多个变更提案并行处理,但每次只能应用一个。建议为不同的功能领域创建单独的变更提案,以保持代码库的清晰性。
如何修改已归档的规范?
创建新的变更提案,通过相同流程更新现有规范。OpenSpec 会自动处理规范的版本管理,确保所有变更都有可追溯的历史记录。
OpenSpec 适用于绿地项目吗?
虽然特别适合修改现有功能,OpenSpec 也可以用于新项目,建议从简单功能开始。对于新项目,可以使用 OpenSpec 来建立完整的规范体系,为后续的开发和维护奠定基础。
OpenSpec 如何与版本控制系统集成?
OpenSpec 完全兼容 Git 等版本控制系统。规范文件存储在项目目录中,可以像代码一样提交和管理。建议为规范变更创建单独的提交,以便于跟踪和审查。
如何处理复杂的规范变更?
对于复杂的变更,建议将其分解为多个小的、可管理的变更提案。这样可以更容易地审查和验证每个变更,减少引入错误的风险。
OpenSpec 支持哪些编程语言和框架?
OpenSpec 是语言无关的,理论上可以用于任何编程语言和框架。它通过通用的规范格式和变更管理流程,为不同技术栈提供统一的开发方法。
如何衡量 OpenSpec 对开发效率的影响?
可以通过以下指标来衡量:
  • 需求变更频率的减少
  • 缺陷率的降低
  • 开发周期时间的缩短
  • 团队协作效率的提高
  • 代码质量和可维护性的改善

许多采用 OpenSpec 的团队报告说,这些指标都有显著的改善。