Codex 高级用法:工程协作工作流 · 处理中断并复用闭环
任务中断后如何继续:为 Codex 留下可信检查点
用磁盘事实、计划状态、授权和证据组成可信检查点;恢复时先重建真实现场,识别需求变化、工具失败与重复执行风险,再选择下一项安全动作。
“接着上次继续。”
任务刚暂停几分钟时,这句话似乎没问题。时间一长,或者换了线程、角色,当前上下文里未必还保留那次执行的完整细节。更危险的是,磁盘已经发生变化,模型却沿用旧计划:重复创建文件、再次发送外部请求,或者把用户后来改过的内容覆盖掉。
小编现阶段的判断是:恢复不是找回一段完美记忆,而是从可信检查点和磁盘事实重新回答三个问题:现在到底是什么状态,旧授权还剩多少,下一步怎样做才不会重复破坏。
上一篇讨论怎样用验证证据决定放行。本文只处理任务中断后的现场重建和安全续接,不提前总结哪些方法值得迁移到下一项任务。
一、完成声明不能充当恢复入口
一次中断可能来自工具报错、用户暂停、需求改变、角色切换,也可能只是当前可用上下文无法再提供早先细节。本文不假设 Codex 会自动保留或恢复哪些内部上下文;这类产品行为容易变化,本文也未从当前可用官方资料中核验到稳定承诺。工程上更稳的做法,是把恢复依赖放到可重新读取的文件、状态和证据中。
聊天里的“已经完成 80%”几乎无法复查。它没有说明完成了哪些动作,哪个文件是当前版本,失败发生在写入前还是写入后。工具返回失败也不等于目标没有变化:请求可能已经送达,写入可能完成了一半,命令也可能在超时前产生了产物。
恢复时先停止新增副作用,不急着重试。读取状态文件、目标路径、工作区差异和已有验证结果,确认哪些动作已经落地。只有实际状态与旧记录对齐后,才能决定继续、修正计划或重新取得授权。
二、可信检查点要记录一份可重建现场
检查点只保留恢复决策需要的字段,不追求压缩整份工作日志。接手者由此不用猜目标、授权、已完成内容和禁止重复动作。
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_effects 和 do_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 后,可以留下下面这份现场检查点:
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,不发布接着把之前的对话结论暂时放到一边,只按检查点读取磁盘。本轮实际只读检查得到下面的结果:
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 在所有中断场景中都能自动恢复,也不覆盖外部请求半成功、多人同时改写和版本控制冲突等高风险情况。
检查点把中断前的意图变成可重新检查的现场:目标和授权决定边界,基线与完成证据说明发生过什么,当前文件和状态给出事实入口,失败点与未知副作用阻止盲目重试,下一安全动作让任务继续向前。恢复者先重建真实状态,再继续工作;记忆只提供线索,不能覆盖磁盘和外部系统的现状。