Codex本地历史默认永久保存但非永远可用,因SQLite数据库状态、索引完整性及渲染泄漏可能导致旧会话界面消失却仍占磁盘空间;需通过codex-history doctor检测结构,再按list→purge→purge-orphans顺序安全清理。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Codex历史任务不会自动过期删除,本地存储的会话数据只要没被手动清理或工具干预就会一直保留,但实际可访问性受SQLite数据库状态、索引完整性及渲染泄漏影响,部分旧会话可能在界面中消失却仍占用磁盘空间。
本地历史默认永久保存,但不是“永远可用”
Codex 本地会话以 SQLite 数据库存储在 ~/.codex 目录下,只要文件未被删改,理论上所有历史任务都物理存在。但数据库会随使用持续膨胀,导致索引碎片化、查询变慢、甚至某些会话无法加载——你看到的“历史没了”,往往不是被删了,而是查不出来。
执行 codex-history doctor 可检测当前数据结构是否完整;若返回 “structure unsupported”,说明本地存储已偏离工具支持范围,后续 list/purge 命令将拒绝执行。
三种实际失效场景
方法一:SQLite 表损坏或缺失索引
threads 表若因异常退出丢失主键约束或索引损坏,Codex 启动时可能跳过该 thread 加载,导致历史列表不显示,但 rollout 文件仍存在于磁盘。
方法二:rollout 文件被移出原路径
Codex 依赖 rollout 文件与 SQLite 记录双向引用。若手动移动或重命名 rollout 文件(如 019e6885.rollout),即使数据库里还存着这条记录,界面也无法还原会话内容。
配置 OpenClaw 多提供商认证与 OpenAI Codex OAuth 备用方案,实现自动模型切换,适用于多 OpenAI Codex 账户设置。
方法三:内存摘要未更新导致上下文断连
即使 thread 和 rollout 都完好,若 ~/.codex/memories/memory_summary.md 未及时生成或截断超限,新启动的 Codex 就读不到关键上下文,表现为“记得有这个任务,但想不起细节”。
安全清理历史的正确顺序
第一步:运行 codex-history doctor 确认本地结构受支持
第二步:用 codex-history list --grep "关键词" 筛出目标会话
第三步:执行 codex-history purge <short-id></short-id> 删除单条,交互式确认后自动清理 SQLite 记录 + rollout 文件 + 关联日志
第四步:运行 codex-history purge-orphans 扫描并清除残留的孤儿数据
【purge 操作不可逆,且不备份 rollout 内容】 工具只删本地文件,不触碰服务端记录,也不生成副本。如需保留某次会话,请先手动复制对应 rollout 文件到其他目录。










