游乐游手机版
首页/AI热点日报/热点详情

Codex历史任务上下文恢复方法与操作指南

类型:热点整理2026-08-17
Codex CLI 中如果没有显示历史会话,通常可以通过 codex resume 找回之前的上下文:先列出历史会话,再使用完整的 session_id 进行恢复;如果会话列表为空,需要优先检查 provider 是否一致,或借助 codex-provider-sync 修复索引;对于重要上下文,建

Codex CLI 中如果没有显示历史会话,通常可以通过 codex resume 找回之前的上下文:先列出历史会话,再使用完整的 session_id 进行恢复;如果会话列表为空,需要优先检查 provider 是否一致,或借助 codex-provider-sync 修复索引;对于重要上下文,建议在原始会话里执行 codex session pin,避免后续压缩时被丢失。

codex历史任务怎么恢复之前的上下文?

当你在 Codex CLI 中切换任务、关闭终端,或者因异常中断后,想继续之前未完成的代码对话,却发现找不到历史会话记录时,通常并不代表数据已经丢失,而是上下文没有被正确恢复。实际上,会话文件大多仍然保存在本地磁盘中,只是 Codex 暂时没有将它们显示出来,或没有加载到当前会话视图里。

用 codex resume 列出并恢复会话

第一步:在项目根目录执行命令,先列出所有可恢复的 Codex 历史会话:

codex resume

执行后,程序会扫描 ~/.codex/sessions/ 目录下的全部 rollout 文件,并按照时间从近到远展示会话摘要。你通常会看到类似“重构 user-service 接口 → 补充 JWT 验证”这样的提示内容。同时,每条历史记录都会附带唯一的 session_id,格式例如 019e3431-b161-7f12-9e91-cd1100b05c9d。

第二步:从列表中复制你要恢复的 session_id,然后执行:

codex resume 019e3431-b161-7f12-9e91-cd1100b05c9d

需要注意的是:session_id 必须完整输入或完整粘贴,少任何一个字符都会报错 Session not found。Codex CLI 不支持自动补全,也不会进行模糊匹配。

第三步:确认会话恢复成功。恢复后,终端顶部通常会显示 [resumed: 019e3431…],并且上一轮你输入的最后一条指令以及模型回复都会重新载入到上下文窗口中,此时就可以直接继续写代码、追问问题或接着调试。

历史会话不显示?先检查 provider 是否一致

如果执行 codex resume 后发现列表为空,但你又能确定此前确实使用过 Codex,那么大概率不是历史会话消失了,而是 model_provider 切换后导致元数据无法正确匹配。最常见的情况是:之前通过 OAuth 登录使用,后来切换成基于 API Key 的自定义 provider,这种情况下 Codex Desktop 往往无法识别旧会话记录。

方法一:手动确认会话文件是否仍然存在

可以直接打开 ~/.codex/sessions/ 目录,查看其中是否存在按日期分层的子目录(例如 2026/05/17/),然后进入对应目录,查找以 rollout- 开头的 .jsonl 文件。只要这些文件还在,就说明历史会话并没有真正丢失。

方法二:使用 codex-provider-sync 工具修复会话索引

下载并运行 codex-provider-sync 工具后,它会自动比对 session_index.jsonl、state_5.sqlite 以及各 rollout 文件中的 model_provider 字段,并为不一致的记录补充兼容标记。修复完成后,再次执行 codex resume,之前不显示的历史会话通常就会重新出现在列表中。

这一步不要省略:如果直接手动修改 session_index.jsonl,强行注入旧的 session_id,可能会导致 SQLite 状态库校验失败,进而让后续 /compact 或 /new 命令出现异常退出的问题。

强制钉住关键上下文,防止恢复后被压缩

有些情况下,即使成功断点续接,Codex 在回放较长历史时仍可能自动裁剪最早的几轮消息——例如你最初定义的模块边界、接口约定,或者全局常量命名规则被省略。这是因为它会根据 token 容量动态压缩上下文,而不是始终完整回放全部历史内容。

在原始会话里,找到最关键的一条消息(例如:“本项目所有 API 响应统一使用 snake_case,错误码为三位数字字符串”),将光标停在该行末尾,然后输入:

codex session pin

执行后,这条消息会被标记为不可压缩、不可丢弃。下次再通过 codex resume 恢复历史会话时,它会优先保留在上下文前部,确保关键约束不会丢失。

注意:【必须在原始会话中执行 pin,恢复之后再执行 pin 是无效的】。因为 pin 写入的是 rollout 文件中的元数据字段,而不是临时的内存标记。

来源:https://www.php.cn/faq/2970252.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。