Poketto

同一个模型,换个 Agent 框架,成绩为什么能翻倍?

阅读 1目录#AI#Agent#论文#评测#运行框架
目录

同一个机器人头部模块悬在两套不同机械工作台之间的黏土微缩场景

AI 概念插画。

MiniMax M3 做同一组代码修复题,接在 Codex CLI 上平均成功率是 30.56%,换成 OpenCode 是 62.78%。模型没换,成绩却翻了一倍。

换一组长上下文、多工具规划题,顺序又倒过来了:Codex CLI 是 87%,OpenCode 是 21%。

这正是上海人工智能实验室 2026 年 10 月 23 日发布的预印本《When Agents Fail: Model or Harness—Who's to Blame?》想拆开的问题:Agent 做不好,到底该换模型,还是该检查模型身边那套运行框架?

模型负责想,框架决定它怎么动手

论文里的 harness,可以理解为 Agent 的运行框架。它负责把历史和工具结果放进上下文、暴露工具接口、执行模型发出的调用、处理错误和重试,以及决定何时结束、怎样交付文件。

同一个模型,接到不同框架后,看到的信息、调用工具的方式和失败后的恢复路径都可能不同。只报模型名字,很难解释整个 Agent 为什么成功或失败。

研究把 OpenCode、Codex CLI、Pi CLI、DeepAgents 与四个核心模型交叉组合,在六套测试中运行任务,覆盖修代码、终端操作、业务接口、长任务和文件交付。每题重复四次;加上固定原生组合和压力测试,共记录 52,168 条运行轨迹。框架保留各自原生提示和执行流程,任务、工具权限及资源限制尽量匹配。

同一个 MiniMax,两种任务,两张成绩单

测试任务OpenCodeCodex CLI
SWE-bench-45:修复45个较难的真实代码问题62.78%30.56%
LOCA-Bench:长上下文下操作多种工具,达到指定最终状态21.00%87.00%

这里都是四次运行的平均成功率,而不是四次挑最好的一次。SWE-bench-45 选的是人工预计至少一小时才能解决的问题;LOCA-Bench 使用 256K 上下文设置。

所以,给一个框架贴上“最强”的标签不够用。至少要补上:搭配哪个模型,准备完成哪类任务。

正常结束,也可能什么都没做好

作者还单独统计了 VCR,即正常结束并交出可评分结果的比例。它回答的是“这次运行是否完整交付”,任务成绩则回答“交付的东西做对了多少”。

在模拟多日办公流程的 ClawMark 中,Kimi K2.7 搭配 Codex CLI 的 VCR 是 100%,任务平均分却只有 11.96/100。换成 OpenCode,VCR 降到 88%,任务平均分反而升到 70.36/100。

一个很顺利地停下来的 Agent,可能并没有完成工作。排障时,超时、调用失败、没有提交文件,与“文件交出来了但内容不对”,需要分开看。

日志里还能看到更细的断点:部分响应表达了行动意图,却没有生成实际可执行的调用。模型打算做什么,与框架最终执行了什么,是两件需要分别记录的事。

选 Agent,应该测“组合”

这篇研究给出的实用办法,是固定一批自己的任务,分别替换模型和框架,同时记录三个结果:任务做对多少、运行是否正常交付、包括失败在内总共消耗多少 token。

OpenCode 在论文的跨模型综合指标上领先,但上述单项结果说明,具体工作负载仍会改变选择。论文比较的是当时整套配置,包含提示、工具格式、上下文管理和恢复策略;要定位究竟是哪一个设计带来差异,还需要进一步拆分实验。

下次一个 Agent 表现糟糕,除了问“是不是模型不够聪明”,也值得检查:它拿到了什么信息,工具调用有没有真正执行,失败以后有没有机会恢复,以及最后是否真的把成果交到了用户手里。

论文:When Agents Fail: Model or Harness—Who's to Blame? · 全文与附录
作者:Shao Zhang 等,上海人工智能实验室 · 提交日期:2026-10-23

关注这个空间,它的新文章会出现在你的关注动态里。