第3篇:入门级——OpenSpec:轻量级规范驱动开发
让每次改动都有据可查
3.1 概念:什么是OpenSpec?
OpenSpec是一个轻量级的规范驱动开发工具,定位是“变更即代码”。
与传统的重规范(如Spec-Kit需要提前写完整规范文档)不同,OpenSpec采用增量变更模式:每次改动都记录在changes/目录,完成后归档到specs/。
3.2 核心理念:变更即代码
OpenSpec的目录结构:
text
openspec/
├── changes/ # 活跃变更
│ ├── implement-news-agent/
│ │ ├── proposal.md # 为什么要改
│ │ ├── tasks.md # 要做什么(可勾选)
│ │ ├── design.md # 怎么做(技术决策)
│ │ └── specs/ # 规范增量
│ │ └── news-agent/
│ │ └── spec.md # 新增/修改的规范
│ └── archive/ # 已完成的变更
│ └── 2026-01-15-clarify-requirements/
└── specs/ # 当前真相(所有规范的最终版本)
├── news-agent/
│ └── spec.md
└── event-analysis/
└── spec.md
核心理念:每次变更都是独立的,完成后归档,spec自动合并。
3.3 核心命令
| 命令 | 作用 | 使用场景 |
|---|---|---|
/opsx:new | 创建新变更 | 开始一个新功能 |
/opsx:explore | 纯思考模式 | 需求澄清、方案探索 |
/opsx:apply | 执行任务 | 按tasks.md逐条实现 |
/opsx:archive | 归档变更 | 功能完成后归档 |
详解:/opsx:explore
这是OpenSpec最独特的功能——只思考、不写代码。
使用示例:
text
/opsx:explore
我想用Yahoo Finance API获取股票新闻,评估一下技术可行性。
输出:
markdown
【代码库调研】
- 发现已有`src/utils/http_client.py`可复用
- 需要新建`src/agents/news_agent.py`
【技术评估】
Yahoo Finance API:
- 免费,无需认证
- 限制:每分钟10次请求
- 返回数据:标题、发布时间、摘要
【建议】
采用yfinance库,已在requirements.txt中
【是否生成spec草案?】
它只输出分析和建议,不写业务代码。
详解:/opsx:apply
这是执行核心。改造后,它会按5阶段流程自动执行每个任务。
3.4 解决什么问题?
| 问题 | OpenSpec如何解决 |
|---|---|
| 改动无记录 | 每个变更都有proposal |
| 不知道为什么这么设计 | design.md记录决策 |
| 合规审计难 | archive是完整历史 |
| 新人看不懂代码 | specs是当前真相 |
| 需求变更混乱 | 每次变更独立,可追溯 |
3.5 安装方法
bash
# 安装(需要Node.js 20.19+)
npm install -g openspec-cn/openspec
# 在项目根目录初始化
cd your-project
openspec init
3.6 验证是否生效
bash
# 查看当前变更
openspec list
# 创建第一个变更
/opsx:new my-first-change
如果生成openspec/changes/my-first-change/目录,说明安装成功。
3.7 今天对话中的干货
OpenSpec vs Spec-Kit
| 维度 | OpenSpec | Spec-Kit |
|---|---|---|
| 定位 | 轻量级变更管理 | 重型规范驱动 |
| 文档负担 | 低(按需创建) | 高(前置编写) |
| 学习曲线 | 平缓 | 陡峭 |
| 适合场景 | POC、中小项目 | 大型、合规严格项目 |
Explore的价值
问:Explore和普通对话有什么区别?
答:普通对话中,AI会忍不住写代码。Explore是纯思考模式,AI被强制“只动脑不动手”。非常适合需求澄清和技术调研阶段。
核心洞见
“OpenSpec的核心不是规范,而是规范的变化。”——它记录的不是最终状态,而是从A到B的完整路径。