Skip to content

入门指南

本指南说明在安装和初始化 OpenSpec 后,它的工作方式。有关安装说明,请参阅主 README

工作原理

OpenSpec 帮助您和您的 AI 编程助手在编写任何代码之前,就构建内容达成一致。

默认快速路径(核心配置文件):

text
/opsx:propose ──► /opsx:apply ──► /opsx:archive

扩展路径(自定义工作流选择):

text
/opsx:new ──► /opsx:ff or /opsx:continue ──► /opsx:apply ──► /opsx:verify ──► /opsx:archive

默认的全局配置文件是 core,包含 proposeexploreapplyarchive。您可以通过 openspec config profile 然后 openspec update 来启用扩展的工作流命令。

OpenSpec 创建的内容

运行 openspec init 后,您的项目将具有以下结构:

openspec/
├── specs/              # 事实来源(您系统的行为)
│   └── <domain>/
│       └── spec.md
├── changes/            # 提议的更新(每个变更一个文件夹)
│   └── <change-name>/
│       ├── proposal.md
│       ├── design.md
│       ├── tasks.md
│       └── specs/      # 增量规格(正在变更的内容)
│           └── <domain>/
│               └── spec.md
└── config.yaml         # 项目配置(可选)

两个关键目录:

  • specs/ - 事实来源。这些规格描述了您系统当前的行为。按领域组织(例如,specs/auth/specs/payments/)。

  • changes/ - 提议的修改。每个变更都有自己的文件夹,包含所有相关工件。当变更完成时,其规格会合并到主 specs/ 目录中。

理解工件

每个变更文件夹包含指导工作的工件:

工件用途
proposal.md"为什么"和"什么" - 记录意图、范围和方法
specs/增量规格,显示新增/修改/删除的需求
design.md"如何" - 技术方法和架构决策
tasks.md带有复选框的实施清单

工件相互构建:

proposal ──► specs ──► design ──► tasks ──► implement
   ▲           ▲          ▲                    │
   └───────────┴──────────┴────────────────────┘
            随着了解深入而更新

您随时可以回头完善早期的工件,因为您在实施过程中会了解更多。

增量规格的工作原理

增量规格是 OpenSpec 中的关键概念。它们显示相对于当前规格正在发生的变化。

格式

增量规格使用章节来表示变更类型:

markdown
# Auth 的增量

## 新增需求

### 需求:双因素认证
系统必须在登录期间要求第二个因素。

#### 场景:需要 OTP
- 假设用户启用了 2FA
- 当用户提交有效凭证时
- 那么会呈现 OTP 挑战

## 修改需求

### 需求:会话超时
系统应在 30 分钟不活动后使会话过期。
(之前:60 分钟)

#### 场景:空闲超时
- 假设一个已认证的会话
- 当 30 分钟过去而没有活动时
- 那么会话被失效

## 删除需求

### 需求:记住我
(已弃用,改用 2FA)

归档时会发生什么

当您归档一个变更时:

  1. 新增的需求会被追加到主规格中
  2. 修改的需求会替换现有版本
  3. 删除的需求会从主规格中删除

变更文件夹会移动到 openspec/changes/archive/ 以供审计历史记录。

示例:您的第一个变更

让我们逐步介绍如何向应用程序添加深色模式。

1. 开始变更(默认)

text
You: /opsx:propose add-dark-mode

AI:  已创建 openspec/changes/add-dark-mode/
     ✓ proposal.md — 我们为什么做这个,正在改变什么
     ✓ specs/       — 需求和场景
     ✓ design.md    — 技术方法
     ✓ tasks.md     — 实施清单
     准备好实施!

如果您启用了扩展的工作流配置文件,您也可以分两步完成:/opsx:new 然后 /opsx:ff(或 /opsx:continue 增量进行)。

2. 创建了什么

proposal.md - 记录意图:

markdown
# 提案:添加深色模式

## 意图
用户请求深色模式选项,以减少夜间使用时的眼睛疲劳。

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

## 方法
使用 CSS 自定义属性进行主题设置,并使用 React 上下文进行状态管理。

specs/ui/spec.md - 显示新需求的增量:

markdown
# UI 的增量

## 新增需求

### 需求:主题选择
系统应允许用户在浅色和深色主题之间进行选择。

#### 场景:手动切换
- 假设用户在任何页面上
- 当用户点击主题切换时
- 那么主题立即切换
- 并且偏好在会话间持久化

#### 场景:系统偏好
- 假设用户没有保存的偏好
- 当应用程序加载时
- 那么使用系统的首选配色方案

tasks.md - 实施清单:

markdown
# 任务

## 1. 主题基础设施
- [ ] 1.1 创建具有浅色/深色状态的 ThemeContext
- [ ] 1.2 为颜色添加 CSS 自定义属性
- [ ] 1.3 实现 localStorage 持久化

## 2. UI 组件
- [ ] 2.1 创建 ThemeToggle 组件
- [ ] 2.2 将切换添加到设置页面
- [ ] 2.3 更新 Header 以包含快速切换

## 3. 样式
- [ ] 3.1 定义深色主题调色板
- [ ] 3.2 更新组件以使用 CSS 变量

3. 实施

You: /opsx:apply

AI:  正在处理任务...
     ✓ 1.1 创建了具有浅色/深色状态的 ThemeContext
     ✓ 1.2 将 CSS 自定义属性添加到 globals.css
     ✓ 1.3 实现了 localStorage 持久化
     ✓ 2.1 创建了 ThemeToggle 组件
     ...
     所有任务完成!

在实施过程中,如果您发现设计需要调整,只需更新工件并继续。

4. 归档

You: /opsx:archive

AI:  正在归档 add-dark-mode...
     ✓ 将规格合并到 openspec/specs/ui/spec.md
     ✓ 移动到 openspec/changes/archive/2025-01-24-add-dark-mode/
     完成!准备好进行下一个功能。

您的增量规格现在成为主规格的一部分,记录了您的系统如何工作。

验证和审查

使用 CLI 检查您的变更:

bash
# 列出活动的变更
openspec list

# 查看变更详情
openspec show add-dark-mode

# 验证规格格式
openspec validate add-dark-mode

# 交互式仪表板
openspec view

后续步骤

  • 工作流 - 常见模式以及何时使用每个命令
  • 命令 - 所有斜杠命令的完整参考
  • 概念 - 更深入地理解规格、变更和模式
  • 自定义 - 让 OpenSpec 按您的方式工作