OpenSpec 完全中文教程:AI 规范驱动开发入门与实战

OpenSpec 中文详细教程

OpenSpec 是一个 AI 原生的规范驱动开发(Spec-Driven Development)框架。它帮助你与 AI 编码助手在写代码之前先达成共识------该构建什么、为什么构建、怎么构建。


目录

  1. 概述
  2. 核心概念
  3. 快速安装与初始化
  4. 目录结构详解
  5. [Spec 规范格式](#Spec 规范格式 "#5-spec-%E8%A7%84%E8%8C%83%E6%A0%BC%E5%BC%8F")
  6. 工作流程
  7. 命令参考
  8. [CLI 命令行工具](#CLI 命令行工具 "#8-cli-%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7")
  9. 配置与定制
  10. 最佳实践
  11. 常见问题

1. 概述

1.1 什么是 OpenSpec?

OpenSpec 是一个轻量级的规范层,放在你的项目和 AI 编码助手之间。它的核心理念是:

css 复制代码
→ fluid not rigid     灵活而非僵化
→ iterative not waterfall  迭代而非瀑布
→ easy not complex     简单而非复杂
→ built for brownfield     面向存量项目而非全新项目
→ scalable from personal projects to enterprises  从小项目到企业级都适用

1.2 解决了什么问题?

AI 编码助手很强大,但当需求只存在于聊天历史中时,结果是不可预测的。OpenSpec 通过一个轻量级的规范层,让你和 AI 在写代码之前就达成一致

  • 先约定再构建 --- 人类和 AI 在代码编写前对齐规范
  • 保持有序 --- 每个变更都有独立的文件夹,包含提案、规范、设计和任务
  • 灵活迭代 --- 随时更新任何工件,没有僵化的阶段关卡
  • 兼容多种工具 --- 支持 25+ 种 AI 编码助手

1.3 与其他方案的对比

方案 特点
GitHub Spec Kit 功能全面但重量级,有僵化的阶段关卡
Kiro (AWS) 功能强大但锁定在特定 IDE 和 Claude 模型
不用任何规范 提示词模糊,结果不可预测
OpenSpec 轻量、灵活、工具无关

2. 核心概念

2.1 Spec(规范)

Spec 是当前系统的行为描述,是"真相的源头"。它回答"系统当前是怎么工作的",而不是"系统应该怎么工作"。

  • 按领域组织(如 auth/payments/ui/
  • 包含需求 (Requirements)和场景(Scenarios)
  • 关注外部可观察的行为,而非内部实现细节

2.2 Change(变更)

Change 是对系统的提议修改,打包成一个文件夹,包含所有理解和实施所需的内容:

bash 复制代码
openspec/changes/add-dark-mode/
├── proposal.md           # 为什么做、做什么
├── design.md             # 怎么做(技术方案)
├── tasks.md              # 实施检查清单
├── .openspec.yaml        # 变更元数据
└── specs/                # 差异规范(Delta specs)
    └── ui/
        └── spec.md       # 相对当前 spec 的变化

2.3 Delta Spec(差异规范)

Delta spec 是 OpenSpec 最关键的创新。它不是重新描述整个系统,而是只描述变化的部分

shell 复制代码
## ADDED Requirements     新增需求
## MODIFIED Requirements  修改的需求
## REMOVED Requirements   移除的需求

好处:

  • 清晰 --- 一眼看出具体在改什么
  • 避免冲突 --- 两个变更可以修改同一个 spec 文件的不同需求
  • 适合存量项目 --- 大部分工作是修改已有系统

2.4 Artifact(工件)

变更文件夹中的各类文档统称为工件,它们之间存在依赖关系:

markdown 复制代码
proposal ──────► specs ──────► design ──────► tasks ──────► implement
    │               │             │              │
  为什么           什么          怎么做        执行步骤
工件 作用
proposal.md 意图、范围、总体方案
specs/ 中的 spec.md 具体的行为需求变更(delta)
design.md 技术方案、架构决策
tasks.md 实施步骤检查清单

2.5 Schema(模式)

Schema 定义了一个工作流包含哪些工件以及它们之间的依赖关系:

yaml 复制代码
name: spec-driven
artifacts:
  - id: proposal
    generates: proposal.md
    requires: []
  - id: specs
    generates: specs/**/*.md
    requires: [proposal]
  - id: design
    generates: design.md
    requires: [proposal]
  - id: tasks
    generates: tasks.md
    requires: [specs, design]

内建 schema:spec-driven(默认),你也可以创建自定义 schema。


3. 快速安装与初始化

3.1 安装

前提条件: Node.js 20.19.0 或更高版本

bash 复制代码
npm install -g @fission-ai/openspec@latest

也支持 pnpm、yarn、bun、nix,详见安装文档

3.2 初始化项目

bash 复制代码
cd your-project
openspec init

初始化过程会:

  1. 创建 openspec/ 目录结构
  2. 询问你要配置哪些 AI 工具(Claude Code、Cursor、Windsurf 等)
  3. 生成对应工具的技能文件(skills)和命令文件(commands)

3.3 验证安装

bash 复制代码
openspec list

如果看到 Active changes: (none),说明安装成功。


4. 目录结构详解

4.1 标准项目结构

csharp 复制代码
your-project/
└── openspec/
    ├── specs/                  # 真相源头 --- 当前系统行为
    │   ├── auth/
    │   │   └── spec.md
    │   ├── payments/
    │   │   └── spec.md
    │   └── ui/
    │       └── spec.md
    ├── changes/                # 提议的变更
    │   ├── add-dark-mode/
    │   │   ├── proposal.md
    │   │   ├── design.md
    │   │   ├── tasks.md
    │   │   └── specs/
    │   │       └── ui/
    │   │           └── spec.md      # Delta spec
    │   └── archive/             # 已完成的历史变更
    │       └── 2026-01-15-add-dark-mode/
    └── config.yaml             # 项目配置(可选)

4.2 各目录/文件说明

路径 说明
specs/ 真相源头。描述系统当前的实际行为。随着变更归档而逐步演化。
specs/[domain]/spec.md 按领域组织的规范文件。每个文件专注一个能力域。
changes/ 活跃的变更。每个变更一个文件夹,包含完整的提案、设计、任务和差异规范。
changes/[name]/proposal.md 变更提案------为什么做、做什么、影响范围。
changes/[name]/design.md 技术设计------架构决策、数据流、文件变更。
changes/[name]/tasks.md 实施任务清单------带复选框的可执行步骤。
changes/[name]/specs/ 差异规范------相对于当前系统的新增/修改/删除。
changes/archive/ 已完成变更的归档。按日期前缀排序。
config.yaml 项目配置。设置默认 schema、注入上下文和规则。

5. Spec 规范格式

5.1 基本结构

markdown 复制代码
# Auth Specification

## Purpose
认证和会话管理。

## Requirements

### Requirement: User Authentication
系统 SHALL 在登录成功时签发 JWT。

#### Scenario: Valid credentials
- GIVEN 一个拥有有效凭证的用户
- WHEN 用户提交登录表单
- THEN 返回 JWT token
- AND 用户被重定向到 dashboard

#### Scenario: Invalid credentials
- GIVEN 无效的凭证
- WHEN 用户提交登录表单
- THEN 显示错误信息
- AND 不签发任何 token

5.2 格式规则

元素 格式 说明
需求标题 ### Requirement: [名称] 唯一标识,用于程序化匹配
场景标题 #### Scenario: [描述] 具体行为示例
行为描述 SHALL / MUST / SHOULD RFC 2119 关键字
场景步骤 GIVEN / WHEN / THEN / AND 加粗的步骤关键字

5.3 Delta Spec 格式(变更差异文件)

markdown 复制代码
# Delta for Auth

## ADDED Requirements

### Requirement: Two-Factor Authentication
系统 MUST 支持 TOTP 双因素认证。

#### Scenario: 2FA enrollment
- GIVEN 一个未启用 2FA 的用户
- WHEN 用户在设置中启用 2FA
- THEN 显示 QR 码供认证器应用配置
- AND 用户必须用验证码验证后才能激活

## MODIFIED Requirements

### Requirement: Session Timeout
系统 SHALL 在 15 分钟无活动后过期会话。
(之前:30 分钟)

## REMOVED Requirements

### Requirement: Remember Me
(已废弃,改用 2FA)

5.4 归档时的合并规则

Delta 类型 归档操作
ADDED 追加到主 spec 中
MODIFIED 替换主 spec 中同名的需求
REMOVED 从主 spec 中删除

6. 工作流程

6.1 默认快速路径(core 模式)

初始化后默认启用,包含 5 个命令:

bash 复制代码
/opsx:propose ──► /opsx:apply ──► /opsx:sync ──► /opsx:archive

6.2 完整工作流(扩展模式)

如需更多控制,启用扩展命令:

bash 复制代码
openspec config profile
openspec update

然后使用:

bash 复制代码
/opsx:new ──► /opsx:ff (或 /opsx:continue) ──► /opsx:apply ──► /opsx:verify ──► /opsx:archive

6.3 完整示例:添加暗黑模式

步骤 1:提出变更
bash 复制代码
You: /opsx:propose add-dark-mode

AI:  Created openspec/changes/add-dark-mode/
     ✓ proposal.md --- 为什么做、做什么
     ✓ specs/       --- 需求和场景
     ✓ design.md    --- 技术方案
     ✓ tasks.md     --- 实施清单
     准备就绪,可以实施!
步骤 2:查看生成的工件

proposal.md

markdown 复制代码
# Proposal: Add Dark Mode

## Intent
用户请求暗黑模式选项,以减少夜间使用时的眼睛疲劳。

## Scope
范围内:
- 在设置中添加主题切换
- 支持系统偏好检测
- 在 localStorage 中持久化偏好

## Approach
使用 CSS 自定义属性实现主题化,React Context 管理状态。

tasks.md

markdown 复制代码
# Tasks

## 1. 主题基础设施
- [ ] 1.1 创建 ThemeContext(light/dark 状态)
- [ ] 1.2 添加颜色 CSS 自定义属性
- [ ] 1.3 实现 localStorage 持久化

## 2. UI 组件
- [ ] 2.1 创建 ThemeToggle 组件
- [ ] 2.2 将切换开关添加到设置页

## 3. 样式
- [ ] 3.1 定义暗黑主题色板
- [ ] 3.2 更新组件使用 CSS 变量
步骤 3:实施
makefile 复制代码
You: /opsx:apply

AI:  正在执行任务...
     ✓ 1.1 创建了 ThemeContext
     ✓ 1.2 添加了 CSS 自定义属性到 globals.css
     ✓ 1.3 实现了 localStorage 持久化
     ✓ 2.1 创建了 ThemeToggle 组件
     ...
     所有任务完成!
步骤 4:归档
bash 复制代码
You: /opsx:archive

AI:  Archiving add-dark-mode...
     ✓ 差异规范已合并到 openspec/specs/ui/spec.md
     ✓ 已移动到 openspec/changes/archive/2026-01-15-add-dark-mode/
     完成!

6.4 其他常用流程

探索性流程(需求不明确时):

bash 复制代码
/opsx:explore ──► /opsx:new ──► /opsx:continue ──► ... ──► /opsx:apply

并行变更:

bash 复制代码
变更 A:  /opsx:new ──► /opsx:ff ──► /opsx:apply (进行中)
                                       │
                                  上下文切换
                                       │
变更 B:  /opsx:new ──► /opsx:ff ──────► /opsx:apply

批量归档:

bash 复制代码
/opsx:bulk-archive

7. 命令参考

7.1 默认命令(core 模式)

命令 功能 使用时机
/opsx:propose 创建变更并一次性生成所有规划工件 默认入口,最快路径
/opsx:explore 探索想法、调查问题、澄清需求 需求不明确时
/opsx:apply 实施变更任务 准备好写代码时
/opsx:sync 将差异规范合并到主规范中 归档前,通常由 archive 自动处理
/opsx:archive 归档已完成变更 所有工作完成后

7.2 扩展命令

命令 功能 使用时机
/opsx:new 创建变更文件夹骨架 想要逐步创建工件时
/opsx:continue 创建下一个工件 想逐个审查每个工件时
/opsx:ff 快进------一次性创建所有规划工件 需求明确时
/opsx:verify 验证实施与工件的一致性 归档前检查
/opsx:bulk-archive 批量归档多个变更 有多个并行变更完成时
/opsx:onboard 引导式教程 新手学习完整流程

7.3 不同 AI 工具的命令语法

工具 语法
Claude Code /opsx:propose
Cursor /opsx-propose
Windsurf /opsx-propose
GitHub Copilot (IDE) /opsx-propose
Kimi CLI /skill:openspec-propose
Trae /openspec-propose

7.4 何时更新 vs 新建变更

更新现有变更当:

  • 意图相同,执行方式优化
  • 范围缩小(先做 MVP)
  • 发现代码库结构与预期不符

新建变更当:

  • 意图根本改变
  • 范围大幅膨胀
  • 原变更可以独立标记"完成"

8. CLI 命令行工具

8.1 常用 CLI 命令

命令 功能
openspec init 初始化项目
openspec update 更新 AI 工具配置
openspec list 列出活跃变更
openspec list --specs 列出所有规范
openspec show <name> 查看变更或规范详情
openspec view 交互式仪表盘
openspec validate <name> 验证变更或规范
openspec validate --all 验证所有内容
openspec status --change <name> 查看工件进度
openspec archive <name> 归档变更
openspec config list 查看配置
openspec config set <key> <value> 修改配置
openspec config profile 配置工作流模式
openspec schema init <name> 创建自定义 schema
openspec schema fork <source> <name> 复制现有 schema
openspec schema validate <name> 验证 schema
openspec schema which <name> 查看 schema 来源
openspec schemas 列出可用 schema
openspec feedback <message> 提交反馈
openspec completion install 安装 shell 自动补全

8.2 JSON 输出(用于 AI Agent 和脚本)

很多命令支持 --json 输出,方便 AI Agent 和 CI 脚本解析:

bash 复制代码
openspec list --json
openspec show add-dark-mode --json
openspec validate --all --json
openspec status --change add-dark-mode --json

8.3 环境变量

变量 说明
OPENSPEC_TELEMETRY=0 禁用匿名使用统计
DO_NOT_TRACK=1 禁用遥测
OPENSPEC_CONCURRENCY 批量验证的并发数(默认 6)
NO_COLOR 禁用颜色输出

9. 配置与定制

9.1 项目配置(config.yaml)

yaml 复制代码
# openspec/config.yaml
schema: spec-driven

context: |
  技术栈:TypeScript, React, Node.js, PostgreSQL
  API 风格:RESTful
  测试:Vitest + React Testing Library
  我们重视所有公共 API 的向后兼容性

rules:
  proposal:
    - 包含回滚计划
    - 指出受影响的团队
  specs:
    - 使用 Given/When/Then 格式
    - 引用现有模式而非从头发明

9.2 自定义 Schema

创建自己的工作流:

bash 复制代码
# 从零创建
openspec schema init my-workflow

# 或者 fork 默认 schema 后再修改
openspec schema fork spec-driven my-workflow
yaml 复制代码
# openspec/schemas/my-workflow/schema.yaml
name: my-workflow
version: 1
description: 我的团队的自定义工作流

artifacts:
  - id: research
    generates: research.md
    requires: []
  - id: proposal
    generates: proposal.md
    requires: [research]
  - id: tasks
    generates: tasks.md
    requires: [proposal]

9.3 三层次定制

层次 说明 适合
项目配置 config.yaml 设置默认值和上下文 大多数团队
自定义 Schema 定义自己的工件和依赖关系 有独特流程的团队
全局覆盖 跨项目共享 schema 高级用户

9.4 社区 Schema

可安装第三方维护的 schema 包,详见自定义文档


10. 最佳实践

10.1 变更命名

sql 复制代码
好:                         避免:
add-dark-mode                feature-1
fix-login-redirect           update
optimize-product-query       changes
implement-2fa                wip

10.2 保持变更聚焦

一个逻辑工作单元 = 一个变更。如果同时做"添加功能 X"和"重构 Y",考虑拆分为两个变更。

10.3 Spec 只描述行为,不描述实现

好的 Spec 内容:

  • 用户或下游系统依赖的可观察行为
  • 输入、输出、错误条件
  • 外部约束(安全、隐私、可靠性)

避免在 Spec 中出现:

  • 内部的类名、函数名
  • 库或框架的选择
  • 逐步实现细节

10.4 渐进式严谨

根据风险级别调整 Spec 详细程度:

轻量 Spec(默认):

  • 简短的行为优先需求
  • 清晰的范围内/范围外
  • 几个具体的验收条件

完整 Spec(高风险时):

  • 跨团队或跨仓库的变更
  • API/契约变更、迁移、安全/隐私相关
  • 歧义可能导致昂贵返工的变更

10.5 推荐使用高推理能力的模型

OpenSpec 在高推理能力模型上表现最佳:

  • 规划阶段:Claude Opus 4.5、GPT 5.2
  • 实施阶段:Claude Opus 4.5、GPT 5.2

10.6 上下文卫生

  • 开始实施前清理上下文窗口
  • 在整个会话中保持良好的上下文卫生

10.7 归档前先验证

bash 复制代码
/opsx:apply ──► /opsx:verify ──► /opsx:archive

/opsx:verify 从三个维度检查:

  1. 完整性 --- 所有任务完成、所有需求实现、场景覆盖
  2. 正确性 --- 实现符合 Spec 意图、边界情况已处理
  3. 一致性 --- 设计决策在代码中体现、模式一致

11. 常见问题

11.1 命令不被识别

markdown 复制代码
可能原因:OpenSpec 未初始化或技能文件未生成
解决:
  1. 确认已运行 openspec init
  2. 运行 openspec update 重新生成技能文件
  3. 重启 AI 工具

11.2 变更未找到

markdown 复制代码
解决:
  1. 明确指定变更名称:/opsx:apply add-dark-mode
  2. 查看活跃变更:openspec list
  3. 确认你在正确的项目目录中

11.3 工件生成不正确

bash 复制代码
解决:
  1. 在 openspec/config.yaml 中添加项目上下文
  2. 添加按工件的规则提供更具体的指导
  3. 提供更详细的变更描述
  4. 使用 /opsx:continue 而非 /opsx:ff 以获得更多控制

11.4 如何升级

bash 复制代码
npm install -g @fission-ai/openspec@latest
cd your-project
openspec update     # 重新生成 AI 指导文件

总结

OpenSpec 的核心价值在于:先约定,再构建

  1. Specs 记录系统当前行为(真相源头)
  2. Changes 提议对系统的修改(差异而非重述)
  3. 实施 让变更变为现实
  4. 归档 将差异合并到真相源头
  5. 循环往复,Specs 逐步演化

整个过程由 AI 驱动、人机协作、灵活迭代。


更多信息:GitHub 仓库 | Discord 社区 | 关注 @0xTab

相关推荐
Beginner x_u2 小时前
前端八股整理总索引|JS/TS、HTML/CSS、Vue、浏览器、工程化与手写题
前端·javascript·html
Cobyte3 小时前
10.响应式系统演进:通过位运算优化动态依赖收集(Vue3.2)
前端·javascript·vue.js
哈里谢顿3 小时前
redis的分布式设计
后端·面试
IT_陈寒3 小时前
Java的HashMap竟然不是线程安全的?刚在生产环境踩了坑
前端·人工智能·后端
JarvanMo3 小时前
再见吧CocoaPods,Swift Package Manager(SPM)即将在Flutter 3.44中成为默认依赖管理器
前端
小则又沐风a3 小时前
基础的开发工具(2)---Linux
java·linux·前端
yqcoder3 小时前
JavaScript 事件流:从“捕获”到“冒泡”的完整旅程
服务器·前端·javascript
字节高级特工3 小时前
MySQL数据库基础与实战指南
数据库·c++·人工智能·后端·mysql·adb