codex会话记录默认永不过期,仅按上下文容量动态压缩;钉住的消息不被丢弃;可用codex-history精准删除或清理孤儿数据;重命名state_5.sqlite可安全重置索引而不失原始记录。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Codex会话记录不会自动过期,只要没被手动清理或触发自动压缩机制,就会一直保留在本地磁盘上。你昨天写的Python脚本调试记录、上周重构的React组件对话、甚至三个月前那个没保存的临时会话,只要文件还在~/.codex/sessions/目录里,就随时能用codex resume命令恢复。
默认保留策略:不删,只压缩
CodeX默认不设时间期限,而是按上下文窗口容量动态裁剪历史消息。每次断点续接时,它会重新计算所有历史消息的token长度,然后从最早的消息开始丢弃,直到总长度低于当前模型的上下文限制(例如GPT-4的32K)。被丢弃的消息仍保留在.rollout文件里,只是不加载进当前会话上下文。
这一步操作起来很简单,直接把文件拖进去就行。
【关键前提】只有被codex session pin命令“钉住”的消息才不会被压缩丢弃。没钉住的,哪怕刚聊完五分钟,下次恢复时也可能消失。
手动清理:用 codex-history 工具安全删除
方法一:按会话ID精准删除
第一步:列出最近10条未归档会话 → codex-history list --limit 10
第二步:找到目标会话的short-id(如019e3431)→ codex-history purge 019e3431
第三步:确认删除后,工具会自动扫描并清除SQLite索引、session_index.jsonl和rollout文件三处引用。
方法二:清空所有孤儿数据
执行codex-history purge-orphans,它会识别出那些已无会话ID指向、但还残留在sessions/子目录或state_5.sqlite里的碎片数据。这类数据无法通过resume恢复,只会拖慢启动扫描速度。
注意:codex-history不会碰logs_2.sqlite或.codex-global-state.json——这两类文件需单独处理。
强制失效:改名停用状态库
关闭Codex → 将~/.codex/state_5.sqlite重命名为state_5.sqlite.off → 重启Codex。
Codex启动时发现缺失state_5.sqlite,会自动生成全新空库,所有本地索引(包括会话列表、搜索缓存、目标追踪状态)全部重置。但原始.rollout文件仍在sessions/下,可随时用codex resume手动恢复。
这比直接删除更稳妥:【误删不可逆】一旦删掉整个sessions/目录,所有会话记录将永久丢失,连resume都无法调用。











