如果你之前遇到 ~/.codex/logs_2.sqlite 或 WAL 文件持续增长,Codex 0.142.0 是应该优先安装的版本。OpenAI 于 2026 年 6 月 22 日发布该版本,Release 说明中明确提到减少持久日志 churn,包括移除逐 WebSocket payload 日志、过滤重复 telemetry 记录。
我的建议是先升级,再清理旧数据库。新版本修的是后续写入行为,但不会自动把已经膨胀的 SQLite 文件缩小。
如果你还想看更多 AI 工具和增长运营文章,可以浏览 EasyGlobe 博客。本文只聚焦 Codex SQLite 日志修复,以及升级后的清理步骤。
先升级,再确认 logs_2.sqlite 不再快速增长。Codex 0.142.0 到底改了什么?
官方 Codex 0.142.0 Release 把相关变更归在 reduced persistent-log churn。这个版本还包含启动和会话延迟优化、可配置 rollout token budget、索引 web 搜索模式,以及 multi-agent delegation 配置。
和本问题直接相关的是两个已合并 PR:PR #29432 停止记录每个成功的 Responses WebSocket 事件;PR #29457 过滤 SQLite 持久日志里的高噪声 target,包括依赖日志和重复的 OpenTelemetry mirror 事件。
所以更准确的说法是:0.142.0 修复了导致异常 churn 的高频日志来源,而不是承诺 Codex 从此完全不写本地日志。
哪些用户应该升级?
- Codex 版本低于 0.142.0 的用户。
- 曾经看到 logs_2.sqlite 或 logs_2.sqlite-wal 快速增长的用户。
- 曾经用 SQLite trigger 拦截日志写入的用户。
- 同时使用 Codex CLI、桌面客户端或编辑器插件,且担心磁盘写入的用户。
如何检查当前 Codex 版本
在终端运行:
codex --version
如果低于 0.142.0,就需要升级。如果你之前用过多个安装方式,还要确认 shell 实际调用的是哪个 codex。
which codex
如何升级 Codex CLI
以下命令来自 Codex 官方 README。选择和你当前安装方式一致的命令即可。
macOS 或 Linux 安装脚本
curl -fsSL https://chatgpt.com/codex/install.sh | sh
npm 安装
npm install -g @openai/codex@latest
Homebrew cask
brew upgrade --cask codex
升级后再次确认版本:
codex --version
如何验证 SQLite 日志是否恢复正常
先看文件大小:
ls -lh ~/.codex/logs_2.sqlite ~/.codex/logs_2.sqlite-wal ~/.codex/logs_2.sqlite-shm 2>/dev/null
再看日志级别分布:
sqlite3 ~/.codex/logs_2.sqlite "SELECT level, COUNT(*) FROM logs GROUP BY level ORDER BY COUNT(*) DESC;"
最后观察 15 秒内行数变化:
sqlite3 ~/.codex/logs_2.sqlite "SELECT COUNT(*) FROM logs"; sleep 15; sqlite3 ~/.codex/logs_2.sqlite "SELECT COUNT(*) FROM logs";
少量变化不一定异常。真正值得警惕的是几秒内插入成千上万行,但保留行数几乎不变,这通常意味着持续 insert-and-prune。
推荐顺序:查版本、升级、测写入、清理空间、再撤销临时绕过。如何清理旧的 Codex SQLite 占用空间
升级只影响未来写入,旧数据库页和 WAL 仍可能占用空间。建议先退出 Codex,再执行:
sqlite3 ~/.codex/logs_2.sqlite "PRAGMA wal_checkpoint(TRUNCATE); VACUUM; PRAGMA wal_checkpoint(TRUNCATE);"
如果你不需要保留旧调试日志,可以先清空日志行,再回收空间:
sqlite3 ~/.codex/logs_2.sqlite "DELETE FROM logs; PRAGMA wal_checkpoint(TRUNCATE); VACUUM; PRAGMA wal_checkpoint(TRUNCATE);"
这只删除本地调试日志,不会删除你的 Codex 对话或项目文件。
之前加过 trigger,还要保留吗?
如果你之前创建过 block_log_inserts 触发器,建议升级并验证后再删除。确认日志行数不再快速增长后,可以恢复正常日志能力。
sqlite3 ~/.codex/logs_2.sqlite "DROP TRIGGER IF EXISTS block_log_inserts;"
删除后重新跑 15 秒行数测试。如果只少量变化,说明临时绕过基本可以撤销。
FAQ
Codex 0.142.0 会完全停止 SQLite 写入吗?
不会。它降低的是导致异常 churn 的噪声持久日志。正常本地日志仍可能存在。
升级后 logs_2.sqlite 会自动变小吗?
不会。文件已经变大时,需要手动 VACUUM 才能回收空间。
删除 logs_2.sqlite 里的旧日志安全吗?
对普通用户通常是安全的。这些是本地调试日志,不是主要对话存储。除非你要保留 bug 证据,否则可以清理。