Trae CN SOLO模式使用 OpenSpec 生成规范后代码修改实践
·
Trae作为一款实用工具,虽然功能强大,但在兼容OpenSpec这类编程规范时仍存在局限性。经过多次实验和调整,最终探索出一种可行的替代方案,实际测试表明其效果令人满意。
TRAE工具下载官网:
TRAE - The Real AI Engineer | TRAE - The Real AI Engineer
https://www.trae.cn/ OpenSpec工具下载地址: Fission-AI/OpenSpec: Spec-driven development (SDD) for AI coding assistants.
https://github.com/Fission-AI/OpenSpec
具体操作如下:
1. 在.trae/rule创建以下几个文件,并将匹配的复制进相对应的位置
openspec-apply.md
# OpenSpec Apply 工作流规则
实现已批准的 OpenSpec 变更并保持任务同步。
## 准则
- 优先采用简单、最小化的实现方案,只在明确需要时才增加复杂度
- 保持变更范围紧密聚焦于请求的目标
- 如需了解 OpenSpec 的额外约定或说明,请参考 `openspec/AGENTS.md`
## 步骤
将这些步骤作为 TODO 跟踪,逐一完成:
1. 阅读 `changes/<id>/proposal.md`、`design.md`(如有)和 `tasks.md`,确认范围和验收标准
2. 按顺序完成任务,保持编辑最小化并聚焦于请求的变更
3. 在更新状态前确认完成——确保 `tasks.md` 中的每一项都已完成
4. 所有工作完成后更新检查清单,使每个任务都标记为 `- [x]` 并反映实际情况
5. 需要额外上下文时参考 `openspec list` 或 `openspec show <item>`
## 参考命令
- 实现时如需从提案中获取额外上下文,使用 `openspec show <id> --json --deltas-only`
openspec-archive.md
# OpenSpec Archive 工作流规则
归档已部署的 OpenSpec 变更并更新 specs。
## 准则
- 优先采用简单、最小化的实现方案,只在明确需要时才增加复杂度
- 保持变更范围紧密聚焦于请求的目标
- 如需了解 OpenSpec 的额外约定或说明,请参考 `openspec/AGENTS.md`
## 步骤
1. **确定要归档的变更 ID**:
- 如果提示中已包含特定的变更 ID(例如在 `<ChangeId>` 块中由斜杠命令参数填充),在去除空格后使用该值
- 如果对话中松散地引用了变更(例如通过标题或摘要),运行 `openspec list` 找出可能的 ID,分享相关候选项,并确认用户的意图
- 否则,查看对话,运行 `openspec list`,并询问用户要归档哪个变更;在继续之前等待确认的变更 ID
- 如果仍然无法确定单一的变更 ID,停止并告知用户目前无法归档任何内容
2. 通过运行 `openspec list`(或 `openspec show <id>`)验证变更 ID,如果变更缺失、已归档或未准备好归档则停止
3. 运行 `openspec archive <id> --yes`,让 CLI 移动变更并应用 spec 更新而无需提示(仅对纯工具类工作使用 `--skip-specs`)
4. 查看命令输出,确认目标 specs 已更新且变更已落入 `changes/archive/`
5. 使用 `openspec validate --strict` 验证,如有异常使用 `openspec show <id>` 检查
## 参考命令
- 归档前使用 `openspec list` 确认变更 ID
- 使用 `openspec list --specs` 检查刷新后的 specs,在交接前解决任何验证问题
openspec-proposal.md
# OpenSpec Proposal 工作流规则
创建新的 OpenSpec 变更提案并进行严格验证。
## 准则
- 优先采用简单、最小化的实现方案,只在明确需要时才增加复杂度
- 保持变更范围紧密聚焦于请求的目标
- 如需了解 OpenSpec 的额外约定或说明,请参考 `openspec/AGENTS.md`
- 识别任何模糊或不明确的细节,在编辑文件之前提出必要的后续问题
- **提案阶段不要编写任何代码**。只创建设计文档(proposal.md、tasks.md、design.md 和 spec deltas)。实现在批准后的 apply 阶段进行
## 步骤
1. 查阅 `openspec/project.md`,运行 `openspec list` 和 `openspec list --specs`,检查相关代码或文档(如通过 `rg`/`ls`),以当前行为为基础制定提案;记录任何需要澄清的空白点
2. 选择一个唯一的动词开头的 `change-id`,在 `openspec/changes/<id>/` 下创建 `proposal.md`、`tasks.md` 和 `design.md`(如需要)
3. 将变更映射为具体的能力或需求,将多范围的工作拆分为具有明确关系和顺序的独立 spec deltas
4. 当解决方案跨越多个系统、引入新模式或需要在提交 specs 前进行权衡讨论时,在 `design.md` 中记录架构推理
5. 在 `changes/<id>/specs/<capability>/spec.md` 中草拟 spec deltas(每个能力一个文件夹),使用 `## ADDED|MODIFIED|REMOVED Requirements`,每个需求至少包含一个 `#### Scenario:`,并在相关时交叉引用相关能力
6. 将 `tasks.md` 草拟为有序的小型可验证工作项列表,能够交付用户可见的进展,包括验证(测试、工具),并突出依赖关系或可并行化的工作
7. 使用 `openspec validate <id> --strict` 验证,在分享提案前解决所有问题
## 参考命令
- 验证失败时使用 `openspec show <id> --json --deltas-only` 或 `openspec show <spec> --type spec` 检查详情
- 编写新需求前使用 `rg -n "Requirement:|Scenario:" openspec/specs` 搜索现有需求
- 使用 `rg <keyword>`、`ls` 或直接读取文件探索代码库,确保提案与当前实现现实一致
project_rules.md
# OpenSpec 项目规则
## 通用准则 (Guardrails)
- 优先采用简单、最小化的实现方案,只在明确需要时才增加复杂度
- 保持变更范围紧密聚焦于请求的目标
- 如需了解 OpenSpec 的额外约定或说明,请参考 `openspec/AGENTS.md`(位于 `openspec/` 目录下,可运行 `ls openspec` 或 `openspec update` 查看)
## 代码风格
- 实现应当最小化且聚焦
- 在编辑文件时保持变更范围紧凑
- 完成所有工作后再更新状态
## OpenSpec CLI 命令参考
常用命令:
- `openspec list` - 列出所有变更
- `openspec list --specs` - 列出所有规格文档
- `openspec show <id>` - 显示指定变更详情
- `openspec show <id> --json --deltas-only` - 以 JSON 格式显示变更增量
- `openspec show <spec> --type spec` - 显示规格文档
- `openspec validate <id> --strict` - 严格验证变更
- `openspec archive <id> --yes` - 归档变更
## 搜索与探索
- 使用 `rg <keyword>` 搜索代码库
- 使用 `rg -n "Requirement:|Scenario:" openspec/specs` 搜索现有需求
- 使用 `ls` 或直接读取文件了解当前实现
2. 确保项目有 OpenSpec 结构(如果没有需要初始化)
your-project/
├── .trae/
│ └── rules/
│ ├── project_rules.md
│ ├── openspec-proposal.md
│ ├── openspec-apply.md
│ └── openspec-archive.md
├── openspec/
│ ├── project.md # 项目说明
│ ├── AGENTS.md # AI 约定
│ ├── specs/ # 规格文档
│ └── changes/ # 变更记录
└── src/ # 你的代码目录
3. 在Trae中打开项目
用 Trae IDE 打开你的项目文件夹。
4. 使用规则修改指定文件夹
假设你要修改 `src/components/` 这个文件夹下的内容:
场景 1:创建新功能提案
在 Trae 对话框中输入:
#openspec-proposal 我要修改 src/components/ 文件夹,添加一个 UserProfile 组件,要求:
1. 显示用户头像、名称、邮箱
2. 支持编辑模式
3. 使用 React + TypeScript
AI 会:
- 创建 openspec/changes/add-user-profile/ 目录
- 生成 proposal.md、tasks.md、design.md
- 不会写代码,只做设计
场景 2:实现变更
提案确认后,输入:
#openspec-apply 实现 add-user-profile,修改 src/components/ 文件夹
AI 会:
- 读取提案文档
- 在 src/components/ 下创建/修改文件
- 按 tasks.md 顺序完成任务
- 更新任务状态
场景 3:直接修改(不走完整流程)
如果是小改动,可以只用通用规则:
#project_rules 请修改 src/components/Button.tsx,添加 loading 状态支持
实际示例对话
你:#openspec-proposal 我要重构 src/utils/ 文件夹,将所有工具函数改为 TypeScript 并添加单元测试
AI:好的,我来创建提案...
1. 检查 openspec/project.md 了解项目背景
2. 运行 openspec list 查看现有变更
3. 扫描 src/utils/ 了解当前文件结构
已创建 openspec/changes/refactor-utils-typescript/
- proposal.md: 重构方案说明
- tasks.md:
- [ ] 将 helpers.js 转换为 helpers.ts
- [ ] 将 validators.js 转换为 validators.ts
- [ ] 添加类型定义
- [ ] 编写单元测试
- design.md: 类型设计方案
已通过 openspec validate refactor-utils-typescript --strict
你:#openspec-apply 实现 refactor-utils-typescript
AI:好的,开始实现...
阅读 changes/refactor-utils-typescript/tasks.md
任务 1: 将 helpers.js 转换为 helpers.ts
[修改文件...]
任务 2: 将 validators.js 转换为 validators.ts
[修改文件...]
...
所有任务完成,tasks.md 已更新
你:#openspec-archive 归档 refactor-utils-typescript
AI:好的,归档变更...
运行 openspec archive refactor-utils-typescript --yes
变更已移至 changes/archive/
验证通过
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)