同一个模型,换个 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,两种任务,两张成绩单
| 测试任务 | OpenCode | Codex 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