Codex 高级用法:工程协作工作流 · 处理中断并复用闭环
Codex 高级用法:工程协作工作流/处理中断并复用闭环

任务中断后如何继续:为 Codex 留下可信检查点

2026-08-042 min read处理中断并复用闭环
摘要

用磁盘事实、计划状态、授权和证据组成可信检查点;恢复时先重建真实现场,识别需求变化、工具失败与重复执行风险,再选择下一项安全动作。

“接着上次继续。”

任务刚暂停几分钟时,这句话似乎没问题。时间一长,或者换了线程、角色,当前上下文里未必还保留那次执行的完整细节。更危险的是,磁盘已经发生变化,模型却沿用旧计划:重复创建文件、再次发送外部请求,或者把用户后来改过的内容覆盖掉。

小编现阶段的判断是:恢复不是找回一段完美记忆,而是从可信检查点和磁盘事实重新回答三个问题:现在到底是什么状态,旧授权还剩多少,下一步怎样做才不会重复破坏。

上一篇讨论怎样用验证证据决定放行。本文只处理任务中断后的现场重建和安全续接,不提前总结哪些方法值得迁移到下一项任务。

一、完成声明不能充当恢复入口

一次中断可能来自工具报错、用户暂停、需求改变、角色切换,也可能只是当前可用上下文无法再提供早先细节。本文不假设 Codex 会自动保留或恢复哪些内部上下文;这类产品行为容易变化,本文也未从当前可用官方资料中核验到稳定承诺。工程上更稳的做法,是把恢复依赖放到可重新读取的文件、状态和证据中。

聊天里的“已经完成 80%”几乎无法复查。它没有说明完成了哪些动作,哪个文件是当前版本,失败发生在写入前还是写入后。工具返回失败也不等于目标没有变化:请求可能已经送达,写入可能完成了一半,命令也可能在超时前产生了产物。

恢复时先停止新增副作用,不急着重试。读取状态文件、目标路径、工作区差异和已有验证结果,确认哪些动作已经落地。只有实际状态与旧记录对齐后,才能决定继续、修正计划或重新取得授权。

二、可信检查点要记录一份可重建现场

检查点只保留恢复决策需要的字段,不追求压缩整份工作日志。接手者由此不用猜目标、授权、已完成内容和禁止重复动作。

yaml
1checkpoint: 2 objective: 当前任务目标与完成条件 3 authorization: 4 confirmed_scope: 用户已确认的范围 5 still_valid_if: 授权继续成立的前提 6 requires_reconfirmation: 需要重新确认的变化 7 baseline: 8 observed_state: 开工时读取到的真实状态 9 evidence: 支撑基线的路径或检查结果 10 completed: 11 actions: 已执行动作 12 evidence: 每个动作对应的文件、差异、结果或外部对象 13 current: 14 files: 当前关键文件绝对路径 15 status: 计划、正文、审阅或发布状态 16 interruption: 17 failure_point: 停在什么动作之前、之中或之后 18 known_effects: 已确认产生的影响 19 uncertain_effects: 尚不能确认的副作用 20 open_items: 21 risks: 已知风险 22 facts_to_verify: 待验证事实 23 decisions_pending: 未决选择 24 resume: 25 next_safe_action: 下一项低风险动作 26 done_when: 这一步的完成证据 27 do_not_repeat: 未核验前禁止重复的动作

其中最容易漏的是 uncertain_effectsdo_not_repeat。工具超时后,恢复者若只看到“失败”,可能马上重发请求;旧操作其实已经生效时,就会产生重复 Issue、重复付款或二次写入。检查点应先标出不确定副作用,再给出查询现状或按幂等键核对的动作。

绝对路径和状态来源也不能省。current.status 要说明从哪个文件或系统读取,不能只转述上游消息。completed.evidence 则把“做过”变成可核对象;没有证据的完成声明应放入待验证项。

可信检查点要记录一份可重建现场

三、恢复时先重建状态,再选择动作

接手者拿到检查点后,可以按一条短链路恢复。

恢复时先重建状态,再选择动作

3.1 只读重建当前现场

先确认工作区、目标文件、计划状态、前置产物和已有差异。外部操作发生过时,查询目标系统当前对象,不急着再次创建。检查点写“文件不存在”,磁盘却已经出现文件,说明旧动作可能在中断前完成,后续计划要以新事实为准。

3.2 比较记录与现实

把每项差异分成三类:记录落后、记录错误、现场被其他操作改变。差异本身不直接决定删除或覆盖;它只说明旧计划不能原样执行。接手者要保留用户修改和其他角色成果,找不到所有权时先报告冲突。

3.3 重新核对授权

路径、实现细节和时间变化未必让旧授权失效,目标或影响范围变化通常会。原来只允许本地写入,恢复后发现必须发布到外部系统;原来修改一个模块,现在需要数据迁移。这些变化要回到确认门禁,不能借“继续任务”扩大授权。

3.4 只执行下一项安全动作

恢复计划不需要一次重写到终点。先选一个能减少不确定性、又不会扩大副作用的动作,例如读取差异、核对目标对象是否存在、运行局部检查或补齐状态。结果明确后再推进下一步。

四、四类中断要防不同的误续接

4.1 需求发生变化

用户改了目标,旧计划里的完成条件和授权可能同时失效。恢复时应标出哪些产物仍可复用,哪些判断基于旧需求,哪些修改需要撤回或重新确认。不能为了保住已有工作量,把新需求解释成旧方案的小修补。

4.2 工具失败或结果不确定

工具明确在执行前失败,可以修正输入后再试。超时、连接中断或只返回部分结果时,先检查副作用:文件是否生成、远端对象是否存在、状态是否已经变化。无法查询时,把影响保持为未知并停止重复写入。

4.3 当前上下文缺少早先细节

无论原因是线程切换、对话过长还是角色交接不完整,恢复者都不应凭模糊印象补齐现场。重新读取项目规则、计划、检查点、目标文件和最近证据;精确产品机制没有官方依据时,不把“系统一定记得”或“一定忘了”写成工程前提。

4.4 重复执行可能产生破坏

创建文件前检查路径,迁移前检查版本,发布前查询目标对象,外部请求尽量使用可复查标识。动作本身不具备幂等性时,检查点要明确记录对象 ID、请求标识或已生成产物。恢复者先核对,再决定跳过、补全还是重新执行。

五、实际做一次低风险恢复演练

本轮写作 05-01 时,启动基线是:目标正文不存在,topic.md 中 05-01 为 planned,显式前置 04-02 为 reviewed。授权只覆盖创建本文、执行自审和更新本篇状态,不包括配图、发布或独立质检。

正文进入 drafting 后,可以留下下面这份现场检查点:

yaml
1checkpoint: 2 objective: 完成 05-01 正文、自审和写后校验,使正文与 topic.md 进入 drafted 3 authorization: 4 confirmed_scope: 创建目标正文,仅更新 topic.md 中 05-01 状态 5 still_valid_if: 文章规划、目标路径和写作边界没有变化 6 requires_reconfirmation: 扩大到配图、发布、其他正文或外部写入 7 baseline: 8 observed_state: 目标正文不存在;05-01 为 planned;04-02 为 reviewed 9 evidence: topic.md、04-02 正文与审阅报告 10 completed: 11 actions: 已创建 05-01 正文;已将 05-01 切换为 drafting 12 evidence: articles/05-01-resume-interrupted-codex-tasks.md 与 topic.md 对应条目 13 current: 14 files: 15 - /Users/abm/AI-DEV/jvs/codex-advanced-usage/topic.md 16 - /Users/abm/AI-DEV/jvs/codex-advanced-usage/articles/05-01-resume-interrupted-codex-tasks.md 17 - /Users/abm/AI-DEV/jvs/codex-advanced-usage/reviews/04-02-verify-codex-work-with-independent-review.review.md 18 status: 05-01 正文与 topic.md 均为 drafting;04-02 为 reviewed 19 interruption: 20 failure_point: 模拟在初稿写入后、自审和写后校验前失去上下文 21 known_effects: 正文已创建,目标状态已进入 drafting 22 uncertain_effects: 无外部副作用;正文是否满足自审门禁尚未确认 23 open_items: 24 risks: 不要把演练结果写成真实应用中断或产品恢复能力验证 25 facts_to_verify: 正文结构、状态一致性和 AI 痕迹 26 decisions_pending:27 resume: 28 next_safe_action: 只读检查三个关键文件,重建状态后继续自审 29 done_when: 路径存在,05-01 两处状态一致,04-02 仍为 reviewed 30 do_not_repeat: 不重新创建正文,不把状态退回 planned,不重复审阅 04-02,不发布

接着把之前的对话结论暂时放到一边,只按检查点读取磁盘。本轮实际只读检查得到下面的结果:

yaml
1recovery_rehearsal: 2 target_file_exists: true 3 article_status: drafting 4 topic_status: drafting 5 prerequisite_04_02: reviewed 6 prerequisite_review_result: reviewed 7 mismatch_with_checkpoint: none 8 next_safe_action: 继续第二遍自审和写后检查,通过后同步更新为 drafted 9 repeated_actions: 0 10 external_writes: 0 11 limitation: 这是磁盘状态重建演练,没有制造真实崩溃、线程切换或上下文压缩

这次演练只验证一件事:接手者能否不依赖早先对话,从路径和状态决定下一动作。它不会证明 Codex 在所有中断场景中都能自动恢复,也不覆盖外部请求半成功、多人同时改写和版本控制冲突等高风险情况。

检查点把中断前的意图变成可重新检查的现场:目标和授权决定边界,基线与完成证据说明发生过什么,当前文件和状态给出事实入口,失败点与未知副作用阻止盲目重试,下一安全动作让任务继续向前。恢复者先重建真实状态,再继续工作;记忆只提供线索,不能覆盖磁盘和外部系统的现状。