Codex 历史对话加载很慢:先开个新对话让它自己诊断
有时候 Codex 开启历史对话会慢得像在翻一本很厚的旧账本。点一下历史记录,等半天;再点一下,继续等。你开始怀疑网络,怀疑远程主机,最后甚至开始怀疑自己是不是把太多东西塞进同一个会话里了。
先别急着做数据库手术。最简单的办法是:直接新开一个 Codex 对话,让 Codex 判断为什么慢,并让它帮你清理历史记录。
这听起来有点绕:Codex 慢了,找 Codex 修 Codex。但实际很好用,因为慢的往往是旧对话加载、日志膨胀、工作区扫描或远程环境状态,而新对话通常还能正常启动。
先换一张干净桌子
如果某个历史对话开启特别慢,不要一直在那个旧对话里硬等。可以先开一个新的 Codex 对话,然后直接这样说:
我在目前机器上开启 Codex 历史对话很慢。
请你判断可能原因,并先用只读方式检查 ~/.codex、目前工作区大小、
日志文件、session 数量和数据库大小。
不要删除任何文件,先告诉我风险和建议。
重点是让它先判断,不要让它一上来就删除。新对话没有背着旧上下文跑,反而更适合做这个“场外裁判”。
让 Codex 先看几件事
可以让 Codex 按顺序检查:
1. ~/.codex 目录里有没有特别大的文件;
2. sessions 目录里的会话数量和最大文件;
3. logs_2.sqlite 是否明显膨胀;
4. state_5.sqlite 和 session_index.jsonl 是否正常;
5. 目前项目是否有巨大的 node_modules、dist、日志或缓存;
6. 远程主机磁盘空间是否快满。
如果你是在小型 VPS 上使用 VS Code Remote + Codex,这一步尤其重要。磁盘只有几 GB 的机器,一旦日志、建设缓存、依赖目录一起膨胀,体验就会突然变得很黏。
一个更好用的提示词
我更推荐把需求说得具体一点:
请你帮我排查 Codex 历史对话加载慢的问题。
要求:
- 先只读检查,不要修改文件;
- 说明哪些文件可能影响历史加载;
- 区分“可以安全清理”和“不要随便动”的内容;
- 如果需要清理,请先给备份方案;
- 如果确认可以清理,请帮我清理 Codex 历史记录;
- 最后告诉我如何回到 VS Code Codex 首页确认结果。
这样 Codex 通常会先列出检查命令,再根据输出判断是不是日志库、会话文件、项目缓存或磁盘空间的问题。
让它直接清理历史记录
如果你只是想让历史首页变清爽,可以继续对新对话说:
请帮我清理 Codex 历史记录。
要求:
- 先告诉我要清理哪些文件或记录;
- 清理前做必要备份;
- 不要影响目前认证和插件设置;
- 清理完成后告诉我怎么在 VS Code Codex 首页确认。
清理完成后,回到 VS Code,开启 Codex 首页或刷新 Codex 面板,就会看到历史记录已经被清掉或明显变少。这个反馈很直观:不用盯着数据库大小猜,首页列表自己会告诉你结果。
常见结论
排查后常见会遇到几种情况。
第一种是旧会话太长。这个时候不一定要修,直接把任务拆到新对话里就行。旧会话留着当数据,新会话负责继续干活。
第二种是 ~/.codex/logs_2.sqlite 变得很大。它是日志库,不等于你的真正对话历史。通常需要先备份,再清理低价值日志,最后压缩数据库。
第三种是目前工作区太胖。比如 node_modules、dist、临时建设目录、下载文件堆在一起,Codex 和 VS Code Remote 都会被拖累。
第四种是远程 VPS 存储快满。磁盘一紧张,很多东西都会变慢,包括 shell、编辑器、日志写入和数据库操作。
真要清理时,别裸奔
如果 Codex 判断是日志库膨胀,可以让它生成一套更稳的步骤:
请给我一个保守清理方案:
1. 先备份 ~/.codex/logs_2.sqlite;
2. 只清理 TRACE、DEBUG 和旧 INFO;
3. 保留 WARN、ERROR;
4. 执行 quick_check;
5. 清理前后显示文件大小;
6. 不要删除 sessions、state_5.sqlite、session_index.jsonl。
这里最重要的是最后一句:不要误删真正的会话历史。sessions、state_5.sqlite、session_index.jsonl 这些东西要谨慎对待。
什么时候什么都别动
如果你正在排查 Codex 本身的异常,或者准备把日志交给上游分析,就先别清理。让 Codex 帮你打包信息、列出文件大小、说明现象就好。
如果数据库健康检查失败,也不要急着删。先备份,再让 Codex 判断是恢复、复制还是重建索引。慢可以忍一会儿,误删会比较疼。
小结
Codex 历史对话加载慢时,不必第一时间冲进 ~/.codex 手动开刀。更省心的做法是:
新开 Codex 对话 -> 让它只读检查 -> 让它判断原因 -> 让它清理历史 -> 回到 VS Code Codex 首页确认
这就像桌面太乱时先换一张干净桌子,再请人帮你一起看哪一堆该收、哪一堆不能碰。简单、稳,也更不容易把真正的历史对话弄丢。