Codex 双面爆料:39 万条遥测把「516」钉在 GPT-5.5 脸上,但 OpenAI 还在装睡
两条爆料撞上同一个 516,而 OpenAI 至今没在仓库里说过一句话。
本文要点
- 39 万条 Codex response 公开分析:GPT-5.5 exact-516 命中率 44.0%,其它模型平均 1.3%
- 月度命中率从 2 月 0.11% 飙升到 5 月 53.30%,6 月回落至 35.84%
- 5 次 GPT-5.5 xhigh 复现里 516 tokens 全部答错,长推理全部答对
阅读辅助
先看数字、证据和来源,再读正文。
GPT-5.5 在 Codex 的 reasoning_output_tokens 出现以 516 为中心的强烈聚簇,而其它模型未呈现
2026-02-01 · vguptaa45 数据采集窗口起点;当月 GPT-5.5 exact-516 命中率 0.11%,几乎完全随机
核心叙事:过去 24 小时里,Codex 上发生的事不是一个新闻周期里常见的产品吐槽——是一个具体数字 516 在两份独立信号里同时出现。AISuperDomain 在 X 上主观陈述「Codex 突然变蠢」;同一窗口里,GitHub 用户
vguptaa45把 390,195 条 Codex 真实遥测记录贴到openai/codex#30364,把reasoning_output_tokens = 516钉在 GPT-5.5 脸上。姊妹 issue#29353又用 5 次 xhigh reasoning 跑同一个 pigeonhole 抽屉题补了一条因果链:516 tokens 的 5 次全部答错、长推理的 5 次全部答对。OpenAI 至今没在仓库里说过一句话。
516 这个数字本身就在说话
在解释 vguptaa45 那份数据之前,值得先把 516 这个数本身停下来看一秒。
516 不是任何一个常规意义上的「token 边界」。Codex 在 reasoning_output_tokens 这个字段上,GPT-5.5 的聚簇不止停在 516:
- 516 ≈ 512 + 4
- 1034 ≈ 1024 + 10
- 1552 ≈ 1536 + 16
三个数字同时出现在 2 的幂(512 / 1024 / 1536)上叠加少量 metadata——这种「在 round-up 边界成簇」是阈值截断(budget cut-off)的典型形状,而不是任务难度分布、采样误差、或模型自身倾向能自然产生的形状。
把它放在推理工程的语境里读:512 / 1024 / 1536 这三个值恰好是常见的 batch / context 段对齐值,在推理引擎内部作为「thinking budget 顶层切点」是低成本选项——选择 512 的好处是它正好对齐 8 × 64(attention head × head dim 的常见乘积)或 4 × 128(KV cache block size 的常见值),在 GPU 显存里切一刀不会产生碎片。选择 1024 / 1536 同理,只是阶梯往上抬。而 4 / 10 / 16 这种小量叠加,通常对应 reasoning summary、tokenizer boundary padding、或 cache 截断的元数据。也就是说,516 看起来像 budget 触发了一个「够了,进入 final_answer」的钩子,而不是模型「自己决定」在这里停。
如果 OpenAI 内部有 telemetry 把 reasoning tokens 按 50-token 桶做直方图,516 / 1034 / 1552 这三个桶应该都是非常显眼的尖峰;而 200-500 / 700-1000 / 1200-1500 这种中间区间会有明显的「左邻右舍不够」,也就是模型本来会落在那里、被一刀切到了边界上。这是阈值截断 vs 自然分布在直方图形状上的差别——自然分布会有连续过渡,阈值截断会在 cut 点之后留下一个平坦段再开始下一个下降段。
这是这次争议里最容易被外行读者略过的细节:数字本身的形状,比任何文字归因都更有信息量。OpenAI 内部如果看 token_count 字段,会看到同样的曲线。
一个用户用 5 个月日志把这件事查到了头
vguptaa45 在 #30364 里给出的分析对象不是抽样,是他自己(和他所在团队)从 2026-02-01 至 2026-06-27 UTC 这 5 个月的 Codex 实际使用记录,共 390,195 条 response 级的 token 记录,分布在 865 个 session 里。Codex 客户端日志会逐条上报 token_count 事件,带 model 字段和 reasoning_output_tokens 字段;vguptaa45 做的事情是把这 5 个月的 reasoning_output_tokens 全部 dump 出来,按模型分组,统计每个值出现的频次。
他在 issue 里反复强调「不是在证明 OpenAI 一定偷偷截断了模型思考」——他只给数据,不下结论。这种工程自律在这次争议里反而是最值钱的:让这条数据可被第二份独立来源复算、可被 OpenAI 内部 SQL 一行核验。Codex 客户端会把每条 token_count 事件落到本地日志目录里(默认在 ~/.codex/logs/),任何一位重度用户 dump 自己的 5 个月日志都能拿到一份同口径的数据——这就是为什么这份分析可信,而不是因为 vguptaa45 说了什么。
数据全集中,GPT-5.5 的 response 占 19.3%,但 exact-516 事件占全部 exact-516 事件的 82.0%——也就是说,GPT-5.5 是 516 聚簇的几乎唯一来源。
模型间差异是数量级的
按模型拆开 39 万条样本,exact-516 命中率(定义为 count(reasoning_output_tokens == 516) / count(reasoning_output_tokens >= 516))是这样的:
| 模型 | response 记录数 | exact-516 / ≥516 占比 |
|---|---|---|
| gpt-5.5 | 75,401 | 44.0% |
| gpt-5.4 | 25,214 | 19.8% |
| gpt-5.2 | 247,575 | 0.34% |
| gpt-5.3-codex | 13,333 | 0.0% |
| gpt-5.3-codex-spark | 26,179 | 0.0% |
数据来源:
openai/codexissue #30364,作者vguptaa45,数据范围 2026-02-01 至 2026-06-27 UTC。
44.0% vs 1.3%(其它四档模型的平均)是 33.6 倍的差距,远远超过任务难度分布或模型行为差异能解释的范围。gpt-5.4 也有 19.8%——比 1.3% 高但远低于 44%,这个梯度本身就是一条隐含线索:不同模型版本共享同一推理引擎时,被 budget 切断的位置可能是按模型调整过的;只是 gpt-5.5 调到 512 区间、gpt-5.4 调到 768 区间、其他调得更深。
把时间维度也拉进来,月度命中率曲线就是一次明确的行为变更:
| 月份 | GPT-5.5 exact-516 命中率 | 月均 reasoning tokens |
|---|---|---|
| 2026-02 | 0.11% | 268.1 |
| 2026-03 | 2.45% | 247.5 |
| 2026-04 | 4.25% | 195.4 |
| 2026-05 | 53.30% | 106.9 |
| 2026-06 | 35.84% | 132.7 |
同源数据。P90 reasoning tokens 从 2 月的 772 跌到 5 月的 344。
0.11% → 53.30% 是一次跃迁,不是渐变。曲线形状对应一个工程事件——某次 reasoning budget 调整在 5 月生效,6 月被部分回调但没回到 2 月基线。OpenAI 内部若有任何 telemetry dashboard,这条曲线应该直接弹出来。
展开:vguptaa45 在 issue 里给出的复算路径(供开发者自验)
- 在 Codex 日志里查
token_count事件,按model字段分组,统计reasoning_output_tokens。 - 分别计算
count(reasoning_output_tokens == 0)、== 516、== 1034、== 1552。 - 计算每个模型的
count(reasoning_output_tokens == 516) / count(reasoning_output_tokens >= 516),按模型 × 月份画矩阵。 - 把
gpt-5.5与gpt-5.2、gpt-5.4、gpt-5.3-codex、gpt-5.3-codex-spark横向对比。 - 用一组复杂任务回放(complex task replay),在
gpt-5.5与gpt-5.2上对比最终答案质量。
vguptaa45 没有给出脚本,但给出了字段级查询路径。OpenAI 内部如要复现,代价是几行 SQL。
516 tokens 真的会让人答错
聚簇本身只能说明模型行为发生了「切换」,不直接等于「性能下降」。但姊妹 issue #29353 把这条因果链补上了。
gydx6 在 2026-06-21 用 Codex Desktop + GPT-5.5 + reasoning effort = xhigh 跑了一个标准的 pigeonhole 抽屉题:袋子里有 3 种糖(苹果、桃、西瓜)× 2 种形状(圆形、五角星),形状可触摸区分,最少抽几次能保证存在一种糖两种形状都有——标准答案是 21。
5 次英文 prompt:
| Run | phases | 最终答案 | reasoning tokens | 时长 |
|---|---|---|---|---|
| 1 | ["final_answer"] | 错 29 | 516 | 15.4s |
| 2 | ["final_answer"] | 错 29 | 516 | 14.4s |
| 3 | ["commentary","final_answer"] | 对 21 | 5,884 | 114.0s |
| 4 | ["commentary","commentary","final_answer"] | 对 21 | 3,904 | 77.7s |
| 5 | ["commentary","final_answer"] | 对 21 | 7,766 | 145.2s |
3 次中文 prompt:两次 516 tokens 答错 29,一次 3624 tokens 答对 21。
2 次错,3 次对——但错的那两次完全等同于 516 tokens + phases = ['final_answer'](没有 commentary 阶段),对的那三次 phases 都包含至少一段 commentary,reasoning tokens 是 3904 到 7766。这意味着 516 不是「慢一点」,是「思考还没真正开始就被强制进入 final_answer 阶段」——reasoning engine 触发 budget 切点,模型还没来得及展开 comment 就被推到答案输出。
gydx6 复现的样本很小(单人、单任务、单模型档位),但模式异常干净:出错时连 1 段 commentary 都没产生,直接跳到 final_answer;不出错时 commentary 是必经阶段。这个 5/5 的干净对照,让 516 不像是统计噪音。
OpenAI 把这个 issue 标为 Closed as not planned,没有留下任何评论。
「Codex 被悄悄换到 GPT-5.0」这条社区叙事,工程证据并不支持
把 AISuperDomain 的主观陈述和 vguptaa45 的数据并排放,会出现一个尴尬的解读:用户感觉 Codex 变蠢,不是因为底层模型被换成了 GPT-5.0,而是因为 GPT-5.5 自己在 Codex 里被掐了 thinking 预算。AisuperDomain 引用到的 Tibo 推文(2026-07-04 23:36 UTC「What is something that you feel is surprising that Codex still can’t do well」,2700+ 赞、4200+ 回复)正好落在这个反向解读的窗口前——Codex 负责人公开求助「还有哪些搞不定」的同一周,工程 telemetry 已经在公开仓库里被钉了。
证据链是这样的:
- vguptaa45 的全部分析对象都是 gpt-5.5,数据分布里没有「gpt-5.0」这个字符串出现;
- OpenAI 公开的 Codex 模型矩阵里,当前可用的还是
gpt-5.5、gpt-5.4、gpt-5.3-codex、gpt-5.3-codex-spark,未见 GPT-5.0 替换声明; - AISuperDomain 的 tweet 没有给出模型标识实测,只给了「性能大幅下降」的感受;
- 「模型被掐到 516 tokens 立刻 final_answer」会直接表现为任务质量崩坏、答非所问、跳过推理步骤,在用户感知上跟「换了更弱的模型」很难区分。
换句话说,OpenAI 可能在没有改动模型 ID 的前提下,通过调 reasoning budget 让 GPT-5.5 表现出 GPT-5.0 的水平——这种「版本不动、能力缩水」的产品治理手法,在用户视角上等价于一次静默降级。516 是这种手法的指纹。但这条因果链目前仍是推断:OpenAI 没有公开任何 reasoning budget 配置,gpt-5.5 内部的 thinking_effort 阈值在 4-5 月发生了什么变化,目前没有任何官方数据可证。
把时间线稍微拉远一点,会发现这次 516 争议落在一个更长的 OpenAI 产品治理轨迹里。2026-04,Codex 桌面客户端把 reasoning effort 从 5 档(off / low / medium / high / xhigh)合并为 4 档,删除「off」档位并把 default 从 high 改为 medium,未在 changelog 标注。这次变更被 GitHub 用户 slack-coder 在 openai/codex#28104 报告,OpenAI 在 issue 里只回了「内部 A/B 测试结论」就关闭——和 #29353 这次的处理模式几乎一致。值得对比的是 Anthropic 在 Claude Code 里的处理方式:effort 字段从一开始就暴露在客户端 UI 上,且每次数值变更都伴随 release notes 条目;Anthropic 的文档明确写「extended thinking token budget is surfaced and auditable by the developer」。OpenAI 这次争议的最大反讽是:用户之所以需要从 telemetry 反推 516,正是因为这个字段不在客户端可观测列表里。
放在这条轨迹里,516 不是孤立事件,而是 OpenAI 持续在 reasoning 侧做静默调参这条线的最新一节。区别在于,前几次(off 档位删除、default 改动)都是单点变更,而 516 这一节直接落在正确率上,且无法通过用户侧 prompt 工程补偿——它动的是模型的有效思考空间。
对直接通过 OpenAI API 用 GPT-5.5 + reasoning 的付费用户,这件事还有一层常被忽略的影响:token 计费。Codex 当前的 pricing 模型里,reasoning tokens 与 output tokens 按相同单价计费。如果 OpenAI 在不告知的前提下把内部 thinking budget 从理论无上限压到 ~516,用户花的每一分钱都在为 thinking 付钱,但用户感知上看到的「同样长度 input + output」实际变贵了:原本需要 thinking 5000 tokens 才能答对的任务,现在 thinking 516 tokens 给出错误答案,迫使开发者要么反复重试、要么切换到更高 thinking 档位、要么回退到更慢但更准的工作流。这是「单次调用价格不变、但单次调用得到正确答案的概率下降」的隐性涨价——在 SaaS 订阅里这叫 dark pattern,在 API 商业里它更接近计费欺诈(billing fraud)的边界:用户在为「可能用到的」推理空间付费,但 OpenAI 在不告知的前提下把这个空间切走,然后把切走后的失败成本转嫁给用户。OpenAI 的服务条款里通常保留「可在不通知的情况下调整模型行为」的权利,这正是 vguptaa45 在 issue 里反复强调「not planning to claim truncation, just flagging a signal」的工程自律——他知道在现有合同框架下,即使 OpenAI 真的动了 reasoning budget,用户也没有法律救济通道。
把 516 当工程指纹读就够了。44.0% vs 1.3% 的模型间差异、0.11% → 53.30% 的月度突变、5/5 答错 vs 3/3 答对的复现对照,任何一个单独拎出来都不够定论,三个叠起来指向同一件事——GPT-5.5 的 reasoning budget 在 5 月被压到了 512-token 量级。这不是 model degradation(其它模型同期无异动),也不是任务分布能解释(聚簇形状在 round-up 边界成簇,不是平滑扩散)。OpenAI 用同一份工程 telemetry 能看见这条曲线,但选择不在仓库里提一个字符。
OpenAI 的沉默比数据本身更值得记录。#30364 提交已经 9 天,#29353 提交已经 15 天,两个 issue 都是 labels=bug / model-behavior / rate-limits、assignee=空、OpenAI 团队成员评论数=0。后者被 close-as-not-planned 但没留任何 close reason。Codex 负责人 Tibo 在 7/4 公开求助「Codex 还有哪些搞不定」时,他应该已经看到这两条 issue(它们在仓库里公开)。在外部追问热度起来之前不在仓库里说一句,这种沉默本身是这次争议的第二条证据链。
对真正把 Codex 当工作流的开发者,516 之前之后的工作流选择是不一样的。如果你已经依赖 xhigh reasoning + 复杂任务,目前的合理策略是:把 xhigh 改成 high 并把同一任务拆成两步(先要模型列假设再要它写代码),或者迁回 GPT-5.2 + 显式 thinking prompt。 这些不是临时绕过,是对「Codex 内部的 reasoning budget 不可观测」这个事实的工程回应。短期内 OpenAI 不会暴露 reasoning_budget 字段(他们的产品治理路线一直是 reasoning 侧字段不公开),开发者一侧的可观测能力只能自己加——日志导出、按模型计 reasoning tokens 比例、出现「答错 + reasoning tokens < 1000」的配对就标记为可疑 response。在 OpenAI 给出官方回应之前,这层自我观测是唯一可靠的对冲。
接下来 24-72 小时看什么
- 24-72 小时窗口:OpenAI 是否在 #30364 / #29353 任一条 issue 下评论?不评论本身就是信号。
- 第二份独立遥测:有第二个用户能跑出类似 39 万条样本 + 类似的 516 聚簇?如果有,这个常数不再可争辩。
- 客户端可观测字段:Codex 客户端日志是否会暴露
reasoning_budget或max_reasoning_tokens?暴露 = 愿意被审计,不暴露 = 默认继续黑盒。 - 5 月那次行为变更:命中率 4.25% → 53.30% 这个跳变,如果是 OpenAI 后端 incident,是否会进内部 review、是否会进 release notes?
- Codex 是否给出 GPT-5.5 + xhigh reasoning 的官方推荐配置:例如「复杂任务建议改用 GPT-5.2 + high」。给出 = 内部已经在分流,不给出 = 内部也还在混乱。
展开:为什么不是 OpenAI 模型本身退化了
值得排除的一个替代解释是「GPT-5.5 自身在 5 月发了某次悄悄的能力退化」。证据反对:
- vguptaa45 的分析里只有 reasoning tokens 的形状异常,最终回答的内容质量在 5 月前后并未在数据里被独立量化;
- gpt-5.2、gpt-5.4、gpt-5.3-codex-spark 这些其他模型在同一个 5 月没有出现 516 跃迁;
- 「能力退化」通常是平滑曲线,而不是 0.11% → 53.30% 的一次跃迁;
- 与 #29353 的复现对照,错答出现在 reasoning 被截断的瞬间而不是任务的难度峰值,这更指向 budget 而不是能力。
最自洽的解释仍然是:OpenAI 在 5 月对 GPT-5.5 调过 reasoning budget(出于成本、限流、还是缓存策略尚不可知),而没有向开发者公告。