Skip to content

Codex 越用越笨?清一下本地缓存看看

本文整理自推文:原文链接,内容通俗化重写。

懒得手动操作?

把下面这段提示词丢给 Claude Code 或另开一个 Codex 会话,让它按本文步骤替你跑:

text
请参考下面这篇教程,帮我清理本地 ~/.codex 缓存:
https://docs.codexzh.com/codex/codex-cache-cleanup

要求:
1. 先把要执行的命令念一遍给我确认,再动手
2. 操作前确认 Codex 进程已退出
3. 备份 → 查大小 → 重命名 .old → 提示我重启 → 等我说稳定了再删 .old
4. 遇到 .sqlite-wal / .sqlite-shm 同样保守处理

最近用 Codex 5.5,是不是觉得它有点不稳定?配置没改、网络也没问题,但同样难度的活,有时候三两下定位到 bug,有时候绕半天说不到点子上。

我在 Reddit 上看到有人提过一个容易被忽略的地方:本地数据文件膨胀。

Reddit 用户清理 3 个文件后体验改善

底下评论挺多,有人说 TUI 日志超过 100GB,有人说整个目录从 42GB 清到 1.3GB。

Codex 在本地会一直写状态库、日志、会话记录。时间一长体积失控、读写变慢,整体响应就跟着拖。养成定期看一眼、顺手清的习惯,能排掉这层隐性干扰。

哪些文件容易变大

主要这几个:

  • ~/.codex/state_5.sqlite:本地状态库,存会话上下文
  • ~/.codex/logs_2.sqlite:本地日志库
  • ~/.codex/.codex-global-state.json:全局状态和设置
  • ~/.codex/log/codex-tui.log:终端界面日志,最容易疯长
  • ~/.codex/sessions/:历史会话目录
  • *.sqlite-wal*.sqlite-shm:SQLite 的预写日志和共享内存文件,偶尔也会异常变大

这些文件删掉后 Codex 会自动重建,清理本身是安全的。但也正因为会重建,最好定期维护,别指望一次搞定。

清理流程

下面这套我自己用着比较稳,每一步都能退回去。

1. 关掉 Codex,先做备份

把整个 .codex 目录复制一份,加日期后缀:

bash
cp -r ~/.codex ~/.codex.backup.$(date +%Y%m%d)

出任何问题都能直接还原。

备份 .codex 目录

2. 看一下各文件的大小

bash
du -sh ~/.codex/state_5.sqlite ~/.codex/logs_2.sqlite \
      ~/.codex/.codex-global-state.json ~/.codex/log/codex-tui.log \
      ~/.codex/sessions/

codex-tui.log 通常是体积最大的那个。

查看各文件大小

3. 重命名,别直接删

给怀疑影响性能的文件加 .old 后缀。这样万一清理完感觉不对,改回原名就行,不用从备份恢复:

bash
mv ~/.codex/state_5.sqlite ~/.codex/state_5.sqlite.old
mv ~/.codex/logs_2.sqlite ~/.codex/logs_2.sqlite.old
mv ~/.codex/.codex-global-state.json ~/.codex/.codex-global-state.json.old
mv ~/.codex/log/codex-tui.log ~/.codex/log/codex-tui.log.old

sessions/ 我一般只动那些明确不再需要的旧会话,最近在用的留着。

WAL 和 SHM 文件如果也很大,同样改名就行。

重命名为 .old 后缀

4. 重启 Codex,跑一跑之前的任务

Codex 会自动生成新的文件。挑一两个之前明显感觉费劲的任务试试,一般就能感觉到差别。

Codex 自动重建文件

5. 确认稳定后再删 .old 文件

用几天觉得没问题,就可以把 .old 删掉释放空间:

bash
rm ~/.codex/*.old
rm ~/.codex/log/*.old

万一觉得还不如之前,把备份目录覆盖回来就行。

确认稳定后清理 .old 文件

顺便说下日常维护

我现在每隔一两周会把旧状态文件归档一下,保持主目录干净:

bash
mkdir -p ~/.codex/archive/$(date +%Y-%m-%d)
mv ~/.codex/*.sqlite.old ~/.codex/archive/$(date +%Y-%m-%d)/

想回滚的时候也能按日期翻到当时的文件。

按日期归档旧文件

另外

项目里真正重要的长期信息,比如架构决定、不能碰的边界、踩过的坑,别全压在 SQLite 里。

我习惯写在项目根目录的 PROJECT.md。纯文本,不依赖本地状态,Codex 随时能读,清理多少次都不受影响。

这套清理不能保证 Codex 一定恢复如初,但至少能把"本地文件膨胀"这个嫌疑先排除掉。