Codex CLI 中未显示历史会话可通过 codex resume 恢复:先列出会话,再用完整 session_id 恢复;若列表为空,需检查 provider 一致性或用 codex-provider-sync 修复索引;关键上下文需在原始会话中执行 codex session pin 防止压缩。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当你在 Codex CLI 中切换任务、关闭终端或意外中断后,想继续未完成的代码对话却找不到之前的会话记录——这不是数据丢失,而是上下文未被正确恢复。会话文件其实还安静地躺在本地磁盘里,只是 Codex 没有把它们列出来或加载进当前视图。
用 codex resume 列出并恢复会话
第一步:在项目根目录下运行命令,列出所有可恢复的历史会话:
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 不会自动补全或模糊匹配。
第三步:确认恢复成功。此时终端顶部会显示 [resumed: 019e3431…],且上一轮你输入的最后一句指令和模型回复都会重新载入上下文窗口——你可以立刻接续写代码或追问。
历史会话不显示?先检查 provider 是否一致
如果你运行 codex resume 后列表为空,但确定之前用过 Codex,大概率是 model_provider 切换导致元数据不匹配。比如你曾用 OAuth 登录,后来改成了 API Key 自定义 provider,Codex Desktop 就不会显示旧会话。
方法一:手动验证会话文件是否存在
通过 Codex CLI 生成图片,支持尺寸控制和批量模式。依赖:codex (npm)。代理默认启用。用 generate.sh 生成单张,batch_generate.sh 批量生成游戏 UI 素材,gen_size.sh 指定尺寸。所有输出保存至 ~/.codex/generated_images/。
直接打开 ~/.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 文件的元数据字段,不是内存标记。










