游乐游手机版
首页/AI教程/文章详情

OpenSpec发布1.0稳定版,程序员时间紧迫

时间:2026-06-08 15:48
OpenSpec 1 0 迁移指南 如果你正在使用旧版 OpenSpec 工作流,本文将引导你无缝迁移至全新的 OPSX 系统。好消息是,整个升级过程被设计为尽可能平滑——你现有的所有工作成果都将被保留,而新系统将为你带来更强的灵活性与扩展能力。 核心变化概览 OPSX 最根本的改进,是用一套流畅、

OpenSpec 1.0 迁移指南

如果你正在使用旧版 OpenSpec 工作流,本文将引导你无缝迁移至全新的 OPSX 系统。好消息是,整个升级过程被设计为尽可能平滑——你现有的所有工作成果都将被保留,而新系统将为你带来更强的灵活性与扩展能力。

OpenSpec放大招了,升级到1.0稳定版本了,程序员的时间不多了

核心变化概览

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.mdAGENTS.md 等文件中你编写的内容——全部保留,仅会移除 OpenSpec 的标记块。

会被移除的内容

只有旧版 OpenSpec 自身的管理文件会被移除,具体包括:

内容原因
旧版斜杠命令目录/文件被新的 skills 系统替代
openspec/AGENTS.md已废弃的工作流触发器
CLAUDE.mdAGENTS.md 等文件中的 OpenSpec 标记不再需要

各工具的旧版命令文件位置(示例):

  • Claude Code: .claude/commands/openspec/
  • Cursor: .cursor/commands/openspec-*.md
  • Windsurf: .windsurf/workflows/openspec-*.md
  • Cline: .clinerules/workflows/openspec-*.md
  • Roo: .roo/commands/openspec-*.md
  • GitHub Copilot: .github/prompts/openspec-*.prompt.md
  • 其他工具(Augment、Continue、Amazon Q 等)

迁移程序会自动检测你配置了哪些工具,并清理对应的旧版文件。这些文件原本就是 OpenSpec 创建的,因此你的个人内容永远不会被误删。

需要手动处理的内容

有一个文件需要你手动介入:openspec/project.md。系统不会自动删除它,因为它可能包含你编写的项目上下文。你需要:

  1. 检查其内容。
  2. 将有用的上下文迁移至 openspec/config.yaml(详见下文指导)。
  3. 确认无误后,手动删除该文件。

为什么要做这个改变?旧版的 project.md 是“被动”的——AI 可能会读取,也可能不读,甚至可能忘记它读过。这导致可靠性很不一致。而新的 config.yaml 上下文会主动注入到每个 OpenSpec 的规划请求中,这意味着你的项目约定、技术栈和规则在 AI 创建产物时始终存在。换言之,可靠性更高。

当然,这里存在一个权衡:因为上下文会注入到每个请求中,所以你务必要保持内容简洁。专注于真正重要的信息:

  • 技术栈和关键约定。
  • AI 需要知道的、非显而易见的约束。
  • 那些之前经常被忽略的规则。

不必追求一步到位。我们同样还在探索什么最有效,并会随着实验不断改进上下文注入的方式。

执行迁移

openspec initopenspec 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)

当你确认后,会发生以下五件事:

  1. 旧版斜杠命令目录被移除。
  2. CLAUDE.mdAGENTS.md 等文件中的 OpenSpec 标记被剥离(你的内容全部保留)。
  3. openspec/AGENTS.md 被删除。
  4. 新的 skills 安装到 .claude/skills/ 目录。
  5. 创建 openspec/config.yaml 并设置默认 schema。

使用 openspec update

如果你只想单纯迁移,并将现有工具刷新到最新版本,请运行此命令:

openspec update

update 命令同样会检测并清理旧版产物,然后将你的 skills 刷新到最新版本。

非交互式 / CI 环境

用于脚本化迁移:

openspec init --force --tools claude

这里的 --force 标志会跳过交互提示,自动接受清理。

将 project.md 迁移到 config.yaml

旧版的 openspec/project.md 是一个自由格式的 markdown 文件,用于存放项目上下文。新版的 openspec/config.yaml 采用结构化格式,关键区别在于——它会被主动注入到每个规划请求中,确保你的约定在 AI 工作时始终存在。

迁移前 (project.md)

# 项目上下文 这是一个使用 React 和 Node.js 的 TypeScript monorepo。 我们使用 Jest 进行测试,遵循严格的 ESLint 规则。 我们的 API 是 RESTful 的,文档在 docs/api.md。 ## 约定 - 所有公共 API 必须保持向后兼容 - 新功能应包含测试 - 规格使用 Given/When/Then 格式

迁移后 (config.yaml)

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.mdconfig.yaml
自由格式 markdown结构化 YAML
一大块文本分离的上下文和按产物的规则
不清楚何时使用上下文出现在所有产物中;规则只出现在匹配的产物中
无 schema 选择显式 schema: 字段设置默认工作流

保留什么,丢弃什么

迁移时要讲究选择性。不妨问自己一个问题:“AI 在每个规划请求中都需要知道这个信息吗?”

适合放入 context: 的内容

  • 技术栈(语言、框架、数据库)。
  • 关键架构模式(monorepo、微服务等)。
  • 非显而易见的约束(例如“我们不能使用库 X 因为…”)。
  • 那些经常被忽略的关键约定。

应移至 rules: 的内容

  • 产物特定的格式要求(例如“在 specs 中使用 Given/When/Then”)。
  • 审查标准(例如“proposal 必须包含回滚计划”)。
  • 这些规则只出现在匹配的产物中,从而让其他请求保持更轻量化。

建议完全省略的内容

  • AI 已经熟知的通用最佳实践。
  • 可以精炼总结的冗长解释。
  • 不影响当前工作的历史上下文。

迁移步骤

  1. 创建 config.yaml(如果 init 尚未创建):

    schema: spec-driven

  2. 添加你的上下文(保持简洁——这会被注入到每个请求):

    context: | 你的项目背景放在这里。专注于 AI 真正需要知道的内容。

  3. 添加按产物的规则(可选):

    rules: proposal: - 你的 proposal 特定指导 specs: - 你的规格编写规则

  4. 一旦移动了所有有用内容,删除 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 时,它会检查哪些产物已准备就绪,并提供下一个可以创建的产物。你也可以按任意顺序,一次性创建多个已准备好的产物。

Skills vs Commands

旧系统使用工具特定的命令文件:

.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

新配置系统

config.yaml 结构

# 必需:新变更的默认 schema schema: spec-driven # 可选:项目上下文(最大 50KB) # 注入到所有产物指令中 context: | 你的项目背景、技术栈、约定和约束。 # 可选:按产物的规则 # 只注入到匹配的产物中 rules: proposal: - 包含回滚计划 specs: - 使用 Given/When/Then 格式 design: - 记录回退策略 tasks: - 分解为最多 2 小时的块

Schema 解析顺序

在确定使用哪个 schema 时,OPSX 会按以下顺序依次检查:

  1. CLI 标志:--schema (最高优先级)。
  2. 变更元数据:变更目录中的 .openspec.yaml
  3. 项目配置:openspec/config.yaml
  4. 默认值:spec-driven

可用 Schema

Schema产物最适合
spec-drivenproposal → specs → design → tasks大多数项目

要列出所有可用的 schema,可以运行:

openspec schemas

自定义 Schema

你可以创建自己的工作流:

openspec schema init my-workflow

或者 fork 现有的:

openspec schema fork spec-driven my-workflow

故障排除

"在非交互模式下检测到旧版文件"

这表明你在 CI 或非交互环境中运行。请使用:

openspec init --force

迁移后命令不出现

请重启你的 IDE。Skills 是在启动时进行检测的。

"rules 中的未知产物 ID"

请检查你的 rules: 键是否匹配你当前 schema 的产物 ID:

  • 对于 spec-driven 模式,有效的产物 ID 包括:proposalspecsdesigntasks

可以通过以下命令查看有效的产物 ID:

openspec schemas --json

配置未被应用

  1. 确认文件位于 openspec/config.yaml(注意是 .yaml 扩展名,不是 .yml)。
  2. 检查 YAML 语法是否正确。
  3. 配置更改会立即生效——不需要重启。

project.md 未迁移

系统有意保留了 project.md,因为它可能包含你的自定义内容。请手动检查它,将有用部分迁移至 config.yaml,然后再删除它。

想预览会被清理什么?

运行 openspec 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.mdAGENTS.md 等文件中的 OpenSpec 标记块。

命令速查表

/opsx:new 开始一个变更 /opsx:continue 创建下一个产物 /opsx:ff 创建所有规划产物 /opsx:apply 实现任务 /opsx:archive 完成并归档

来源:https://juejin.cn/post/7600704706551889960
上一篇GitHub热门Skills库Top10核心对比精简指南 下一篇无监督实验测试AI能否自主编写整个Windows系统
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Kimi App手机电脑联动下载安装及浏览器兼容教程
AI教程 · 2026-06-09

Kimi App手机电脑联动下载安装及浏览器兼容教程

本文介绍了Kimi智能助手从手机端到电脑端的下载与安装方法,重点阐述了不同平台(包括iOS、Android、Windows、macOS)的获取途径。同时,详细说明了如何通过浏览器直接访问网页版,并针对主流浏览器的兼容性进行了分析,旨在帮助用户根据自身设备选择最便捷、稳定的使用方式。

HeyGen稳定安装步骤:先配置创意团队环境再注册开通
AI教程 · 2026-06-09

HeyGen稳定安装步骤:先配置创意团队环境再注册开通

HeyGen的稳定安装与高效使用,关键在于前期团队环境的统一规划与后期账号流程的顺畅完成。团队需明确设计规范、素材管理及权限分工,为工具运行打下基础。随后,通过官方渠道完成注册、验证及订阅开通,确保服务稳定。最后进行基础功能测试与团队培训,即可快速投入实际创作流程。

Mochi 1从零搭建本地服务与工作流导入指南
AI教程 · 2026-06-09

Mochi 1从零搭建本地服务与工作流导入指南

本文介绍了在成功完成Mochi1本地服务的基础搭建后,如何继续处理工作流导入这一关键后续步骤。内容涵盖工作流文件准备、导入操作的具体流程、常见问题的排查与解决,以及导入后的配置优化与测试验证,旨在帮助用户将预设的自动化流程顺利集成到本地环境中,确保工具发挥完整效能。

InvokeAI Linux用户安装配置与节点处理指南
AI教程 · 2026-06-09

InvokeAI Linux用户安装配置与节点处理指南

本文详细介绍了在Linux系统上安装和配置InvokeAI的完整流程。内容涵盖从环境准备、依赖安装到模型下载与加载的关键步骤,并重点解析了核心组件“处理节点”的安装与使用方法。指南旨在帮助用户顺利完成部署,并理解其工作流程,以便更好地利用这一AI图像生成工具进行创作。

Dify保姆级部署指南:服务安装与模型接入下载
AI教程 · 2026-06-09

Dify保姆级部署指南:服务安装与模型接入下载

本文详细介绍了开源AI应用开发平台Dify的部署流程。内容涵盖从服务器环境准备、Docker安装、Dify核心服务启动,到如何接入OpenAI、Azure等云端大模型API,以及如何配置Ollama等本地模型。最后,还提供了使用ModelScope社区下载特定模型文件并集成到本地环境中的具体操作方法,旨在帮助用户快速搭建属于自己的AI应用开发与测试平台。