当 AI 写代码变成"自动驾驶",我们需要一位"副驾驶"来把握方向。
引言
你是否有过这样的经历?
让 AI 帮你写个功能,它噼里啪啦一顿操作,最后跑出来一堆代码,你一看——功能是对了,但用户体验不对、边界情况没处理、代码风格更是无从谈起。
这就是 AI 编程的痛点:过程爽,结果爽不起来。
今天要介绍的 OpenSpec,就是来解决这个问题的。
01 什么是 OpenSpec
OpenSpec 是一个规范驱动开发框架(Spec-Driven Development,简称 SDD),它的核心思想特别简单:
先写规范,再写代码。
类似于传统软件开发中的需求文档,OpenSpec 让 AI 在写代码之前,先和人类"对齐"要做什么、怎么做、做到什么程度。
官方的 slogan 特别有意思:
"AI coding assistants are powerful but unpredictable when requirements live only in chat history."
翻译过来就是:AI 编程工具很强,但需求只活在聊天记录里的话,结果就不可预测。
核心理念:四个"而不是"
OpenSpec 官网强调四个核心理念:
| 传统方式 | OpenSpec 方式 |
|---|---|
| rigid(固化) | fluid(灵活) |
| waterfall(瀑布) | iterative(迭代) |
| complex(复杂) | easy(简单) |
| 只适合新项目 | brownfield-first(存量项目优先) |
02 核心工作流程
OpenSpec 的工作流程非常清晰,分为三个阶段:
/opsx:propose ──► /opsx:apply ──► /opsx:archive
规划 执行 归档
第一步:提出需求(propose)
你告诉 AI 想做什么:
/opsx:propose add-dark-mode
AI 会自动生成一整套规划文档:
openspec/changes/add-dark-mode/
├── proposal.md # 为什么要做这个功能
├── design.md # 技术方案怎么设计
├── tasks.md # 具体任务清单
└── specs/ # 增量需求规范
第二步:执行实现(apply)
AI 根据 tasks.md 里的清单,一条一条完成代码:
/opsx:apply
它会这样输出:
✓ 1.1 Add theme context provider
✓ 1.2 Create toggle component
✓ 2.1 Add CSS variables
✓ 2.2 Wire up localStorage
All tasks complete!
第三步:归档更新(archive)
功能完成后,归档到正式规范中:
/opsx:archive
这个过程会:
把新增的需求合并到 specs/主规范把变更记录移动到归档目录 保持规范与代码的同步
03 增量规范:Delta Specs
OpenSpec 最核心的概念是 Delta Specs(增量规范)。
它不要求你写出完整的系统规范,而是只写出"这次要改什么":
# Delta for Auth
## ADDED Requirements
### Requirement: Two-Factor Authentication
The system MUST require a second factor during login.
## MODIFIED Requirements
### Requirement: Session Timeout
The system SHALL expire sessions after 30 minutes of inactivity.
(Previously: 60 minutes)
## REMOVED Requirements
### Requirement: Remember Me
(Deprecated in favor of 2FA)
这种方式特别适合:
存量项目改造 小步迭代开发 多功能并行开发(互不干扰)
04 项目结构
初始化后的项目结构:
my-project/
├── openspec/
│ ├── specs/ # 系统规范(真实来源)
│ │ ├── auth/
│ │ │ └── spec.md
│ │ ├── payments/
│ │ │ └── spec.md
│ │ └── ui/
│ │ └── spec.md
│ ├── changes/ # 变更记录
│ │ └── add-dark-mode/
│ │ ├── proposal.md
│ │ ├── design.md
│ │ ├── tasks.md
│ │ └── specs/
│ └── config.yaml # 项目配置
└── src/ # 你的代码
05 适用场景与局限性
非常适合
✅ AI 编程(Cursor、Claude Code、Windsurf 等) ✅ 大型项目需要规范管理 ✅ 团队协作需要统一术语 ✅ 存量项目改造升级
不太适合
❌ 小脚本、一次性代码 ❌ 简单修复( typos、minor bugs) ❌ 个人实验性项目
06 实际使用感受
笔者最近在项目中尝试了 OpenSpec,说几点真实感受:
优点:
AI 不再"自嗨"——它真的会按你的规范来,而不是凭感觉写 需求不丢失——所有的设计决策都留在文档里,不像聊天记录那样丢失 迭代友好——可以随时回溯和修改规范,不影响代码
需要注意:
规范写作需要经验——一开始不知道写多详细,太细了 AI 绑手绑脚,太粗了没效果 适合高推理模型——官方推荐 Opus 4.5 或 GPT 5.2,小模型容易"偷懒" 上下文管理——建议保持干净的上下文窗口,别让 AI "忘乎所以"
国内大模型替代推荐
如果觉得 ChatGPT / Claude 太贵或访问不便,以下是国内替代方案:
| 模型 | 推荐理由 | 参考价格 |
|---|---|---|
| DeepSeek V3 | 代码能力接近 Claude,性价比最高 | ¥1/1M tokens |
| DeepSeek R1 | 推理能力强,适合复杂任务规划 | ¥2/1M tokens |
| 通义千问 Qwen 2.5 Coder | 阿里开源,可本地部署 | 免费开源 |
| 智谱 GLM-4 | 代码理解能力强,稳定 | ¥1/1M tokens |
实测推荐:DeepSeek V3 / R1 是目前国内最适合替代 Claude Opus 的选择,代码和推理能力都不错,且 API 价格仅为 Claude 的 1/10。
07 快速上手
# 1. 安装
npm install -g @fission-ai/openspec@latest
# 2. 初始化项目
cd your-project
openspec init
# 3. 在 AI 编程工具中告诉它
# "请使用 OpenSpec /opsx:propose xxx"
# 4. 开始你的第一个功能
/opsx:propose add-user-login
08 总结
OpenSpec 解决的问题很实际:AI 编程很强,但需要规范来约束。
它不是要替代 AI 编程,而是给 AI 配一个"副驾驶"——先想清楚做什么,再动手。
用一句话总结:
OpenSpec = 给 AI 写代码之前先写"产品需求文档"。
如果你也在用 Cursor、Claude Code 这些工具,不妨试试 OpenSpec,或许能打开新世界的大门。
参考资料:OpenSpec 官方文档 (github.com/Fission-AI/OpenSpec
夜雨聆风