模型又在基准测试上通关了这次被讨论最多的不是参数规模而是它背后那个叫Harness的评测框架。看到“Opus 5通关ARC-AGI-3”这类的消息多数人的第一反应是问“分数多少”“是不是真的”。但真正值得拆开的是模型在什么条件下跑完整套测试提示词怎么写的、工具调用开到了什么程度、失败任务有没有重试、评分规则是严格匹配还是人工放水。这些问题全部属于Harness的范畴。如果只看热闹你可能会觉得这是一次模型能力的胜利。但做过评测工程的人会先问一句这个Harness是帮模型把正常水平发挥出来还是替模型垫了台阶从Opus 5、ARC-AGI-3到Harness这三个词串起来背后其实是同一个现象大模型的评测正在从“跑一个脚本出结果”变成一门需要认真对待、也会产生误导的工程。这篇文章不打算论证“哪个模型更强”而是想把评测这件事拆开。ARC-AGI系列到底在测什么Harness在其中起什么作用为什么说它正在变成捆住模型的绳子以及作为开发者怎么避免被评测成绩带偏。1. 一个通关消息最该先看的是评测框架1.1 为什么模型名字最容易骗人大部分人看到“Opus 5通关ARC-AGI-3”的第一感觉是“这个模型很厉害”。这个判断可以理解但不够严谨。同一套基准可以有很多种测法。最简单的测法是直接把题目图丢给模型让它硬想然后看输出。复杂一点的测法是给模型搭一个完整的工作环境提供示例、允许写代码、允许跑多次、中途给反馈、最后再汇总答案。这两种测法对同一个模型来说成绩可能差出几个档位。也就是说当你听到“模型通关了基准测试”时真正重要的不是模型叫什么名字而是它外挂了哪些工具、被给了多少额外机会。这个道理在传统机器学习里也成立只是很多人没有意识到。一个分类器在测试集上拿高分有可能是因为数据清洗时把重复样本漏掉了也有可能是因为测试集和训练集有重合。评测框架就是一个放大镜它能让模型的真实能力显现也能捏造出一个虚假的“强模型”。1.2 三条判断标准比分数本身更重要我一般会建议身边刚接触大模型评测的朋友先别急着背分数先问三个问题。第一测试是不是封闭式的。模型是否见过测试集数据是否从同一个分布里采样测试过程中有没有人工干预。如果测试集本身出现在训练数据里分数就没有多少参考价值。第二测试环境是不是最小干预的。模型是裸推理还是给了代码执行、网络搜索、长思考提示词、多轮自我反思这些外部能力会放大模型表现但也意味着你测的并不是模型本身。第三评分是自动匹配还是人工判断。ARC这类任务通常有标准答案可以自动比对网格。但有些评测会用大模型当裁判这就会引入裁判偏好。一旦裁判误判分数就不稳定。这三个问题其实都落在同一个词上Harness。Harness就是那个把模型架起来跑测试的外部框架。它负责所有“不是模型本身、但会影响模型输出”的部分。1.3 这次话题里为什么Harness成了主角回到标题本身“Harness正在变成捆住模型的绳子”。我理解这个判断的背景是最近围绕模型的评测和Agent实践大家越来越依赖Harness。DeepSeek有围绕它的Harness实践Codex也有自己的Harness各种开源项目里也频繁出现Harness这个关键词。它已经从测试框架延伸到日常开发工具变成了模型使用方式的一部分。问题也随之而来。同一个模型换一个Harness结果可能完全不同。模型本身的能力没变变的是外部环境。于是模型评测成绩越来越不是“模型能力的度量”而是在度量“模型加Harness系统”的整体性能。这不算坏事真实产品里本来就是模型加工具加流程的组合。但如果把这种成绩直接解读为“模型智能水平”就是被评测带偏了。2. ARC-AGI到底在测什么以及为什么版本越来越难2.1 一套反记忆的推理任务ARC-AGI的全称是Abstraction and Reasoning Corpus也就是“抽象与推理测试集”。它和传统基准测试最大的区别是故意设计成“不能靠背”的形态。每个任务都是一个小型网格通常几格到几十格格子里有不同颜色的色块。输入是一组示例输出是另一组示例模型要根据示例推导出变换规则然后预测新输入对应的输出。听起来很简单但实际非常难。因为每个任务只有少量示例模型不能靠大量统计规律去拟合。它必须“看”出规则可能是对称变换、形状补全、颜色替换、位置移动也可能是这些规则的组合。人类做这种题也要花点时间机器更容易被小样本干扰。所以ARC-AGI虽然不是严格意义的通用智能测试却一直被当作“抽象推理能力”的重要参考指标。它更接近智力测试而不是知识问答。2.2 从第一版到第三版难度在往哪里加ARC-AGI-1在2019年前后发布它率先提出了“从少量示例中学习规则”的评测思路。社区后来跑了很多模型成绩普遍不理想说明它不是靠堆参数就能过的。ARC-AGI-2是之后推出的升级版本。从公开讨论来看它保留了小网格推理的形式但在任务设计上加入更多干扰项也把不少人类解题过程变长。换句话说以前一眼能看出来的规则现在需要更多推理步骤或者存在容易误导的细节。ARC-AGI-3是这个系列的最新迭代也就是标题里提到的版本。它延续了前两代的路线但根据社区讨论难度和防记忆设计都在继续加码。这里我没有官方数据也不确定具体题量和评分规则只能说如果前两代已经很难第三代大概率会更难。这个“越来越难”的方向是合理的因为基准只有不被刷穿才有持续存在的价值。一旦模型在某套测试上逼近满分测试就该升级了。2.3 为什么大模型在ARC上容易翻车大模型在对话、写作、代码生成上表现很强但面对ARC任务时经常翻车。原因有几个。第一ARC任务需要结构化推理。模型需要先理解网格里每个色块的位置关系再抽象出变换规则。这比生成一段自然语言更依赖结构化的推理过程。第二任务样本太少。语言模型靠大量文本训练擅长从上下文中找统计关联。但ARC每个任务只有几个示例统计线索非常稀疏。第三结果判定严格。ARC的输出是网格错一个色块就算错。不像文本生成可以接受部分正确。这种二值判定对大模型很残酷。这些原因决定了ARC这类任务不能单靠模型的“直觉”完成需要在推理过程中反复尝试、检查、修正。而这个过程恰好给了Harness发挥空间。3. Harness的双面身份辅助工具和隐形束缚3.1 Harness到底做了什么简单说Harness是模型运行时的一切外部配套。往细了看它包含这些组件提示词管理和任务说明输入数据的预处理和格式转换模型调用方式比如温度、top_p、最大token工具调用配置比如代码执行环境、外部接口输出解析和后处理失败重试机制评分逻辑日志和监控这些组件单独拿出来都不起眼但它们组合起来会对最终分数产生巨大影响。举例来说某项ARC任务要求“把某种颜色的格子全部替换成另一种颜色”。如果Harness把任务说明写得含糊模型可能理解成其他规则。如果Harness允许模型写Python代码去试探规则模型能在本地快速验证很多假设最终准确率会高很多。同一个模型、同一个权重文件只是外部环境不同结果就可能天差地别。3.2 Harness的辅助面把模型的真实能力引出来合理的Harness设计确实能帮助模型发挥出真实水平。比如给模型一个思考模板“请先列出可能的规则再选择一个最符合所有示例的规则最后给出输出网格。”这能让模型不急于给答案减少低级错误。再比如允许模型在给定环境里执行Python代码用代码枚举候选规则、验证规则是否正确。这种“自主探索”能力在很多推理型任务里能显著提高准确率。还有多轮反馈。模型先给一个预测Harness检查后发现不对把错误信息反馈给模型让模型修正。这相当于给模型多次尝试机会。对复杂推理任务来说这更接近人类解题过程中的试错。这些做法没有任何问题它们展示的是模型在合理辅助下的能力上限。问题只在于当你把这个成绩绑定到“模型本身很强”的叙事上时要提前说明成绩包含Harness的贡献。3.3 Harness的束缚面绳子是怎么勒紧的但Harness也有另一面。第一提示模板可能成为束缚。很多Harness为了控制输出格式把提示词写得很死要求模型必须按“答案:xxx”的形式输出。这种强约束对文本简单的任务有效但对复杂推理任务可能是灾难。模型需要更多token来表达思考过程被截断在固定模板里能力自然大打折扣。第二超时设置可能太短。ARC这类任务需要模型反复推演如果Harness对单次推理设置了很短的超时模型没想完就被强制返回分数就会偏低。第三工具调用可能被限制。有的评测不提供代码执行环境模型只能用语言推理。这本身就是一种环境限制但在宣传成绩时容易被忽略。第四评分只看最终答案。有些模型推理过程是对的只是在最后输出时格式不规范被解析器判错。这种错误不能简单归因于“模型不会做”。第五重试逻辑也可能误导。一种Harness允许模型失败后自动重试一次另一种不允许。这样评测出的分数差异实际上来自调用策略而不是模型能力。更麻烦的是如果重试条件写得太宽松模型可能每次都随机输出一个答案遇到对的就算通过这会让成绩虚高。当一个模型在某个Harness里表现很好但在另一个Harness里明显变弱时我们就可以说Harness部分地“捆住”了模型或者反向地替模型兜了底。它究竟是工具还是绳子取决于设计者想要什么。3.4 为什么“Harness工程”越来越热从最近社区的热词来看围绕DeepSeek、Codex等模型的Harness实践非常活跃。这说明大家已经意识到模型能力不是孤立存在的模型与外部框架的配合方式甚至比单个模型的选择更重要。这个趋势在工程上是对的。真实产品里没有模型是裸奔的都要通过API、工具、流程来使用。把Harness做得好产品确实能取得超过单模型的效果。但反过来说如果评测圈把模型成绩过度归功于模型本身忽略Harness的贡献就会形成误导。这也是“Harness正在变成捆住模型的绳子”这句话的真正含义工具本来是提高上限的现在却变成了定义成绩的隐藏变量。4. 从“能不能跑”到“跑得对不对”评测工程化的实战细节前面说了很多概念这一节落到实操。不管你是想复现别人的评测还是想搭建自己的评测流程下面的细节都会踩到。4.1 环境准备先别急着跑以ARC-AGI这类任务为例环境准备包括四块。第一是硬件。推理小模型还好跑大模型需要至少一张足够显存的显卡。显存不够批量处理时频繁换入换出速度会非常慢还容易OOM。内存也要留足数据集和模型权重文件通常都不小。磁盘空间要看模型大小和日志量建议多留几十GB给临时文件。第二是依赖版本。模型推理框架和Python版本、CUDA版本、驱动版本之间的匹配非常敏感。同一个模型框架版本不同生成结果都可能不一样。评测前最好用需求文件或者容器镜像把依赖版本固定住。第三是数据准备。ARC任务通常包含训练示例和测试输入输入输出都是网格数组。下载后要检查文件完整性不要把测试样例当训练样例。如果格式不对后面解析那一关就会出问题。第四是模型权重和评测代码的路径。路径写错是最常见的低级错误但也是最容易浪费半天时间的问题。我一般会把模型权重、数据集、日志、输出分别放在独立目录用配置项指定路径而不是硬编码。4.2 先跑通单条任务再谈批量很多人一上来就写一个循环把几百条任务全部跑完然后看平均分。这个做法在刚开始时风险很大。我更建议先筛出三五条代表性任务手动跑一遍确认三个环节都正常模型能正常加载提示词能被模型接受模型输出能被解析器正确转换成网格这一步很容易暴露问题。最常见的是模型输出里混了解释文字比如“我觉得规则是……所以答案是……”但Harness的解析器只认方括号数组于是一整条题被判错。解决方法是把提示词写清楚要求模型只输出JSON数组或者在解析时做兼容处理。跑通单条任务之后再上批量循环。4.3 批量运行时的并发、重试和命名批量任务最需要关心的不是“能不能跑”而是“跑得稳不稳”。并发数建议从1开始逐步增加。不要一上来就开最大并发因为并发越高越容易出现资源竞争、超时和奇怪的互相影响。同一个推理框架并发为4时能正常跑并发为16时可能频繁报错。重试逻辑要记录原因。失败重试本身是好事但要在日志里区分“超时重试”“格式错误重试”“网络错误重试”。这样才能判断分数是模型的真实能力还是运气成分。如果某条题连续重试三次才成功它的单次得分和一次就成功的题目含义是不同的。输出文件命名也要规范。至少包含任务ID、模型版本号、Harness版本号、运行时间、随机种子。这样后续排查时任何一个结果都能追溯到当时的完整配置。4.4 日志是复现的灵魂评测日志不是随便存一下而是要能回答“这个结果怎么来的”。一条有效日志应该包含输入任务的原始内容送入模型的提示词模型原始输出解析后的结构化结果判分结果错误原因重试次数耗时和资源占用有了这些任何异常成绩都能定位到具体环节。某个分数特别低是提示词写错了还是模型推理本身出了问题一查日志就知道。我自己踩过的最典型的坑是某天批量任务的分数突然下降查了很久最后发现是评测脚本里一个随机种子没有固定导致每个任务的输出排序不同格式解析大量失败。这种问题不看详细日志根本定位不到。4.5 评分标准别只看一个数字评分是评测的最后一道关卡也是最容易被忽略的环节。对于网格型任务标准做法是逐格比对相同算对不同算错。这个逻辑简单但要注意边界情况。比如模型输出了合法的网格但尺寸和答案不一样算不算错模型输出格式保持正确但颜色映射颠倒算不算错这些规则要在评分脚本里定清楚最好在小规模样例上先验证一下评分脚本本身。如果用的是大模型当裁判评分会更复杂。大模型裁判可能有偏好比如更倾向某个模型的表述风格。同一个答案换个提示词让裁判评分结论可能完全相反。所以裁判型评测最好有标准答案作为参照错误率超过阈值时要人工复核。最后如果条件允许建议同一套任务跑三遍取多次结果的平均值或中位数。模型推理有随机性单次分数可能偏高或偏低。多次运行能过滤掉偶然波动。4.6 常见问题和排查顺序评测结果异常时不要一上来就怀疑模型能力先按这条链路排查。先看解析。模型原始输出是不是被正确解析成结构化结果。最典型的问题就是输出里带了解释文字导致解析失败。解析环节是最高概率出问题的位置。再看输入。任务文件有没有损坏索引有没有错位训练示例和测试输入是不是正确配对。然后看环境。显存、内存、CPU占用是否异常推理框架版本是否匹配结果是否依赖随机种子。再看参数。温度、top_p、最大token、超时时间、重试次数这些参数都会影响输出质量。温度设太高输出随机性变大最大token设太小长推理被截断。最后再评价模型。如果前面的环节都没有问题分数依然低那才说明在这个任务分布上模型或者当前Harness方案确实不擅长。这套排查顺序中心思想是先排除外部变量再归因模型。否则很容易被误导。5. 为什么“通关”不等于“具备通用智能”5.1 基准分数反映的是特定条件下的表现ARC-AGI设计得很好但它毕竟是一个封闭任务集。模型在它上面的成绩只能说明模型在当前Harness配置下能较好完成这类抽象推理任务。这距离“通用智能”还很远。通用智能意味着模型能把能力泛化到没见过的任务、环境、语言和交互方式中。ARC类基准测的是其中一个维度不是全部。即使是模型在ARC-AGI-3上拿了高分也依然要回答几个问题它是不是见过类似题目它在开放环境里能不能稳定解题它的答案是否可解释它面对真实场景中的长尾问题时能不能转换规则这些问题恰恰是单一基准测试无法回答的。5.2 数据集污染和过拟合风险大模型训练语料规模很大很难完全排除测试集出现在训练数据中的可能。如果测试集被无意或有意收集进预训练语料模型完全可能通过记忆通道解题而不是通过推理。这不是危言耸听。在很多基准上都已经出现过训练集和测试集重叠导致的分数虚高。ARC类基准一直强调防记忆设计但每一代新版本上线后仍然需要时间观察是否被污染。所以看到“通关”消息时最好记录一下模型参数、Harness版本、测试集版本和运行时间保证后续可以复现。不能复现的成绩参考价值很低。5.3 模型可能学会的是“在这个Harness里得分”一个更隐蔽的问题是模型在Harness的指导下可能学会了“在特定任务格式下得分”而不是“学会通用规则”。比如Harness给模型提供了Python环境模型每次都会写代码穷举规则。只要任务集规则是可穷举的这种方式就能不断得分。但这和人类面对一个新任务时的抽象能力是两回事。也就是说Harness放大的是系统能力而系统能力由模型、工具、提示词、流程共同组成。把系统能力的得分直接等同于模型能力本质上是一种概念混淆。我并不是说Harness辅助下的成绩没有价值。真实产品里模型本来就应该和工具配合。只是当你说“模型通关ARC-AGI-3”时这句话应该更准确地表述为“模型在某个评测框架下借助工具和流程通关了ARC-AGI-3”。5.4 真实任务比基准复杂得多基准任务再复杂也是经过清洗和标注的。真实世界的任务往往更混乱。举个例子。ARC任务里每个网格都是规则明确的色块组合而真实数据里噪声很多。模型在ARC上的规则推断能力能否迁移到有大量干扰、信息不完整、目标模糊的真实场景很难直接等价。所以如果你准备根据某个模型在ARC-AGI-3上的成绩决定是否引入它我建议再做三个验证拿自己业务里的典型推理任务做成一个小测试集。在同一个Harness下对比多个模型的成绩。观察失败样例而不是只看平均分。只有在你自己的数据上验证过成绩才对你真正有用。6. 如何理性看待模型评测给三类人的实际建议6.1 普通用户先看Harness再看成绩对普通用户来说最需要改变的习惯是“唯分数论”。看到“通关”“达到人类水平”这类消息时先去查测评报告里的评测配置。模型是裸跑还是给了代码环境、思考模板、多次尝试机会评测集和训练集有没有隔离评分是人工还是自动这些信息有时不会出现在宣传里但大概率会在官方文档或技术报告里。找到“评测环境”或者“实验设置”那一节仔细看一眼。如果实在找不到就用一个通用原则任何评测成绩都应该被当作“在特定条件下系统能力的相对快照”而不是“模型智能的绝对证明”。6.2 开发者搭一套自己的评测集对做模型选型或者Agent开发的人我更建议不要完全依赖第三方榜单。你可以从自己的业务场景里抽20到50个有代表性的问题覆盖不同类型、不同难度然后把它们做成一个固定测试集。每次模型更新、Harness调整、提示词改动都在这个测试集上验证。自己的评测集未必比官方基准更权威但它直接反映你关心的任务分布。还有一个好处小规模测试集可以支持频繁运行方便做回归对比。需要注意的是自己的测试集也要防污染。不要把测试样例放进模型的微调数据里否则后面所有测试都失去意义。6.3 研究人员重新审视Harness的公平性对评测方法的研究者来说Harness本身就是一个值得研究的对象。同一个模型不同Harness下分数差异有多大哪些组件对分数的贡献最大提示词模板、工具权限、超时设置、重试策略分别引入多少偏差这些问题目前还没有统一结论。如果还想更进一步可以考虑“