Skip to content

编辑与迭代变更

变更中的每一个产物都只是一个可以随时编辑的 Markdown 文件。 不存在锁定的「规划阶段」,没有审批门禁,也不需要进入任何特殊编辑模式。开始构建后想修改提案?打开 proposal.md 改就行。实现中途发现设计有问题?修复 design.md 然后继续就好。这就是全部答案,而且是刻意设计的。

本页适用于你冒出「等等,我能回去改那个吗?」念头的时刻。答案是肯定的。以下是各类常见场景的操作方法。

两种编辑任意内容的方式

你始终可以选用以下两种方式:

  1. 直接编辑文件。 产物是存放在 openspec/changes/<name>/ 下的纯 Markdown 文件。在编辑器中打开 proposal.mddesign.mdtasks.mdspecs/ 下的增量规格说明文件,修改即可,无需其他操作。
  2. 让 AI 帮你修订。 在对话中直接说出你的需求即可,比如「更新提案,删除缓存方案,新增速率限制章节」,或者「设计应该用队列,不要用轮询」。AI 会以变更中的其余内容为上下文,帮你编辑对应的产物。

根据场景选择合适的方式即可。只是微调措辞?直接编辑文件。需要重新思考核心内容?让 AI 带着完整上下文帮你修订。

「开始构建后如何更新提案(或规格说明)?」

直接更新就好,属于同一项变更的优化调整。

如果你使用的是扩展命令,自然流程是:编辑产物后,运行 /opsx:continue 从新状态继续,或运行 /opsx:apply 按照更新后的计划继续实现。如果你使用的是默认的核心命令,编辑产物后运行 /opsx:apply 即可;该命令会读取当前文件,因此会基于产物当前的内容开展工作。

核心认知:产物是实时生效的计划,而非签署后不可更改的合同。AI 始终基于产物的当前内容开展工作,因此编辑产物就是在引导工作方向。

text
你:我想调整这项变更的方案。

你:[编辑 design.md,或告知 AI:]
     将 design.md 更新为使用后台任务,而非同步调用。

AI:已更新 design.md。任务列表仍然适用,需要我继续应用吗?

你:/opsx:apply

这解答了一个非常常见的问题:不存在独立的「更新提案」命令,因为你根本不需要它。文件就是唯一可信来源,无论是手动编辑还是通过 AI 编辑文件,就是更新操作本身。

「实现后如何回到审查环节?」

你根本不需要「回去」,因为你从未离开过。整个工作流是灵活的:审查、编辑和实现并非你被困其中的顺序阶段。

具体来说,在完成若干 /opsx:apply 工作后:

  • 想重新查看计划?打开产物阅读即可,或在终端运行 openspec show <change> 获取整合视图。
  • 发现需要修改的内容?编辑产物(或让 AI 帮你编辑),然后继续即可。
  • 想对代码和计划的一致性做结构化检查?运行 /opsx:verify(扩展命令)。它会输出完整性、正确性和一致性报告,且不会阻塞任何操作。详见工作流:验证

不存在需要返回的「审查阶段」,因为审查是你可以随时开展的操作,包括实现完成后。

「我手动修改了代码,如何与 OpenSpec 保持一致?」

这种情况非常常见,完全没问题。你在编辑器中调整了某些内容,现在代码和产物出现了不一致。你可以根据实际情况,按任意方向让两者重新同步:

  • 代码现在是正确的,规格说明已过时。 更新增量规格说明(以及相关的任务,如果有的话),描述你实际交付的行为。归档前需要让规格说明和实际情况一致,因为归档操作会将规格说明合并到你的可信来源中。
  • 规格说明是正确的,代码出现了偏差。 继续构建或修复,直到代码和规格说明一致。

快速定位不一致的简便方式是运行 /opsx:verify:它会读取你的产物和代码,告诉你两者存在差异的位置。你可以把它的输出当作一致性调整的待办清单,等两者一致后再执行归档。

核心原则:归档时,你的规格说明会成为官方记录的事实依据。因此在归档前,请确保规格说明如实反映代码的实际行为。手动编辑是被允许的,只是不要让手动编辑悄悄导致规格说明和代码不同步。

优化你不满意的提案

如果生成的提案不符合预期,你可以选择以下三种有效操作:

  • 原地迭代优化。 告诉 AI 哪里有问题(比如「范围太宽泛,删掉管理功能相关的内容」),让它帮你修订。这是成本最低的方式,也通常是最有效的。
  • 先探索,再重新提案。 如果问题出在想法本身不够清晰,可以先退回运行 /opsx:explore,梳理清楚思路,再生成更精准的提案。详见先探索
  • 重新开始。 如果需求目标已经发生了根本性变化,新建一项变更会比修补旧变更更清晰。

最后一种操作有对应的决策指南,见下一节。

何时更新变更、何时新建变更

简而言之:如果是同一项工作的优化调整就更新变更;如果需求目标发生了根本性变化,或范围扩大成了完全不同的工作,就新建变更。

  • 目标一致,只是方案更优?更新变更。
  • 范围缩小(现在先交付最小可行产品,后续再加功能)?更新变更,归档后为第二阶段新建一项变更。
  • 问题本身发生了变化(比如「添加深色模式」变成了「搭建完整的主题系统」)?新建变更。

完整的决策流程图和实操案例见工作流:何时更新 vs 重新开始,更深入的解读见OPSX:何时更新 vs 重新开始

关于任务的说明

tasks.md 是动态更新的待办清单,而非固定不变的方案。实现过程中,你可以添加新发现的任务,删除确认不必要的任务,也可以调整任务顺序。AI 会在执行 /opsx:apply 的过程中自动勾选已完成的任务,如果你之后回来继续,它会从第一个未勾选的任务开始恢复。在任务进行中编辑列表是预期内的正常操作。

下一步阅读

  • 工作流 - 各类模式,以及更新 vs 新建变更的决策指南
  • 审查变更 - 构建前对计划的快速审查流程
  • 先探索 - 想法需要重新梳理时的退回入口
  • 命令 - /opsx:continue/opsx:apply/opsx:verify 的详细说明
  • 概念:产物 - 各类产物的用途说明