OpenSpec 最佳实践:从“凭感觉”到“照单执行”
OpenSpec 在 Trae 与 Cursor 上的最佳实践:从“凭感觉”到“照单执行”
引言:AI 编程的“凭感觉”困境
想象一下这个场景:周四下午,产品经理找到你:“帮忙加个用户管理功能吧,就是基本的增删改查,应该很简单。”你打开 Cursor,输入需求,AI 很快生成了代码。但你一看——只有简单的列表展示,没有权限控制,没有状态管理,没有批量操作。
于是你开始第二轮、第三轮对话,不断补充需求细节:RBAC 权限、状态转换规则、事务支持……30 分钟过去了,你还在和 AI “拉扯”。
这就是典型的 Vibe Coding(凭感觉编码) ——你和 AI 在“边聊边改”的低效循环中浪费时间,代码质量参差不齐,最终还是要大量返工。
OpenSpec 正是为了解决这个问题而生。
什么是 OpenSpec?
OpenSpec 是一个 AI 原生的规范驱动开发(Spec-Driven Development)系统。它的核心理念只有一句话:在写任何一行代码之前,先和 AI 就“要做什么”达成明确一致,并把这个共识记录成结构化的规范文件,作为整个开发过程的单一事实来源。
OpenSpec 支持 Claude Code、Cursor、Trae 等 22+ 种 AI 编程工具,完全不锁定特定工具。它通过三个核心机制让 AI 编码变得可控:
- 文件化需求:需求不再是聊天记录中的几句话,而是存在项目里的 Markdown 文件
- Delta Spec 机制:改需求时只需描述“什么在变化”,让规范演进清晰可追溯
- 三层验证:从格式到语义到业务逻辑,确保 AI 理解的和你想表达的是同一回事
💡 一个形象的类比:如果 AI 开发是盖楼,OpenSpec 就是建筑施工图——明确“做什么、做成什么样”,避免施工方偏离设计方向。
Part 1:在 Trae 上使用 OpenSpec
场景设定
假设你是一位前端开发者,使用 Trae CN(字节跳动推出的 AI 原生 IDE)开发一个日历功能。你希望用 OpenSpec 来规范整个开发流程。
第一步:安装 OpenSpec CLI
在终端执行以下命令进行全局安装:
npm install -g @fission-ai/openspec@latest
安装完成后,运行 openspec -V 检查版本,确认安装成功。
第二步:初始化项目
进入你的项目目录,执行初始化命令:
cd your-project
openspec init
初始化时,OpenSpec 会提示你选择使用的 AI 工具。由于早期版本的 OpenSpec 初始化选项中暂未直接列出 Trae,你可以选择 Other Tools(适用于 VS Code 等)。
初始化后,项目目录下会生成以下结构:
项目根目录/
├── AGENT.md # 项目级规范(需手动配置)
└── openspec/
├── AGENTS.md # OpenSpec 详细规范
├── project.md # 项目知识库
├── specs/ # 已实现能力规范
└── changes/ # 变更提案
第三步:手动配置 Trae 项目规则
关键步骤来了:老版本的 Trae 不会自动读取 AGENT.md,你需要手动将规范内容添加到 Trae 的“项目规则”中(新版本Trae会自动加载)。
操作方式很简单:打开 Trae 的设置 → 找到“项目规则”或类似配置入口 → 将 openspec/AGENTS.md 中的内容复制进去。这样,Trae 在每次对话时就能“学习”到你的项目规范了。
第四步:配置 OpenSpec 完整工作流
OpenSpec 默认只开了核心命令(如 explore、apply、archive),需要手动解锁全部能力。
在终端执行:
openspec config profile
连续两次回车,选择全部的 skills 和 commands。推荐先选择 Onboard 和 Continue change,再按需选择更多。
然后执行更新命令:
openspec update
重启 Trae 后,你就可以看到新增的 Skills 了。
最后,在 Trae 的 设置 → 对话流 → 命令运行方式 中新增命令白名单,这样在 Solo 模式对话中就能直接识别和执行 OpenSpec 的 skills。
第五步:开始使用 —— 日历功能实战
在 Trae 的 Solo 模式下,输入:
/opsx:onboard 写一个最简单的日历
AI 会根据 onboard 流程自动生成:
proposal.md:需求提案,解释为什么做这个功能design.md:技术设计方案tasks.md:任务拆解清单spec.md:详细的功能规格说明
随后,AI 会按照这些文档逐步生成项目代码,并依据规格说明进行测试验收。
如果在开发过程中有任何修改需求,使用 /opsx:continue 命令即可更新文档和代码。
功能完成后,使用 /opsx:archive 归档这次变更。
Trae 常用 OpenSpec 命令速查
| 命令 | 描述 |
|---|---|
/opsx:new <change-name> |
创建新的 OpenSpec 变更,逐步创建各个 artifact |
/opsx:propose <change-name> |
创建变更并生成所有 artifact |
/opsx:apply <change-name> |
实现变更中的任务 |
/opsx:archive <change-name> |
归档完成的变更【8L22】 |
/opsx:explore |
分析问题,思考解决方案 |
/opsx:continue <change-name> |
继续未完成的变更 |
/opsx:onboard |
引导新用户使用 OpenSpec |
🎯 Trae 最佳实践小结
- 初始化时选择
Other Tools:虽然 Trae 未被直接列出,但完全可用 - 手动配置项目规则:这是 Trae 上使用 OpenSpec 的关键一步
- 解锁全部 commands:用
openspec config profile开启完整工作流 - 善用
/opsx:onboard:这是上手最快的方式,让 AI 帮你生成完整的规范文档
Part 2:在 Cursor 上使用 OpenSpec
场景设定
假设你是某电商公司的后端开发,需要为订单系统新增一个“用户管理”功能,包含:RBAC 权限控制、用户状态管理(激活/禁用/删除)、批量操作、搜索和筛选。你希望用 OpenSpec 在 Cursor 中规范地完成这个任务。
第一步:安装与初始化
和 Trae 一样,首先安装 CLI:
npm install -g @fission-ai/openspec@latest
然后在项目目录下初始化:
cd your-project
openspec init
这次,在初始化提示中选择 Cursor。OpenSpec 会自动为 Cursor 生成适配的目录结构。
第二步:理解 Cursor 的集成机制
OpenSpec 在 Cursor 中的集成主要通过 .cursor/rules/ 和 .cursor/skills/ 目录实现。初始化后,Cursor 会自动识别这些规范文件,在每次对话时加载。
核心工作流程是:
- Cursor 启动时自动读取规范文件
- 当用户请求涉及“提案/规范/变更/计划”等关键词时,自动加载详细规范
- AI 严格按照规范执行任务
第三步:发起变更提案
在 Cursor 的对话中输入:
/openspec:proposal 实现用户管理功能,包含RBAC权限控制、用户状态管理、批量操作、搜索筛选
AI 会根据规范生成完整的变更提案,包括:
proposal.md —— 解释为什么要做、影响范围是什么:
## Why
为订单系统提供完整的用户管理能力,支持管理员对用户进行精细化管理。
## What Changes
- 新增用户列表页面(支持分页、搜索、筛选)
- 新增用户创建/编辑/删除功能
- 新增 RBAC 权限控制(管理员/普通用户)
- 新增用户状态管理(active / disabled / deleted)
- 新增批量操作(批量激活、批量删除)
## Impact
- 新增文件:`UserManagement.jsx`、`userService.js`、`useUserManagement.js`
- 修改文件:`App.jsx`(添加路由)、`api/index.js`(新增接口)
spec.md —— 详细的验收场景(这是 AI 编码的“法律”):
## Requirement: 用户列表展示
系统应以表格形式展示所有用户,支持分页。
Scenario: 成功加载用户列表
- GIVEN 系统中存在至少一个用户
- WHEN 管理员访问用户管理页面
- THEN 显示用户列表,包含姓名、邮箱、角色、状态、操作列
## Requirement: 用户状态转换
系统应支持用户状态的有序转换。
Scenario: 激活用户 → 禁用用户(可逆)
- GIVEN 用户状态为 active
- WHEN 管理员执行“禁用”操作
- THEN 用户状态变为 disabled
Scenario: 激活用户 → 删除用户(不可逆)
- GIVEN 用户状态为 active
- WHEN 管理员执行“删除”操作
- THEN 用户状态变为 deleted,且不可恢复
design.md —— 技术决策:
## Context
订单系统的用户管理模块,需与现有 RBAC 体系兼容。
## Decisions
- 权限控制:复用现有 RBAC 中间件,基于资源进行权限校验
- 状态管理:使用 Zustand 管理用户列表状态
- 批量操作:后端使用数据库事务保证原子性
- API 设计:RESTful 风格,支持分页参数 `page` 和 `size`
## Risks
- 批量删除操作风险较高 → 需二次确认弹窗
- 状态转换规则复杂 → 前端需校验转换合法性
tasks.md —— 可执行的任务清单:
## 1. 前端页面开发
- [ ] 1.1 创建 UserManagement 页面组件
- [ ] 1.2 实现用户列表表格(含分页)
- [ ] 1.3 实现搜索和筛选功能
- [ ] 1.4 实现用户创建/编辑弹窗
- [ ] 1.5 实现用户状态切换操作
## 2. 权限控制
- [ ] 2.1 集成 RBAC 权限校验
- [ ] 2.2 根据角色控制页面元素显隐
## 3. 批量操作
- [ ] 3.1 实现多选功能
- [ ] 3.2 实现批量激活/删除(含二次确认)
## 4. 测试与验收
- [ ] 4.1 单元测试覆盖核心逻辑
- [ ] 4.2 端到端测试覆盖主要流程
第四步:审查规范
这是最关键的一步。在 AI 开始写代码之前,仔细审查这四个文件:
spec.md里的场景是否覆盖了所有边界情况?design.md的技术选型是否合理?tasks.md的任务拆解是否完整?
此时修改成本最低——你只需要改动几行 Markdown,而不是等代码写完后再返工。
第五步:实施
审查通过后,在 Cursor 中输入:
/openspec:apply
AI 会严格按照 tasks.md 中的清单,一步一步地编写代码。每完成一个任务,自动标记为 [x]。你可以随时检查进展。
第六步:归档
功能开发完成并通过测试后:
/openspec:archive
这个命令会将变更文件夹移至 archive/ 目录作为历史记录,并将规范合并到主规范库中。
🎯 Cursor 最佳实践小结
- 初始化时选择
Cursor:OpenSpec 会自动生成适配的目录结构 - 充分利用自动读取:Cursor 会自动加载规范文件,无需手动配置
- 重视规范审查环节:在
apply之前仔细审阅spec.md和design.md - 善用
/openspec:propose:让 AI 帮你生成完整的规范文档初稿
总结:Trae vs Cursor 使用对比
| 对比维度 | Trae | Cursor |
|---|---|---|
| 初始化 | 选择 Other Tools |
选择 Cursor |
| 规范加载 | 需手动配置到“项目规则” | 自动读取 .cursor/rules/ |
| 命令方式 | /opsx:xxx |
/openspec:xxx |
| 上手难度 | 稍高(需手动配置) | 较低(开箱即用) |
| 核心流程 | 提案 → 审查 → 实施 → 归档 | 提案 → 审查 → 实施 → 归档 |
核心 takeaways
无论你用的是 Trae 还是 Cursor,OpenSpec 带来的核心价值是一致的:
- 告别“AI 失忆症”:规范存储在项目文件中,AI 和人随时查阅,不会因切换对话而丢失上下文
- 让 AI 更“听话”:AI 的产出变得可预测、可控制,不再是“黑盒”操作
- 团队协作更顺畅:统一的规范文件让所有人都遵循同一套标准
- 质量可追溯:每个变更从提案到归档全流程可查,便于复盘
OpenSpec 将 AI 编程从依赖“感觉”的艺术创作,转变为基于规范的工程实践。无论你选择 Trae 还是 Cursor,这套方法论都能让你的 AI 开发流程更加可控、高效、可追溯。
更多推荐


所有评论(0)