腾讯围棋2026
76.33MB · 2026-02-04
本指南帮助你从旧版 OpenSpec 工作流平滑迁移到 OPSX。迁移过程设计为无缝衔接——你现有的工作会被保留,新系统提供更大的灵活性。
OPSX 用流畅的、基于动作的方式取代了旧的阶段锁定工作流:
| 方面 | 旧版 | OPSX |
|---|---|---|
| 命令 | /openspec:proposal, /openspec:apply, /openspec:archive | /opsx:new, /opsx:continue, /opsx:apply 等 |
| 工作流 | 一次性创建所有产物 | 增量创建或一次性创建——由你选择 |
| 回退 | 笨拙的阶段门控 | 自然流畅——随时更新任何产物 |
| 定制化 | 固定结构 | 基于 Schema,完全可定制 |
| 配置 | CLAUDE.md 标记 + project.md | 简洁的 openspec/config.yaml |
核心理念变化: 工作不是线性的,OPSX 不再假装它是。
迁移过程以保留为原则设计:
openspec/changes/ 中的活跃变更 — 完全保留,可用 OPSX 命令继续openspec/specs/ 中的主规格 — 不受影响,这是你的真实来源CLAUDE.md、AGENTS.md 等文件中的内容 — 保留,只移除 OpenSpec 标记块,你写的内容都会保留只有被替换的 OpenSpec 管理文件会被移除:
| 内容 | 原因 |
|---|---|
| 旧版斜杠命令目录/文件 | 被新的 skills 系统替代 |
openspec/AGENTS.md | 已废弃的工作流触发器 |
CLAUDE.md、AGENTS.md 等文件中的 OpenSpec 标记 | 不再需要 |
各工具的旧版命令位置(示例):
.claude/commands/openspec/.cursor/commands/openspec-*.md.windsurf/workflows/openspec-*.md.clinerules/workflows/openspec-*.md.roo/commands/openspec-*.md.github/prompts/openspec-*.prompt.md迁移会检测你配置的工具并清理其旧版文件。这些都是 OpenSpec 原本创建的文件,你自己的内容永远不会被删除。
有一个文件需要手动迁移:
openspec/project.md — 此文件不会自动删除,因为可能包含你编写的项目上下文。你需要:
openspec/config.yaml(见下文指导)为什么做此改变:
旧的 project.md 是被动的——AI 可能读取它,可能不读,可能忘记读过的内容。我们发现可靠性不一致。
新的 config.yaml 上下文会主动注入到每个 OpenSpec 规划请求中。这意味着你的项目约定、技术栈和规则在 AI 创建产物时始终存在。可靠性更高。
权衡:
因为上下文会注入到每个请求中,你需要保持简洁。专注于真正重要的内容:
不用担心做到完美。我们仍在探索什么最有效,会随着实验改进上下文注入的工作方式。
openspec init 和 openspec update 都会检测旧版文件并引导你完成相同的清理过程。根据你的情况选择:
openspec init如果你想添加新工具或重新配置已设置的工具,运行此命令:
openspec init
init 命令会检测旧版文件并引导你完成清理:
升级到新版 OpenSpec
OpenSpec 现在使用 agent skills,这是编码 AI 的新兴标准。
这简化了你的设置,同时保持一切正常工作。
要移除的文件
无需保留用户内容:
• .claude/commands/openspec/
• openspec/AGENTS.md
要更新的文件
OpenSpec 标记将被移除,你的内容会保留:
• CLAUDE.md
• AGENTS.md
需要你注意
• openspec/project.md
我们不会删除此文件。它可能包含有用的项目上下文。
新的 openspec/config.yaml 有一个 "context:" 部分用于规划上下文。
这会包含在每个 OpenSpec 请求中,比旧的 project.md 方式更可靠。
检查 project.md,将有用内容移至 config.yaml 的 context 部分,
然后在准备好时删除该文件。
? 升级并清理旧版文件?(Y/n)
确认后会发生什么:
CLAUDE.md、AGENTS.md 等文件中的 OpenSpec 标记被剥离(你的内容保留)openspec/AGENTS.md 被删除.claude/skills/openspec/config.yaml 并设置默认 schemaopenspec update如果你只想迁移并将现有工具刷新到最新版本,运行此命令:
openspec update
update 命令也会检测并清理旧版产物,然后将你的 skills 刷新到最新版本。
用于脚本化迁移:
openspec init --force --tools claude
--force 标志跳过提示并自动接受清理。
旧的 openspec/project.md 是一个自由格式的 markdown 文件,用于项目上下文。新的 openspec/config.yaml 是结构化的,关键是——会注入到每个规划请求中,所以你的约定在 AI 工作时始终存在。
# 项目上下文
这是一个使用 React 和 Node.js 的 TypeScript monorepo。
我们使用 Jest 进行测试,遵循严格的 ESLint 规则。
我们的 API 是 RESTful 的,文档在 docs/api.md。
## 约定
- 所有公共 API 必须保持向后兼容
- 新功能应包含测试
- 规格使用 Given/When/Then 格式
schema: spec-driven
context: |
技术栈:TypeScript、React、Node.js
测试:Jest + React Testing Library
API:RESTful,文档在 docs/api.md
我们为所有公共 API 保持向后兼容
rules:
proposal:
- 为风险变更包含回滚计划
specs:
- 场景使用 Given/When/Then 格式
- 在发明新模式前参考现有模式
design:
- 为复杂流程包含序列图
| project.md | config.yaml |
|---|---|
| 自由格式 markdown | 结构化 YAML |
| 一大块文本 | 分离的上下文和按产物的规则 |
| 不清楚何时使用 | 上下文出现在所有产物中;规则只出现在匹配的产物中 |
| 无 schema 选择 | 显式 schema: 字段设置默认工作流 |
迁移时要有选择性。问自己:"AI 在每个规划请求中都需要这个吗?"
适合放入 context: 的内容
应移至 rules: 的内容
完全省略的内容
创建 config.yaml(如果 init 尚未创建):
schema: spec-driven
添加你的上下文(保持简洁——这会进入每个请求):
context: |
你的项目背景放在这里。
专注于 AI 真正需要知道的内容。
添加按产物的规则(可选):
rules:
proposal:
- 你的 proposal 特定指导
specs:
- 你的规格编写规则
删除 project.md,一旦你移动了所有有用内容。
不要想太多。 从基本要素开始,然后迭代。如果你注意到 AI 遗漏了重要内容,添加它。如果上下文感觉臃肿,精简它。这是一个活文档。
如果你不确定如何提炼你的 project.md,问你的 AI 助手:
我正在从 OpenSpec 的旧 project.md 迁移到新的 config.yaml 格式。
这是我当前的 project.md:
[粘贴你的 project.md 内容]
请帮我创建一个 config.yaml,包含:
1. 简洁的 `context:` 部分(这会注入到每个规划请求中,所以保持紧凑——专注于技术栈、关键约束和经常被忽略的约定)
2. 如果有产物特定的内容,为特定产物添加 `rules:`(例如,"使用 Given/When/Then" 属于 specs 规则,不是全局上下文)
省略 AI 模型已经知道的通用内容。对简洁性要无情。
AI 会帮你识别什么是必要的,什么可以精简。
迁移后,你有 9 个 OPSX 命令而不是 3 个:
| 命令 | 用途 |
|---|---|
/opsx:explore | 无结构地思考想法 |
/opsx:new | 开始一个新变更 |
/opsx:continue | 创建下一个产物(一次一个) |
/opsx:ff | 快进——一次创建所有规划产物 |
/opsx:apply | 从 tasks.md 实现任务 |
/opsx:verify | 验证实现是否匹配规格 |
/opsx:sync | 预览规格合并(可选——如需要会提示归档) |
/opsx:archive | 完成并归档变更 |
/opsx:bulk-archive | 批量归档多个变更 |
| 旧版 | OPSX 等效 |
|---|---|
/openspec:proposal | /opsx:new 然后 /opsx:ff |
/openspec:apply | /opsx:apply |
/openspec:archive | /opsx:archive |
细粒度产物创建:
/opsx:continue
基于依赖关系一次创建一个产物。当你想审查每一步时使用。
探索模式:
/opsx:explore
在提交变更前与伙伴一起思考想法。
旧版工作流强制线性进展:
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 规划阶段 │ ───► │ 实现阶段 │ ───► │ 归档阶段 │
└──────────────┘ └──────────────┘ └──────────────┘
如果你在实现阶段发现设计有问题?
太糟糕了。阶段门控不让你轻松回退。
OPSX 使用动作,而不是阶段:
┌────────────────────────────────────────┐
│ 动作(不是阶段) │
│ │
│ new ◄──► continue ◄──► apply ◄──► archive │
│ │ │ │ │ │
│ └──────────┴───────────┴───────────┘ │
│ 任意顺序 │
└────────────────────────────────────────┘
产物形成有向图。依赖是启用器,不是门控:
proposal
(根节点)
│
┌─────────────┴─────────────┐
│ │
▼ ▼
specs design
(需要: (需要:
proposal) proposal)
│ │
└─────────────┬─────────────┘
│
▼
tasks
(需要:
specs, design)
当你运行 /opsx:continue 时,它检查什么已准备好并提供下一个产物。你也可以按任意顺序创建多个已准备好的产物。
旧系统使用工具特定的命令文件:
.claude/commands/openspec/
├── proposal.md
├── apply.md
└── archive.md
OPSX 使用新兴的 skills 标准:
.claude/skills/
├── openspec-explore/SKILL.md
├── openspec-new-change/SKILL.md
├── openspec-continue-change/SKILL.md
├── openspec-apply-change/SKILL.md
└── ...
Skills 被多个 AI 编码工具识别,并提供更丰富的元数据。
你正在进行的变更可以无缝使用 OPSX 命令。
有来自旧版工作流的活跃变更?
/opsx:apply add-my-feature
OPSX 读取现有产物并从你离开的地方继续。
想为现有变更添加更多产物?
/opsx:continue add-my-feature
显示基于已存在内容可以创建什么。
需要查看状态?
openspec status --change add-my-feature
# 必需:新变更的默认 schema
schema: spec-driven
# 可选:项目上下文(最大 50KB)
# 注入到所有产物指令中
context: |
你的项目背景、技术栈、
约定和约束。
# 可选:按产物的规则
# 只注入到匹配的产物中
rules:
proposal:
- 包含回滚计划
specs:
- 使用 Given/When/Then 格式
design:
- 记录回退策略
tasks:
- 分解为最多 2 小时的块
确定使用哪个 schema 时,OPSX 按顺序检查:
--schema <name>(最高优先级).openspec.yamlopenspec/config.yamlspec-driven| Schema | 产物 | 最适合 |
|---|---|---|
spec-driven | proposal → specs → design → tasks | 大多数项目 |
列出所有可用 schema:
openspec schemas
创建你自己的工作流:
openspec schema init my-workflow
或 fork 现有的:
openspec schema fork spec-driven my-workflow
你在 CI 或非交互环境中运行。使用:
openspec init --force
重启你的 IDE。Skills 在启动时检测。
检查你的 rules: 键是否匹配你的 schema 的产物 ID:
proposal、specs、design、tasks运行此命令查看有效的产物 ID:
openspec schemas --json
openspec/config.yaml(不是 .yml)系统故意保留 project.md,因为它可能包含你的自定义内容。手动检查它,将有用部分移至 config.yaml,然后删除它。
运行 init 并拒绝清理提示——你会看到完整的检测摘要而不做任何更改。
project/
├── openspec/
│ ├── specs/ # 不变
│ ├── changes/ # 不变
│ │ └── archive/ # 不变
│ └── config.yaml # 新增:项目配置
├── .claude/
│ └── skills/ # 新增:OPSX skills
│ ├── openspec-explore/
│ ├── openspec-new-change/
│ └── ...
├── CLAUDE.md # OpenSpec 标记已移除,你的内容保留
└── AGENTS.md # OpenSpec 标记已移除,你的内容保留
.claude/commands/openspec/ — 被 .claude/skills/ 替代openspec/AGENTS.md — 已废弃openspec/project.md — 迁移到 config.yaml,然后删除CLAUDE.md、AGENTS.md 等文件中的 OpenSpec 标记块/opsx:new 开始一个变更
/opsx:continue 创建下一个产物
/opsx:ff 创建所有规划产物
/opsx:apply 实现任务
/opsx:archive 完成并归档