OpenSpec (opsx) 使用指南

OpenSpec 是一个为 AI 编码助手设计的规范驱动开发工具,它通过轻量级的工作流程,确保人类开发者和 AI 助手在编写任何代码之前就能对需求达成明确共识。

为什么需要 OpenSpec?

传统 AI 编码助手的问题

  • AI 根据模糊提示生成不符合需求的代码
  • 遗漏重要功能要求
  • 添加了不必要的功能
  • 代码行为不可预测

OpenSpec 的解决方案

特性 说明
明确共识 在编码前确定所有要求
结构化变更 所有相关文档集中管理
可审查输出 AI 根据明确规范生成代码
版本控制 完整追踪所有变更历史

安装和初始化

系统要求

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

安装

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

验证安装

openspec --version

初始化项目

cd your-project-directory
openspec init

初始化过程会:

  1. 询问您使用的 AI 工具(Claude Code、Cursor 等)
  2. 自动配置相应的斜杠命令
  3. 创建 .openspec/ 目录结构
  4. 生成 AGENTS.md 文件

核心概念

目录结构

openspec/
├── AGENTS.md               # AI 助手使用指南(自动生成)
├── project.md              # 项目专属上下文信息(技术栈、编码规范)
├── specs/                  # 权威基准:当前已部署的功能能力
│   └── [capability]/       # 示例:用户认证、支付处理
│       ├── spec.md         # 需求说明与场景描述
│       └── design.md       # (可选)技术实现模式
├── changes/                # 提案集:正在进行中的活跃工作
│   ├── [change-name]/      # 示例:新增谷歌登录功能
│   │   ├── proposal.md     # 提案背景、核心内容与影响评估
│   │   ├── tasks.md        # 实现任务清单(检查项)
│   │   ├── design.md       # (可选)架构决策文档
│   │   └── specs/          # 增量规格说明
│   └── 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: Two-Factor Authentication
The system MUST require a second factor during login.

#### Scenario: OTP required
- WHEN a user submits valid credentials
- THEN an OTP challenge is required

## MODIFIED Requirements
### Requirement: User Authentication
[完整更新后的内容]

## REMOVED Requirements
### Requirement: Legacy Login
[已废弃的功能描述]

命令详解

OpenSpec 的命令可以分为 CLI 命令Command 命令 两类。

CLI 命令

CLI 命令用于管理配置或项目:

类型 命令 用途
Setup init, update 在项目中初始化和更新 OpenSpec
Browsing list, view, show 探索变更和规格
Validation validate 检查变更和规格的问题
Lifecycle archive 完成已完成的更改
Workflow status, instructions, templates, schemas 支持构建驱动工作流程
Config config 查看和修改设置

常用 CLI 命令示例

# 查看所有活动变更
openspec list

# 交互式规范仪表板
openspec view

# 显示变更详情
openspec show <change-name>

# 验证规范格式
openspec validate <change-name>

# 归档变更
openspec archive <change-name> --yes

# 刷新 AI 指导
openspec update

Command 命令(斜杠命令)

Command 命令用于与 AI 协作,引导 AI 规划和执行 Spec:

命令 说明
/opsx:explore 进入探索模式——思考各种想法,研究问题,明确需求
/opsx:new 使用实验性工件工作流开始新的变更操作
/opsx:continue 恢复上一个功能点,继续进行变更工作
/opsx:ff 一步到位,一次性创建变更并生成实施所需的所有文件
/opsx:apply 执行来自 OpenSpec 更改的任务(开始编码)
/opsx:verify 在归档之前,核实实施情况与变更工件是否一致
/opsx:sync 将变更后的详细规格同步至主规格中
/opsx:archive 在实验工作流程中归档已完成的变更
/opsx:bulk-archive 一次归档多个已完成的更改
/opsx:onboard 启动引导流程

注意/opsx:explore/opsx-explore 是等价的,可以使用冒号或连字符。

支持的 AI 工具

工具 命令格式
Claude Code /openspec:proposal, /openspec:apply, /openspec:archive
Cursor /openspec-proposal, /openspec-apply, /openspec-archive
OpenCode /openspec-proposal, /openspec-apply, /openspec-archive
GitHub Copilot /openspec-proposal, /openspec-apply, /openspec-archive
Amazon Q Developer @openspec-proposal, @openspec-apply, @openspec-archive
Cline .clinerules/ 目录中的规则

完整工作流程

OpenSpec 强制实施严格的三阶段工作流程,以防止需求漂移。

第 1 阶段:创建变更(提案)

这个阶段在将资源投入到”如何”之前,强制要求在”做什么”和”为什么”上保持一致。

要做的事情:

  1. 识别需求:新功能、重构或架构转变
  2. 脚手架:在 openspec/changes/<change-id>/ 下创建唯一目录
  3. 定义规范:为相关功能编写增量(添加、修改、删除)
  4. 计划:创建 tasks.md 文件,将工作分解成可验证的步骤
  5. 验证:使用 openspec validate 确保提案在结构上是合理的

操作步骤:

# 方式1:逐步创建
/opsx:explore 创建项目架构      # 探索模式,明确需求
/opsx:new                       # 开始创建变更
# 然后 AI 会依次创建 proposal、design、specs、tasks

# 方式2:一步到位
/opsx:ff {功能名称}              # 一次性创建所有文件

第 2 阶段:实施

这是编码阶段,AI 会根据前面创建的 Spec 去执行编码任务。

工作步骤:

  1. 上下文加载:AI 读取 proposal.md 和规范以理解需求
  2. 执行:AI 按顺序处理 tasks.md
  3. 跟踪:任务实时标记为已完成

操作步骤:

# 开始实施
/opsx:apply {change-name}

# 如果上下文太长需要新开对话,可以恢复进度
/opsx:continue {change-name}

# 实施完成后验证
/opsx:verify {change-name}

第 3 阶段:归档(集成)

一旦代码部署并验证,变更提案就不再是”提案”,而是现实代码了。

操作步骤:

# 归档已完成的更改
/opsx:archive {change-name}
# 或使用 CLI
openspec archive {change-name} --yes

归档会:

  1. 将 change 文件夹移动到 openspec/changes/archive/
  2. 自动将规范增量应用于 openspec/specs/ 目录

完整使用流程示例

示例:添加用户资料搜索过滤功能

步骤 1:探索需求

/opsx:explore 添加按角色和团队过滤的用户资料搜索功能

与 AI 讨论,明确具体需求和技术方案。

步骤 2:创建变更提案

/opsx:new add-profile-filters

AI 会创建以下文件:

  • openspec/changes/add-profile-filters/proposal.md
  • openspec/changes/add-profile-filters/tasks.md
  • openspec/changes/add-profile-filters/specs/

步骤 3:验证和审查

# 确认变更文件夹存在
openspec list

# 验证规范格式
openspec validate add-profile-filters

# 审查提案详情
openspec show add-profile-filters

步骤 4:完善规范

能否为角色和团队过滤器添加验收标准?

AI 更新相应的规范差异和任务列表。

步骤 5:实施变更

/opsx:apply add-profile-filters

AI 按任务清单逐步实施,并标记完成状态。

步骤 6:验证实施

/opsx:verify add-profile-filters

步骤 7:归档

/opsx:archive add-profile-filters

常见使用场景

1. 新功能开发

/opsx:explore 新功能描述
/opsx:new feature-name
/opsx:apply feature-name
/opsx:verify feature-name
/opsx:archive feature-name

2. 代码重构

/opsx:explore 重构目标和范围
/opsx:new refactor-module-name
# ... 后续步骤同上

3. Bug 修复

/opsx:new fix-bug-description
# 在 proposal 中详细描述问题原因和修复方案
/opsx:apply fix-bug-description

4. 架构调整

/opsx:explore 架构调整方案
# 充分讨论后再创建变更
/opsx:new architecture-update

最佳实践

1. 小步快跑

不要在一个 change 中做太多事情,建议按模块/功能点逐步迭代:

✅ 好:add-user-auth
✅ 好:add-dark-mode
❌ 不好:add-all-features-at-once

2. 充分探索

在创建变更之前,使用 /opsx:explore 充分讨论需求和方案。

3. 保持上下文同步

如果修改了已归档的规范,使用 /opsx:sync 同步更新:

/opsx:sync {change-name}

4. 团队协作

  • 不同团队成员可以使用不同的 AI 工具
  • 共享相同的规范文件
  • 切换工具时运行 openspec update

5. 项目上下文配置

初始化后,完善 project.md 文件:

# Project Context

## Tech Stack
- Frontend: React + TypeScript
- Backend: Node.js + Express
- Database: PostgreSQL

## Code Conventions
- 使用 TypeScript 严格模式
- 组件名使用 PascalCase
- 函数名使用 camelCase

常见问题

Q1: AI 助手没有显示新的斜杠命令?

A: 重启 AI 编码助手,然后运行 openspec update 刷新指导。

Q2: 上下文太长怎么办?

A: 新开对话后使用 /opsx:continue {change-name} 恢复进度。

Q3: 可以同时处理多个变更吗?

A: 是的,OpenSpec 支持同时存在多个变更提案,但建议一次只应用一个。

Q4: 如何修改已归档的规范?

A: 创建一个新的变更提案,通过相同的流程来更新现有规范。

Q5: 规范格式要求?

A:

  • 使用 ### Requirement: 作为标题
  • 每个要求至少需要一个 #### Scenario:
  • 在要求文本中使用 SHALL/MUST

参考链接