一年吃掉一块固态硬盘,Codex日志bug被骂“劣质软件”

marsbitPublié le 2026-07-02Dernière mise à jour le 2026-07-02

Résumé

OpenAI的编程工具Codex被曝存在严重日志Bug,其默认的TRACE级别日志记录导致在用户本地SQLite数据库中疯狂执行“插入后立即删除”操作。该问题在21天内产生了37TB的写入量,推算一年可达640TB,足以快速耗尽一块消费级固态硬盘(SSD)的写入寿命。 问题的核心在于,尽管最终数据库文件大小仅约1GB,但SSD的损耗取决于总写入数据量。Codex的日志系统无视用户通过RUST_LOG环境变量进行的配置,将大量无用的调试信息和遥测数据(占总写入量的96%)持续写入硬盘。类似“日志无限增长”的问题在Codex中至少被报告过9次。 在问题被提交至GitHub并引发社区广泛讨论后,OpenAI合并了修复代码,据称可减少约85%的日志写入量,但仍未彻底解决。此事引发了开发者对AI编程工具资源管理不当的批评,将其称为“劣质软件”,并指出同类工具Claude Code也存在类似问题。评论认为,现代软件过度依赖硬件性能来掩盖其低效和缺陷,形成了一个“软件越写越烂,硬件越造越猛”的荒诞循环。

一年「吃掉」一块1TB的固态硬盘?

OpenAI的旗舰编程工具Codex,正在以一年640TB的写入量,烧穿你的固态硬盘。

前段时间,一位开发者在GitHub上提交了一个issue。这个如今标着「Closed」、编号#28224的GitHub issue,标题写着:

Codex的SQLite反馈日志一年能写640TB,迅速耗尽固态硬盘寿命。

据这位报告者实测,他的主固态硬盘连续开机21天被写掉37TB,照此推算一年约640TB,足够报废一块总写入量(TBW)为600TB的消费级硬盘。

为佐证,他贴出了两张表。

在证据1里,这个日志库始终只有1.2GB,表面像什么都没发生;可它的自增行ID已经冲到55亿,真正留存的行不过50万出头,两者差了整整一万倍。

关键在于,硬盘损耗只算一共写过多少、不管此刻还剩多少:这55亿行全都落过盘,删掉也退不回已经付出的写入。所以你查文件永远只看到那50万行,硬盘却早已扛下55亿行的写入量。

证据2暴露了这55亿行的分布:九成多是连开发者自己都不会回头看的调试噪声,光把每条WebSocket数据包整包抄下来这一项,就占了一半。

罪魁祸首,是一行Level::TRACE默认配置,它把你硬盘的写入寿命,当成了免费的草稿纸。

Hacker News上一条高赞评论,直接为这事定了性:

这是「劣质软件」(slopware)最臭名昭著的例子之一。

这位网友还无奈地甩出一句:

这真是个悲剧。这个世界,需要有人来和Anthropic竞争。

更尴尬的是,这个问题不是没人报。

从今年4月起就有零星反馈,前后拖了两个多月,非要等用户自己测算、写报告、把它顶上Hacker News头条,才算被正经对待。即便如此,这一轮也只砍掉了约85%的日志写入。

还有人想自己动手,却发现无从下手:这些工具的桌面端是闭源的。

评论区还有一句神评论:审查流程怎么没拦住这么明显的错误?哦对了......@codex 审查一下这个。

640TB,到底是怎么写出来的

640TB是什么概念。

主流消费级固态硬盘,标称写入寿命大概150到600 TBW,够普通用户用上十几二十年。

而Codex这个「记录自己干了点什么」的日志功能,一年就能写满。

事情要从这位用户清点硬盘说起。他的机器连续开机21天,主固态硬盘被写掉了37TB。

照这速度,一年约640TB。

更离谱的是写入方式。

Codex在本地维护着一个SQLite数据库logs_2.sqlite,专门记录反馈日志。这位用户抓了15秒——数据库被插入36211行,而保留的总行数,从头到尾都是681774,一个没多。

每插进一行,就有一行被删掉。行数始终不变,磁盘却被来回擦写几万次。

这套机制有个外号,叫insert-and-prune:插入,然后立刻删除。

更荒诞的是它记的东西:一堆文件系统的inotify事件。

ld.so.cache被记了128764次,locale.alias37982次,passwd23843次。

同一个文件,被同一个程序,反反复复记上十几万遍。

日志里的自增ID已经超过55亿,而真正留存的行只有约50万。

两者差了一万倍。

这不是bug,简直就像是一个AI编程工具在对着自己的硬盘反复念经。

文件才1GB,写入却是640TB

一边写一边删,留下的logs_2.sqlite能多大?大约1GB。

这就引出整件事最反常识的一点:固态硬盘的寿命看的是「写入量」,而非「文件大小」。一个1GB的文件被反复擦写640次,对硬盘就等于写了640TB。

SQLite用的是WAL机制,每次改动先写进-wal文件,攒够再checkpoint回主库。Codex每15秒做三万多次插入加删除,每一次都要经过WAL、索引更新、checkpoint,同一块存储区,被擦了又擦。

打个比方:一本1GB的笔记本,你每天擦掉重写1750遍,连写一年。笔记本还是那本,纸已经磨穿了。

这也是这个bug能潜伏这么久的原因:它不占空间,只烧寿命。

查可用磁盘看不出异常,文件大小一直很安静,只有去读硬盘自己的SMART健康计数,才能看到写入量在悄悄累积。

根因,一行被无视的RUST_LOG

为什么会记这么多日志?

答案在Codex源码的一行配置里:SQLite反馈日志的sink,初始化时用的是Targets::new().with_default(Level::TRACE)。

一句话,日志默认开到TRACE级别,最高、最啰嗦、什么都记的那一档。

Codex的日志框架是Rust生态的tracing,标准做法是读RUST_LOG环境变量。用户当然试过,把RUST_LOG调成info、warn,甚至直接关掉。

没用。

with_default(Level::TRACE)把全局默认硬钉死在TRACE,RUST_LOG在这条路径上根本不生效。你以为自己关掉了日志,它照写不误。

这种bug最坑人的地方在于,并非「你忘了配置」,而是「你配置了,它假装没听见」。

更刺眼的是一个比例。

把保留的日志按类别拆开,TRACE占了70.7%,约732.5 MB。再加上codex_otel那两路镜像遥测日志(log_only和trace_safe),又占了25.3%。

七成写入是TRACE噪声,加上镜像遥测,96%全是没人会看的废话。

只有4%,才是真正有意义的内容。

这不是第一个,至少是第九个

报告者翻了Codex仓库,发现这类「日志无界增长」的Issue,至少有9个。

#17320,流式响应期间WAL狂写,根因和这次一模一样,都是TRACE无视RUST_LOG。

#24275,桌面版logs_2.sqlite疯涨。

#22444,WAL无限增长还占着空间不释放。

#26374,一天写0.75GB,没轮转。

#27911,一个4KB的goals_1.sqlite,被写成11MB/s。

#20563,进程闲着也狂写盘。

#27020,Windows上磁盘活跃100%。

最早的源头能追到#12969,正是这个PR把SQLite反馈日志的sink按TRACE级别接了进来。

一个4KB的数据库被写成每秒11MB,单独拎出来都够写一篇。而它和640TB那个,是同一个产品、同一套遥测体系的症状。

这说明Codex的日志和遥测系统,从一开始就没有「资源预算」这个概念。

整个赛道都在卷token预算、卷上下文长度、卷模型能力。

但几乎没人问:一个常驻用户机器、7×24小时跑的Agent,它的磁盘、内存、CPU预算,谁来管?

修了,但修得很OpenAI

6月14日报上GitHub,6月23日,报告者更新了一条:三个PR已合并,据他自己的Codex反馈能减少约85%日志,于是宣布关闭。

先说这个85%——不是100%,而且还没全落地。

三个修复里,#29432、#29457已随0.142.0发布,砍掉逐条WebSocket日志和噪声目标;第三个#29599停掉另一类被桥接进来的冗余日志,要等0.143.0才上线。

即便三个全到位,剩下约15%、一年仍要写约96TB,不过是从「一年烧穿硬盘」降到「六年烧穿硬盘」。

也有人替它辩护:trace日志是按设计存下来调试的,不算bug,对OpenAI也确实方便追查边缘case。

但问题恰恰在这儿:拿付费用户的SSD寿命,给厂商的debug做免费存储,这事,用户同意过吗?

编程战场,烧穿的不只是SSD

有意思的是,被点名的并不只有Codex。

评论区马上有人补刀:Claude Code也往本地猛写调试日志,有人只好把日志目录软链到内存盘(tmpfs),给SSD续命。

两家旗舰,犯的是同一类毛病。

社区里的评论,很快从一个bug,放大到整个AI编程工具的质量问题。

有人吐槽这些智能体GPU常年跑满、内存动辄70GB,有人干脆给这代软件起了名字:劣质软件。

那位开发者的建议本来极简:给应用设条线,别超过3GB。就这一条线,Codex拖了9个Issue、好几个月才肯画下来。

问题是一个时刻把「AGI」挂在嘴边的公司,为什么会栽在实习工程师都能看出来的问题上?

为什么这毛病能藏这么久,有条评论也说到了点子上。

放十年前,日志开到TRACE,程序当场卡死,当天就被修掉;如今CPU够快、内存够大、磁盘够猛,这点毛病被硬件性能悄悄消化,程序照跑、界面照常、用户无感,直到某天SSD提前报废。

这两年,软件被AI生成的代码塞满,功能越堆越多、抽象层越叠越厚、资源消耗一路狂飙,全靠硬件厂商每年用更快的芯片硬兜。

于是有了一个荒诞循环:软件越写越烂,硬件越造越猛。用户揣着「好像没变慢」的错觉掏钱换新机,其实只是新机器勉强撑住了更烂的软件。

一个小bug当然无法压垮OpenAI。但Codex和Claude Code的竞争已经从模型能力,蔓延到了开发者工作流的入口。

在这条战线上,快速作出改变,响应开发者需求从来不是加分项,只是入场券。

参考资料:

https://github.com/openai/codex/issues/28224

https://news.ycombinator.com/item?id=48626930

本文来自微信公众号“新智元”,作者:ASI启示录

Cryptos en tendance

Questions liées

Q根据文章,Codex工具的日志bug每年会写入多少数据,导致什么问题?

ACodex工具的日志bug每年会写入约640TB数据。这远超主流消费级固态硬盘(标称写入寿命约150到600 TBW)的承受能力,足以在一年内烧穿(报废)一块总写入量为600TB的硬盘。

Q文章中提到的Codex日志问题,其根本技术原因是什么?

A根本技术原因在于Codex源码中,SQLite反馈日志的sink在初始化时被硬编码配置为最高、最详细的TRACE级别(Targets::new().with_default(Level::TRACE))。这使得日志系统会记录大量冗余的调试信息,且无视用户通过RUST_LOG环境变量调整日志级别的设置,导致写入失控。

Q为什么这个严重消耗SSD寿命的bug难以被用户察觉?

A这个bug难以察觉主要有两个原因:第一,日志文件本身的大小始终保持在大约1GB左右,不会异常膨胀占用磁盘空间,因此通过查看磁盘可用空间无法发现问题。第二,其对硬盘的损耗体现在“总写入量”上,这部分数据需要查看硬盘的SMART健康计数才能发现,日常使用中用户通常不会监控这个指标。

Q文章中提到OpenAI是如何修复这个问题的,修复效果如何?

AOpenAI通过合并三个相关的PR进行了修复。其中两个已随版本0.142.0发布,砍掉了逐条WebSocket日志和一些噪声目标;第三个修复则需要等待版本0.143.0。根据报告者实测,修复后大约能减少85%的日志写入量。这意味着写入量从每年约640TB降至约96TB,从“一年烧穿硬盘”变为“六年烧穿硬盘”,问题得到缓解但未完全根除。

Q文章将Codex这类AI编程工具的普遍性问题称为什么?并简述其背后的行业现象。

A文章将这类问题称为“劣质软件”。其背后的行业现象是,在激烈的AI竞赛中,开发者过度专注于提升模型能力(如token预算、上下文长度),而忽略了作为常驻用户设备的客户端软件的资源管理(如磁盘、内存、CPU预算)。同时,现代硬件性能的强大掩盖了软件的低效和缺陷,导致一个“软件越写越烂,硬件越造越猛”的荒诞循环,用户最终为更差的软件体验买单升级硬件。

Lectures associées

550 millions de dollars de pertes pour vendre des cryptos, le jour où la foi de Strategy est venue à échéance

Le 6 juillet, Michael Saylor a annoncé que MicroStrategy avait vendu 3 588 BTC pour environ 216 millions de dollars, afin de payer les dividendes de ses titres de crédit numérique. Cette vente, réalisée entre le 29 juin et le 5 juillet à un prix moyen de 60 197 dollars par BTC, a généré une perte réalisée d'environ 55 millions de dollars, le coût d'acquisition moyen étant de 75 651 dollars. Cette décision marque un tournant pour la société, qui n'avait pratiquement pas vendu de BTC depuis 2022. Début juin, une vente test de 32 BTC avait déjà provoqué une réaction négative du marché. Fin juin, le conseil d'administration a officialisé cette nouvelle stratégie, autorisant la vente de jusqu'à 1,25 milliard de dollars de Bitcoin pour couvrir les obligations financières. La mécanique de croissance de MicroStrategy, qui reposait sur l'émission d'actions à prime pour acheter plus de Bitcoin, est actuellement bloquée. Avec la prime de ses actions (mNAV) proche d'un seuil critique (1,22x), émettre de nouvelles actions diluerait les actionnaires existants. Les canaux de financement par actions privilégiées (STRC) et obligations convertibles sont également difficiles d'accès actuellement. Face à des obligations annuelles de dividendes et d'intérêts estimées entre 1,7 et 1,76 milliard de dollars, la vente d'une partie du Bitcoin est devenue la solution rationnelle pour respecter ses engagements. MicroStrategy détient encore environ 843 775 BTC et 2,55 milliards de dollars de réserve de trésorerie, pouvant couvrir environ 17 mois de dépenses obligatoires. Cependant, si cette pression de vente pour payer les intérêts devenait régulière (potentiellement 29 000 BTC par an), elle pourrait peser sur le marché et remettre en cause le modèle des entreprises du secteur des actifs numériques (DAT). Le redémarrage du cycle de croissance de MicroStrategy dépend désormais d'une remontée durable du prix du Bitcoin, qui permettrait à ses titres de financement de retrouver leur valeur nominale.

链捕手Il y a 38 mins

550 millions de dollars de pertes pour vendre des cryptos, le jour où la foi de Strategy est venue à échéance

链捕手Il y a 38 mins

Trading

Spot

Articles tendance

Comment acheter T

Bienvenue sur HTX.com ! Nous vous permettons d'acheter Threshold Network Token (T) de manière simple et pratique. Suivez notre guide étape par étape pour commencer votre parcours crypto.Étape 1 : Création de votre compte HTXUtilisez votre adresse e-mail ou votre numéro de téléphone pour ouvrir un compte sur HTX gratuitement. L'inscription se fait en toute simplicité et débloque toutes les fonctionnalités.Créer mon compteÉtape 2 : Choix du mode de paiement (rubrique Acheter des cryptosCarte de crédit/débit : utilisez votre carte Visa ou Mastercard pour acheter instantanément Threshold Network Token (T).Solde :utilisez les fonds du solde de votre compte HTX pour trader en toute simplicité.Prestataire tiers :pour accroître la commodité d'utilisation, nous avons ajouté des modes de paiement populaires tels que Google Pay et Apple Pay.P2P :tradez directement avec d'autres utilisateurs sur HTX.OTC (de gré à gré) : nous offrons des services personnalisés et des taux de change compétitifs aux traders.Étape 3 : stockage de vos Threshold Network Token (T)Après avoir acheté vos Threshold Network Token (T), stockez-les sur votre compte HTX. Vous pouvez également les envoyer ailleurs via un transfert sur la blockchain ou les utiliser pour trader d'autres cryptos.Étape 4 : tradez des Threshold Network Token (T)Tradez facilement Threshold Network Token (T) sur le marché Spot de HTX. Il vous suffit d'accéder à votre compte, de sélectionner la paire de trading, d'exécuter vos trades et de les suivre en temps réel. Nous offrons une expérience conviviale aux débutants comme aux traders chevronnés.

579 vues totalesPublié le 2024.12.10Mis à jour le 2026.06.02

Comment acheter T

Discussions

Bienvenue dans la Communauté HTX. Ici, vous pouvez vous tenir informé(e) des derniers développements de la plateforme et accéder à des analyses de marché professionnelles. Les opinions des utilisateurs sur le prix de T (T) sont présentées ci-dessous.

活动图片