如果你正在使用 OpenAI Codex 的本地客户端或 Codex 插件,请务必花一分钟按本文方法自查。这个史诗级 Bug 可能导致你的固态硬盘在短时间内被疯狂写入大量日志,严重影响硬件寿命。
前阵子,使用 Codex 时出现了很多异常情况:客户端突然卡顿、离奇闪退,甚至在低负载下 MacBook Pro 风扇狂飙、机身发烫。这并非模型本身的问题,而是 Codex 本地服务的一个日志系统 Bug。
硬盘正在被"火烤"
有开发者实测,机器开机仅跑了 21 天,主盘的总写入量(TBW)就暴增了 37 TB。如果不加干预,一年下来会产生高达 640 TB 的无意义写入。要知道,目前市面上主流 1TB 消费级固态硬盘(SSD)的官方保修寿命通常也就 600 TBW 左右。


问题根源:绕过日志过滤的 TRACE 级别
根据 GitHub 社区的深度排查,问题的根源出在 Codex 本地服务(app-server)的日志系统上。它在处理流式传输和自动化任务时,内部的 SQLite 日志接收器绕过或忽略了标准的日志过滤机制,导致系统错误地以最高级别的 TRACE 级别拼命记录日志——底层的 WebSocket 数据包、内部状态、甚至是文件系统的琐碎变动,全被毫无保留地塞进了本地数据库 logs_2.sqlite 中。
更棘手的是它采用了 SQLite 的 WAL(预写日志)模式。形象点说,它就像一个拿着黑板擦的疯子:在你的硬盘上每秒狂写几千字,然后立马擦掉。你打开文件管理器看它,觉得文件只有几百 MB"人畜无害",但底层闪存芯片的真实擦写次数(TBW)早已悄悄透支。
第一步:一分钟自查
无论你是 Mac 还是 Windows/Linux 用户,只要在使用相关客户端,请立刻打开终端执行自查。
检查日志级别分布:
# Mac / Linux 用户
sqlite3 ~/.codex/logs_2.sqlite "SELECT level, COUNT(*) FROM logs GROUP BY level ORDER BY COUNT(*) DESC"
# Windows 用户
sqlite3 %USERPROFILE%\.codex\logs_2.sqlite "SELECT level, COUNT(*) FROM logs GROUP BY level ORDER BY COUNT(*) DESC"
当返回的 TRACE 级别日志数量异常巨大(比如上万条),加上 DEBUG 日志占总量 60% 以上,说明你的硬盘也正在被"火烤"。
检查文件实际大小:
ls -lh ~/.codex/logs_2.sqlite
如果这个纯文本数据库的体积逼近或超过 1GB,说明它在你看不见的地方已经完成了大量物理擦写。

第二步:官方补丁仍未完全堵死?
OpenAI 紧急释出了官方修复补丁 rust-v0.142.0 并关闭了该 Issue。但根据 macOS 和 Windows 用户的最新追踪反馈,升级到最新版后,系统在底层依然能观察到部分残留的 TRACE target=log 高频刷盘现象。官方的第一波补丁并没有完全把漏洞堵死。
第三步:三选一硬核自救方案
既然官方补丁不彻底,建议立刻采用以下防御方案:
方案 A:注入数据库触发器(最推荐)
直接在 SQLite 层面建立一个触发器,拦截所有试图写入 logs 表的行为。
# 1. 清空当前已经积累的垃圾日志并释放空间
sqlite3 ~/.codex/logs_2.sqlite "DELETE FROM logs; VACUUM;"
# 2. 强行注入拦截触发器,一劳永逸禁写日志
sqlite3 ~/.codex/logs_2.sqlite "CREATE TRIGGER IF NOT EXISTS block_log_inserts BEFORE INSERT ON logs BEGIN SELECT RAISE(IGNORE); END;"
执行完后,文件大小会直接从 972 MB 暴降到几十 KB,客户端瞬间变顺滑,卡顿、闪退、风扇飙高问题当场消失。
方案 B:将日志软链接至内存盘
把日志文件重命名备份,然后软链接到系统的内存临时目录(Linux/Mac 的 /tmp)。Codex 就会在内存里反复折腾,完全不伤 SSD,重启后自动清空。
方案 C:物理转移至机械硬盘
把 ~/.codex/ 整个目录挪到机械硬盘,然后建立软链接。机械硬盘非常耐操,不怕这种垃圾日志的反复磨损。
苏米注:这个 Bug 暴露了 AI 工具在本地资源管理上的盲区。Agent 在后台疯狂写入日志本是为了调试,但当日志级别失控时,反而成了破坏系统稳定性的元凶。建议所有本地 AI 工具默认关闭 TRACE/DEBUG 级别日志,或者提供明确的日志大小限制开关。
把这个方法转发给身边同样在深度使用 Codex 辅助编码的开发者朋友吧!花一分钟敲行命令,也许就能帮他们省下一块新硬盘的钱。