OpenSpec:让 AI 编码助手从"乱猜"到"照单执行"

元信息

核心概念

什么是 OpenSpec?

OpenSpec 是一个轻量级、开源的**规格驱动开发(Spec-Driven Development, SDD)**框架,通过结构化的 Markdown 文件帮助人类和 AI 编码助手在写代码之前就达成一致。

解决的核心问题

  1. 上下文丢失:AI 的记忆是会话级别的,新开对话就忘记之前的架构决策
  2. 需求漂移:没有明确规格约束,AI 容易过度实现或欠拟合
  3. 不可追溯:代码里看不出当初做决策的理由
  4. 协作成本高:团队成员告诉 AI 的上下文不一致

核心思想

把"我们要做什么、为什么做、怎么做"写成结构化的 Markdown 文件,和代码一起存进 Git 仓库。AI 助手从仓库读取持久化的规格文档,然后照单执行。

文件结构

your-project/
├── AGENTS.md              ← AI 助手的项目说明书
└── openspec/
    ├── changes/           ← 进行中的变更(待办队列)
    │   └── add-dark-mode/ ← 一个变更对应一个文件夹
    │       ├── proposal.md   ← 变更说明(为什么做,做什么)
    │       ├── specs/        ← 需求规格(Given/When/Then 场景)
    │       ├── design.md     ← 技术设计(怎么做)
    │       └── tasks.md      ← 任务清单(AI 执行步骤)
    ├── archive/           ← 已完成的变更归档
    └── specs/             ← 主规格文档(持续更新的"活文档")

三阶段工作流

阶段一:规划(Propose)

阶段二:实现(Apply)

阶段三:归档(Archive)

核心文档说明

proposal.md

回答四个问题:

specs/

使用 Given/When/Then 格式写清楚验收条件:

## Scenario: 用户切换到深色模式
Given 用户在浅色模式下
When 用户点击主题切换按钮
Then 页面立即切换为深色配色方案
And 用户的选择被保存到 localStorage

design.md

技术方案文档:怎么做,用什么技术,关键决策是什么

tasks.md

AI 实现时的步骤清单,打勾制度,做一步标一步:

## Phase 1: Theme Infrastructure
- [ ] 1.1 创建 ThemeContext 和 ThemeProvider
- [ ] 1.2 创建 useTheme() Hook
- [ ] 1.3 添加 localStorage 持久化逻辑

安装方式

方式一:使用 Vercel Skills 工具(推荐)

# 安装全套 OpenSpec 技能
npx skills add partme-ai/openspec-skills

# 指定安装到特定 AI 工具
npx skills add partme-ai/openspec-skills --agent cursor
npx skills add partme-ai/openspec-skills --agent claude-code

方式二:直接安装 CLI 工具

# 需要 Node.js 20.19.0 或更高版本
npm install -g @fission-ai/openspec@latest

# 验证安装
openspec --version

核心命令速查

命令 功能
openspec init 在当前项目初始化 OpenSpec
/opsx:new <name> 创建新变更
/opsx:ff 快进:一键生成所有规划文档
/opsx:continue 生成下一个规划文档(分步模式)
/opsx:apply 执行 tasks.md 中的所有任务
/opsx:archive 归档已完成的变更
/opsx:verify 验证实现是否符合规格
openspec validate 校验规格文档完整性

最佳实践

✅ 变更名称要小而精确

✅ 提案要能在 2 分钟内读完

快速对齐,回答四个核心问题即可

✅ specs 写场景,不写感觉

✅ 任务要小,小到可以独立验证

细粒度的任务让 AI 的每一步都可验证

✅ 规划稳定后再开始实现

在执行 /opsx:apply 之前,读一遍文档,改掉不对的地方

✅ 规划和实现分开对话

长对话会积累噪音,新开对话上下文更干净

✅ 做完就归档,保持队列整洁

openspec/changes/ 应该只有当前正在做的工作

常见误区

❌ 误区一:OpenSpec 只适合新项目

真相:专门为存量项目设计,openspec init 不会碰现有代码

❌ 误区二:有了 OpenSpec 就不用思考了

真相:OpenSpec 把"思考"前置了,不是消除了。/opsx:ff 生成的是草稿,需要人工审核

❌ 误区三:一个变更做所有事

正确做法:单次变更控制在 1-3 天的工作量内

❌ 误区四:归档前不用测试

正确做法:先测试、先合并代码,确认没问题再归档

❌ 误区五:把 OpenSpec 当成文档工具

真相:OpenSpec 文件是活的执行规格,用于引导 AI 实现,不是事后补的文档

支持的 AI 工具

支持 20+ AI 编码助手:

通过统一的斜杠命令(/opsx:*)触发相同的工作流,团队协作无缝衔接。

与其他工具对比

工具 定位 复杂度 工具绑定
OpenSpec 轻量 SDD 框架 ⭐⭐ 否,20+ 工具通用
BMAD 多 Agent 协作系统 ⭐⭐⭐⭐⭐
Spec Kit 重型规格管理 ⭐⭐⭐⭐
Kiro (AWS) AI IDE 原生 SDD ⭐⭐⭐ 是(绑定 Kiro IDE 和 Claude)
只写 Prompt 无框架

OpenSpec 的甜蜜点:够轻、够灵活、够通用。

核心价值

有用的链接

总结

OpenSpec 提供的是一套对人类友好、对 AI 友好、对团队友好的工作框架。它让 AI 编码助手从"聪明的随机数生成器"变成"可靠的工程师"。

核心理念:带着规格上路,比漫无目的地催 AI 要快得多、稳得多。