最近用 Codex 5.5,不少人感觉它「降智」了——配置没改,网络正常,但处理同样难度的任务,有时三两下定位 bug,有时绕来绕去说不到点子上。
Suu 在 Reddit 上发现一个很容易被忽略的点:本地数据文件膨胀。
问题:~/.codex 目录失控
Codex 在本地持续写入:
- 状态库(SQLite)
- 日志文件
- 会话记录
- TUI 终端日志
时间一长,体积失控。有人报告 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 会自动重建,清理本身是安全的。
安全清理步骤
Step 1:备份
cp -r ~/.codex ~/.codex.backup.$(date +%Y%m%d)
Step 2:检查体积
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 是体积最大的那个。
Step 3:改名(可逆操作)
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 文件如果很大,同样改名。
Step 4:验证
Codex 会自动生成新文件。找一两个之前感觉费劲的任务试试,一般就能体会到差别。
Step 5:清理或回滚
用几天觉得没问题,删掉 .old 文件释放空间。觉得不如之前,把备份目录覆盖回来,完全可逆。
日常维护习惯
每隔一两周归档旧状态文件,保持主目录清爽:
mkdir -p ~/.codex/archive/$(date +%Y-%m-%d)
mv ~/.codex/*.sqlite.old ~/.codex/archive/$(date +%Y-%m-%d)/
重要提醒
项目里真正重要的长期信息——架构决策、不能动的边界、踩过的坑——别全压在 SQLite 里。
写在项目根目录的 PROJECT.md 里,纯文本不依赖本地状态,Codex 随时能读,清理多少次都不受影响。
这个方法不能保证 Codex 一定恢复如初,但至少能排除本地文件膨胀这个隐性干扰。如果你也感觉它时灵时不灵,不妨先看一眼自己的 ~/.codex 目录。