GPT-5.6 Sol 在 ARC-AGI-3 上只有 7.8 分,问题出在测试架而不是模型

打开 ARC-AGI-3 排行榜的时候,我们内部的第一反应是困惑。GPT-5.6 Sol 已经解开了数学中长期悬而未决的圈二覆盖猜想,能在纯视觉条件下通关《宝可梦 火红》,但它在一堆 2D 拼图游戏上只拿了 7.8%。GPT-5.5 更离谱,0.4%,几乎等于没在玩。

一个能打宝可梦的模型,怎么会被简单的 2D 谜题卡住?

答案和模型本身没关系。问题藏在基准测试的运行方式里——两个被关掉的 API 设置:保留推理和上下文压缩。把这两个开关打开,GPT-5.6 Sol 在公开任务集上的分数从 13.3% 涨到了 38.3%,输出 token 数反而降到原来的六分之一。

这个发现本身不复杂,但它暴露了一个经常被忽略的事实:基准测试分数测的不只是模型,还测了测试架怎么写、API 参数怎么配、提示词怎么传。同样的模型,换一套测试条件,分数能差三倍。

ARC-AGI-3 到底在测什么?

ARC-AGI-3 让 AI 代理探索一批陌生的 2D 游戏,不给任何操作说明,让模型自己推断规则并推进关卡。目前在官网上可以试玩 25 个演示关卡。

这个基准测试刻意用了最通用的测试架。没有工具调用,没有特殊能力接入。ARC 的出发点可以理解:测试架越简单,模型的短板暴露得越充分,不同模型之间的横向对比也越”公平”。商业产品不会这么做。产品团队会给每个模型单独调优测试架,把模型的长处尽量发挥出来。

话说回来,GPT-5.6 Sol 在其他游戏上的表现并不差。纯视觉测试架打通《宝可梦 火红》,Codex 计算机操控模式打过《杀戮尖塔》,还推进了《Baba Is You》的早期阶段。怎么偏偏在 ARC-AGI-3 上翻了车?

摘要:ARC-AGI-3 用极简测试架测 AI 的在线学习和推理能力,但这种”公平”设计可能恰好让模型脱离了它实际被训练和部署时的运行条件。

模型为什么看起来”变笨了”?

我们顺着 ARC 团队对 GPT-5.5 失败原因的分析,去翻看了 GPT-5.6 Sol 的尝试记录。现象和 ARC 描述的完全吻合:模型在每一步动作前犹豫很久,推进极慢,看起来确实不太聪明。

但再往下追一层,问题就不在模型身上了。

第一个发现:每次动作执行完,所有私有推理内容都被丢弃了。

我们的模型在输出回复或工具调用之前,会先在内部生成一段私有推理消息。这段推理是模型”想清楚”的过程——它可能在里面分析当前局面、回忆之前的尝试、规划下一步。在 ChatGPT 和 Codex 的生产环境中,这些推理消息会作为对话历史的一部分保留下来。但 ARC-AGI-3 的官方测试架在每次动作之后就把它删了。

后果是什么?GPT-5.6 Sol 每一步都等于从零开始理解游戏。它还能看到之前做了哪些动作,附带几句简短备注,但导致那些动作的思考过程、策略判断、关键发现,全部没了。就好比一个人做数学题,每算完一步就把草稿纸撕掉,只保留最终答案,然后下一步接着算——他能算对才怪。

第二个发现:测试架用了滚动截断来管理上下文长度。

当对话上下文超过 175,000 个字符时,最早的消息会被直接扔掉。这意味着模型不仅记不住自己想过什么,连自己做过什么也会随着游戏推进逐渐丢失。早期探索过的区域、已经排除的错误路径,全都被静默地删掉了。

这两个机制叠加,模型在整个游戏过程中不可能积累任何有效的学习。它不是在”学习玩游戏”,而是在”反复重新认识同一个游戏”。

摘要:官方测试架丢弃推理消息加上滚动截断,让模型每一步都在失忆状态下重新摸索,无法在游戏过程中形成有效的经验积累。

保留推理之后发生了什么?

我们用 Responses API 重新实现了 ARC-AGI-3 的测试架。Responses API 有一个设计很关键:传入上一次响应的 ID,推理消息就会自动在工具调用和轮次之间保留。不需要手动提取、拼接、回填,API 层面就处理好了。

打开保留推理之后,两个变化立刻出现了。

第一个变化:GPT-5.6 Sol 在每个动作前的思考时间明显变短了。原因很直白——它不需要每一步都重新解读游戏状态。之前想通的东西还在,直接接着往下走就行。

第二个变化更值得说:模型开始展现出真正的跨步骤学习能力。它能记住之前试过什么、哪些思路有效、哪些是死胡同,然后在此基础上调整策略。这不是什么高级的元认知能力,就是最朴素的”记住了自己做过的事”。

模型在长任务中的推理、工具调用、对话历史和上下文压缩如何协同工作

我一开始以为保留推理主要影响的是效率,也就是少想几轮、省点 token。实际跑下来发现,它对最终正确率的影响远大于对 token 消耗的影响。模型能记住自己的推理过程,意味着它可以在前期试错中积累对游戏规则的真实理解,而不是每个回合都在原地打转。这种积累在长关卡里会被放大——越往后,有记忆的模型和无记忆的模型差距越大。

摘要:保留推理让模型不用每步从零开始,思考时间缩短的同时,跨步骤的策略连贯性和学习效果显著提升。

上下文压缩比滚动截断好在哪?

第二个改动是把滚动截断替换成压缩。

滚动截断的做法简单粗暴:上下文超长了,砍掉最老的消息。这有两个问题。模型丢失了早期观察和动作记录,而这些信息在游戏后期可能仍然关键——比如你第一关发现的某个规则,到第五关还在用。另一个问题是,在大部分任务时间里,模型都在用接近满的上下文窗口运行。上下文窗口越满,模型的注意力分配越分散,性能会有轻微下降。

压缩的做法不一样。当上下文过长时,Responses API 会对历史对话做摘要压缩,而不是直接删除。模型之前学到的关于游戏规则的理解、已经验证过的策略,不会丢掉,而是以更紧凑的形式保留在上下文里。

在 ARC-AGI-3 上开启压缩后,GPT-5.6 Sol 在更长的游戏过程中能更好地保持对每个游戏的理解,用更少的输出 token 拿到了更高的分数。

有个技术细节提一下。ARC-AGI-3 官方测试架用的是 175,000 字符的截断阈值,我们的实现用的是 175,000 token。两者实际差别很小,因为游戏中的动作网格文本在我们的分词器里基本是 1:1 的对应关系,绝大部分文本都是这种网格格式。

摘要:压缩用摘要替代直接删除,让模型在长任务中保留早期学习成果,同时避免了满窗口运行带来的注意力分散。

两个开关翻了多少分?

来看 GPT-5.6 Sol 在 ARC-AGI-3 公开任务集上的完整数据。评分用的是 RHAE(相对人类行动效率),本质上是拿模型表现和人类基线做对比。根据官方游戏日志估算,人类测试者的平均分大约是 48%。模型在整个过程中不知道自己怎么被评分的,也看不到自己的分数,每次动作只能拿到当前帧的文本表示和所在关卡编号。

推理强度 官方测试架得分 官方每局输出 token 新测试架得分 新每局输出 token
Low 0.9% 58,809 3.7% 84,316
Medium 1.5% 207,188 7.3% 141,939
High 5.2% 728,188 13.4% 243,258
Xhigh 7.2% 1,285,393 25.7% 428,540
Max 13.3% 2,900,997 38.3% 485,485

Max 强度下,分数从 13.3% 到 38.3%,接近三倍。每局输出 token 从约 290 万降到约 48.5 万,六分之一的消耗。分数涨了三倍,成本降了六倍,这组数字放在一起挺能说明问题的。

但我个人觉得更值得注意的不是 Max 那一行,而是中间梯度的变化。Xhigh 这一级,官方测试架 7.2%,新测试架 25.7%,差了三倍半。High 这一级,5.2% 到 13.4%,也是接近三倍。这说明保留推理和压缩不是只在极端参数下才起作用的”边际优化”,它们在中高推理强度区间就能产生数量级的差异。

反过来想这件事也很有意思。如果有人用官方测试架跑了一个”中等推理强度”的测试,拿到 1.5% 的分数,然后写一篇博客说”GPT-5.6 Sol 在 ARC-AGI-3 上基本不能用”——这个结论在技术上是错的。模型没变,变的是测试条件。但读者不会去看测试架的源码,他们只会记住那个数字。

摘要:Max 强度下分数翻近三倍、token 降为六分之一;中高强度区间差异更为悬殊,说明测试架设置对结果的影响是数量级而非边际的。

一个具体关卡的直观对比

有一个公开关卡可以很清楚地看到差异。在这套关卡中,排行榜上没有任何前沿模型能通过第一关之后的任何一关。但用带保留推理和压缩的测试架,GPT-5.6 Sol 在 Max 强度下六关全部通过。

视频里左右两边同时跑同样的模型和同样的推理强度。右边的推进速度明显更快,模型在每个动作前的停顿更短,整体路径连贯,没有多余动作。左边的模型则反复在已经探索过的区域打转,时不时回到之前走过的路——因为它不记得自己试过什么。

还有一个上下文窗口使用方式的可视化对比。两个中间列分别展示了 175K 上下文窗口在两种测试架下是怎么被填满和使用的。在新测试架下,窗口被更高效地利用。模型不需要每步都塞入大量重复的”重新理解”推理,前期学到的内容被压缩保留,留给新思考的空间更多。官方测试架下,大量窗口空间被每步重复的”从零推理”占满,真正有用的增量信息反而被挤掉了。

摘要:在实际关卡中,保留推理和压缩让模型不再反复探索已知区域,推进速度和策略连贯性都有质的区别,六关全通对比一关都过不了。

如果你在用 API 跑评测,应该怎么做?

这个案例给所有通过 API 调模型跑基准测试的人提了个醒:你测的不只是模型,还有你的测试架。而且测试架的影响可能比你想象的大得多。

如果你是 API 开发者,想拿到模型的真实性能上限,建议直接用和 ChatGPT、Codex 生产环境一致的设置:

  • 通过 Responses API 传入上一次响应的 ID,让推理消息在工具调用和轮次之间自动保留
  • 开启压缩,替代任何形式的滚动截断或手动删减历史消息

这两条不是什么需要深入调优的高级技巧,就是让测试环境和产品环境保持一致。我们的模型是按这个方式训练的,也是按这个方式部署的。用一套完全不同的记忆管理策略去测它,等于在测一个它从来没被设计来适应的场景。得分低不奇怪,得分高才奇怪。

如果你在做模型之间的横向对比,建议只参考那些明确使用了上述设置的评测结果。否则你比的可能是测试架对各个模型适配程度的差异,而不是模型能力本身的差异。

说句实在话,这不是我们第一次在公开基准测试上遇到”分数异常低,查下来是测试架的问题”这种情况了。每次都是同一个模式:通用测试架为了追求”公平”去掉了模型特有的能力支持,然后模型在那个受限环境下的表现被当成了它的真实水平。ARC 在这方面其实做了一件好事——他们的分析促使我们认真去查,而不是简单接受那个低分。

摘要:让测试架的记忆管理与模型的训练和部署方式保持一致,否则评测结果会系统性低估模型能力,模型对比也会失真。

实用摘要 / 操作清单

  • ARC-AGI-3 官方测试架在每步动作后丢弃模型的私有推理消息
  • 官方测试架使用 175,000 字符滚动截断,超限后直接删除最早消息
  • 用 Responses API 重建测试架,传入上一响应 ID 即可自动保留推理
  • 用压缩替代滚动截断,历史学习成果以摘要形式保留而非直接删除
  • GPT-5.6 Sol Max 强度:分数 13.3% → 38.3%,每局 token 2,900,997 → 485,485
  • 人类测试者 RHAE 基准约 48%,模型不知道评分规则也看不到分数
  • 做模型对比时,优先参考使用了保留推理和压缩的评测结果

一页速览

GPT-5.6 Sol 在 ARC-AGI-3 上初始得分只有 7.8%,原因不是模型能力不足,而是官方测试架在每步动作后丢弃推理消息并用滚动截断管理上下文,导致模型始终在失忆状态下运行。用 Responses API 重新实现测试架,开启保留推理和压缩后,公开任务集分数从 13.3% 升至 38.3%,输出 token 降为六分之一。基准测试分数反映的是模型加测试架的综合表现,测试架的记忆管理策略对最终结果的影响可能是数量级的。

FAQ

RHAE 评分和普通通过率有什么区别?
RHAE 对比的是模型和人类测试者的行动效率,不是简单的”过没过关”。人类平均约 48%,模型在最优设置下达到 38.3%。

保留推理具体怎么实现?
用 Responses API 时,把上一次响应的 response_id 传给下一次请求,推理消息会自动保留在对话历史中,不需要手动处理。

压缩和滚动截断的核心区别是什么?
滚动截断直接删除最老的消息,压缩则对历史做摘要保留。前者会丢失早期学习成果,后者不会。

为什么官方测试架要丢弃推理消息?
ARC 的设计意图是让测试架尽可能通用简单,方便不同模型之间做公平对比,但代价是偏离了模型实际部署时的运行方式。

低推理强度下差异也很大吗?
Low 强度下官方 0.9% 对新测试架 3.7%,绝对值差距不大。差异在 Xhigh 级别最悬殊,7.2% 对 25.7%。

GPT-5.5 在新测试架下的表现如何?
原文只给出了 GPT-5.5 在官方测试架下的 0.4% 数据,没有提供它在保留推理和压缩环境下的测试结果。

这个发现只适用于 OpenAI 的模型吗?
原文只涉及 GPT-5.6 Sol 和 GPT-5.5,未对其他模型做实验。但”测试架设置显著影响评测分数”这个结论本身具有通用性。

175,000 字符和 175,000 token 差多少?
在 ARC-AGI-3 场景下差别极小,因为上下文中绝大部分是动作网格文本,在 OpenAI 分词器中基本按 1:1 映射为 token。