两种 API 配置。模型相同。基准相同。任务集相同。
从 13.3% 提升至 38.3%,仅使用原来六分之一的输出 token。
OpenAI 在 ARC-AGI-3 上发布了关于 GPT-5.6 Sol 的这一结果,这是该领域在过去一年里我一直从第一性原理讨论的问题上所能产生的最干净的自然实验。模型本身没有任何变化。所有变化都发生在其周围。
该得分是 Relative Human Action Efficiency(RHAE),而非通过率,且 OpenAI 估计在同一套题目上平均人类测试者的得分为 48%。于是模型在人类基准上的差距从落后 34.7 分缩小到落后 9.7 分,全部提升均来源于配置调整。按我的计算,这大约占人们此前归因于模型的差距的 72%。
同样的事实还有更直白的表述。在这些游戏的公开排行榜上,没有任何前沿模型能够通过第一关。而在重新配置的 harness 下,GPT-5.6 Sol 能够解决全部六关。
所有发生变化的内容都位于右侧列,且与模型本身无关:
| 官方 harness | 保留 reasoning + 压缩 | |
|---|---|---|
| 模型 | GPT-5.6 Sol | GPT-5.6 Sol |
| 得分(RHAE,公开集) | 13.3% | 38.3% |
| 每局输出 token | 6x | 1x |
| 轮次间 reasoning | 每次行动后丢弃 | 保留 |
| 达到上下文限制时 | 滚动截断,175,000 字符 | 压缩 |
| 人类测试者平均值 | 48% | 48% |
官方 harness 所做的事
这部分值得深思,因为它并不晦涩。这是编写 agent 循环最自然的方式。
该基准的 harness 在每一步后会丢弃模型的私有 reasoning,并在上下文填满时删除较早的操作。
截断操作有一个具体的数值:当对话超过 175,000 个字符时,最旧的消息会被删除。
这两项几乎是我所读过的所有 agent 框架的默认行为。reasoning token 成本高昂,它们并不是答案,且 API 将它们作为独立的内容返回,你必须有意识地保留。丢弃它们就像是保持卫生。在上下文满载时截断最旧的回合是上下文管理的两行版本,也是你最初会编写的代码。
在 OpenAI 的描述中,其后果是模型必须在每一轮从头开始解出游戏。
Think about what that does to a task where the whole point is learning rules from interaction. The model plays a move, forms a theory about the rules, and the theory is deleted. Next turn it sees the board and its own past actions, but not why it took them. So it re-derives. It burns output tokens rebuilding a theory it already had, arrives somewhere slightly different, and acts on that.
That is not a model that cannot learn rules. That is a model with anterograde amnesia, being scored on rule learning.
The two loops differ by one arrow. The expensive one is the loop that has to rebuild
its own premise on every pass.
ARC had a reason for the generic harness, and it is a good one. A simple harness makes model shortcomings more visible, and it makes comparisons between models fairer. Commercial developers tune a harness to each model's features and quirks, which is exactly the thing a benchmark is trying to factor out.
That reasoning is sound and it still produced a broken measurement. Neutrality is not the absence of assumptions. A harness that discards reasoning has taken a position on whether reasoning should persist, and it happens to be the position that penalises models trained to think across turns.
The two settings
Retain the reasoning across turns. Compact the history instead of truncating it.
Neither is clever. Neither required a new model, a new prompt, or a new scaffold. They are settings, and OpenAI's point in publishing was that they are the same settings already running in ChatGPT and Codex. The production harness had them on. The benchmark harness did not.
The token result is the one I keep returning to. Six times fewer output tokens, while nearly tripling the score.
We have all internalised a trade here: more careful reasoning costs more tokens, and quality is something you buy. This inverts it. The expensive configuration was expensive because it was worse. Every discarded chain of reasoning had to be regenerated, and regeneration is output tokens at output prices. The waste and the failure were the same event.
OpenAI describes the mechanism plainly: with reasoning retained, the model spent less time thinking before each action, because it no longer had to interpret the game from scratch every turn. Less thinking, better play. That only sounds paradoxical if you were counting the re-derivation as thinking.
我曾在《你的 AI 账单是一个分布式系统问题》一文中提出过这一论点的一般形式:智能体系统的成本大头在于重复劳动,而非单价。而这篇文章,正是给那个论点附上的一组受控实验——由模型厂商亲自操刀,在公开基准上完成。
为什么那个分数从来都与模型无关
OpenAI 在自己的文章里把潜台词挑明了:一次评测测量的从来不是孤立的模型,它同时也在测量 API 配置、评测框架的设计,以及提示词的呈现方式。
他们的原话是这样的:“基准测试很少孤立地测量 AI 模型,它们同时也在测量一些不那么显眼的东西:API 设置、评测框架设计,以及提示词的写法。”
然后是那句让我反复回味的话:
“这已经不是我们第一次在公开基准上被低分惊到,随后才发现评测程序用的是一套通用评测框架,把推理消息丢掉了。”
不是第一次了。这意味着,已经有一些公开发布的数字至今仍在流传、仍被引用,它们测的其实是评测框架的缺陷,却被当成了关于模型的事实。没有人会回头去修正那些数字。
一家实验室愿意公开发表这种话,本身就少见,而且这话说得对。
你读过的每一个智能体基准分数,测量的都是一个三元组:模型、评测框架、配置。数字本身是真的,出问题的是归因——而人们读这些数字,恰恰全是为了归因。
这正是我在《日志打印的正是我想要的内容》一文中写过的那种失败:一个真实的信号,生成过程也无可挑剔,却被拿去支撑一个它并不支持的结论。13.3% 是关于某个系统的真实事实,却被当成了关于某个模型的事实。这是两个不同的对象,而在这里,两者的差距是 25 个百分点。
这也相当于把错误的尺子用到了大规模场景。基准测试跑了,产出了一个数字,数字也能复现。但这些都不能证明它测量的就是所有人以为在测的那个东西;恰恰因为它跑得干干净净,才没有一个人去核查。
令人不安的后续推论
如果一套通用评测框架就能让一个模型丢掉 25 分,那么凡是通过同一套固定评测框架跑出的跨模型对比,都存在一种具体的疑点。
束缚(harness)并非中立。它带有假设:关于推理是否持续,关于历史如何被修剪,关于工具调用的格式,关于转录文本有多少能够保留。这些假设对某些模型有利,对其他模型则不利。在所有模型中保持束缚不变看似是严谨的选择。实际上,这是在衡量每个模型对这一特定假设集合的适配度。
因此,当排行榜显示模型 A 在代理任务上击败模型 B 时,可接受的解读是 (A, harness) 这对组合击败了 (B, harness)。有时这就是你想知道的,因为你打算使用该 harness。通常情况下,它被呈现为其他意义。
我认为这并不会让基准测试失效。我认为这使得 harness 成为必须披露的内容,就像基准套件已经披露温度和提示一样。
这说明了对三种 harness 的影响
在这个系列中,我一直在将 Codex 和 Pi 与 Claude Code 进行对比,而这一结果重新定义了他们最主要的分歧点。
保留的推理是一个状态所有权问题。在两轮之间,有人必须保存模型的中间结果。如果 harness 丢弃它,模型会重新生成它;如果 harness 保留它,那么 harness 就拥有了一部分需要进行版本控制、序列化、压缩和恢复的状态。
这并不是一个小的承诺,这也是为什么廉价的 harness 会选择丢弃它。根据此证据,这相当于 25 分。
压缩与截断的形式相同。截断虽然免费,但以最坏的方式造成信息损失,因为它删除了最早的上下文——而任务通常正是在那里被定义的。压缩需要额外的模型调用和一种摘要策略,但它能够保留任务定义。
这两种设置都是 harness 为避免让模型重复工作而付出真实工程成本的案例。这正是《The 90% Problem》的核心论点,也解释了为什么三种 harness 在五步循环上都会花费 794 到 1,729 行代码。这些行正是用来防止重复工作的。
这也正好落在《agent memory 作为缓存一致性问题》上。被丢弃的推理相当于命中率为零的缓存。模型在每次访问时都会正确地重新计算,并为此付出代价。一切并未出错,只是永远处于冷启动状态。
你在自己的技术栈中应检查的内容
有两个问题,且它们的答案你今天就能找到。
您的框架在轮次之间是否保留模型的推理过程,还是直接丢弃?大多数框架会丢弃,只有少数会明确说明,而且这通常只涉及一个字段。如果您正在运行一个多轮任务,模型需要随时间积累理解,那么这应该是您首先需要检查的地方。
您的上下文管理是采用压缩还是截断?如果答案是当接近上限时您会裁掉最旧的消息,那么您正在使用得分为 13.3% 的配置。
这两个问题都与您的模型无关。这就是关键所在。在您的代理系统中,最昂贵的变量是没有人进行基准测试的那个,而它正躺在您的配置文件里。
数据和引用来源于 OpenAI 自身的撰文,《启用两项设置使我们在 ARC-AGI-3 基准上的得分翻三倍》:在公开任务集上,GPT-5.6 Sol 在官方 harness 下得到 13.3%,而在保留推理并采用压缩的情况下得到 38.3%,输出 token 减少了 6 倍,滚动截断点为 175,000 字符,估算的人工测试者平均得分为 48%,得分以 Relative Human Action Efficiency 衡量。其中 72% 的数字是我根据与该人类基准的差距自行计算得出的,并非 OpenAI 的声明。
