Research Briefs

July 23, 2026

View in English
한국어로 보기

深入解析13,000次Agent运行:AI Agent为何在OfficeQA上成败

我们从 OfficeQA Public Challenge 中提取了 13,483 条完整的 agent 运行轨迹,以探究究竟是什么决定了一次运行能否获得正确答案。

Deep Halder
Naman Vats
深入解析13,000次Agent运行:AI Agent为何在OfficeQA上成败

Share Article:

OfficeQA 公共挑战赛产生了超过 73,000 次 agent 运行,涵盖 782 份有效提交。我们从具有代表性的 20% 样本中提取了完整的逐步轨迹——涵盖 156 份提交、13,483 次独立运行,涉及全部四个框架:Goose、OpenAI 的 Codex、OpenHands 和 OpenCode——以探究究竟是什么决定了一次运行能否获得正确答案。

TL;DR(摘要)

Agent 的成功取决于它完成任务的效率以及任务本身的类型:

  • 任务能否被解决主要取决于任务本身,而非 agent。 四个框架在哪些问题简单、哪些问题困难上的一致率约为 90%。
  • 当 agent 走向错误答案时,它需要多花 50% 的步骤才能到达终点,同时消耗更多的 token 和资金。
  • 过程中的错误并不能预测失败。 成功和失败的运行在遇到错误的频率上几乎相同。
  • 工具多样性有帮助,但效果没有你想象的那么大。

我们分析了什么

在 OfficeQA 中,每个 agent 都需要回答 94 个关于 697 份美国财政部公告文档集的困难数值问题(例如"1974 年 6 月的未偿还公共债务总额是多少?")——完全离线、无互联网访问,所有条件在服务端统一执行,且使用相同的模型。参赛者在四个开源框架之一上竞争:Goose、Codex、OpenHands 和 OpenCode。

在这项研究中,我们抽样了 156 份提交(占评分总体的 20%),在四个框架以及高、中、低分团队之间保持平衡,并提取了每次运行的完整轨迹,以了解 agent 调用了哪些工具、读取了什么内容、计算了什么,以及最终是否得出了正确答案。总共 13,483 个完整的运行记录。

发现 1:难度在于任务本身,而非框架

对于 94 个问题中的每一个,我们测量了 agent 答对的频率,以及不同框架是否在哪些问题更难上达成一致。

问题呈现出清晰的分层:

  • 36% 的问题通常能被解决,
  • 36% 的问题非常困难,
  • 26% 的问题存在真正的争议,还有几个问题对所有人来说几乎不可能完成。

94 个 OfficeQA 问题的难度分布。

在各框架之间,每个任务的通过/失败一致性在 88%–93% 之间。也就是说,agent 们确实达成了一致,而且是压倒性地一致。

各框架两两之间在任务通过/失败上的一致率均在 88%–93% 之间。

通俗来说,如果一个问题困难,它对所有人都是困难的。一个令人困惑的表格或一个棘手的单位转换是问题本身的属性,而不是你选择哪个框架的问题。只有约 26% 存在争议的问题才是 agent 策略决定结果的地方。

我们接下来测试的假设是:各框架是否存在差异,是否有某个框架能独特地解决其他框架无法解决的任务?

我们从三个维度进行评估:

  1. 速度: 在典型运行中,各框架表现相近(中位数约 4 分钟),但尾部差异显著。Codex 是最慢的,第 95 百分位运行时间约为 36 分钟(长尾超过一小时),而 OpenHands 和 OpenCode 约为 15–17 分钟。Goose 的轨迹不记录每步时间戳,因此无法通过此标准计时。
  2. 谁能处理最难的任务: 没有哪个框架在处理难题方面明显更好。在 36 个最难的任务(整体解决率低于 35%)上,各框架竞争激烈,Goose 略微领先。
  3. 能力是共享的,而非独占的。 没有哪个框架能独自解决某些特定任务。94 个任务中有 37 个被全部四个框架解决,只有 1 个任务被单一框架(OpenHands)解决。其余困难任务往往让所有人都失败——42 个任务没有被任何框架可靠地解决,这再次印证了我们的发现:难度在于任务本身,而非框架。

发现 2:失败的运行花费更多步骤,成本更高

在所有框架中,失败的运行比成功的运行花费明显更多的步骤:

失败的运行会花费多得多的步骤——从 Codex 的 +11% 到 Goose 的 +50%。

不仅仅是步骤数。失败的运行消耗更多 token,在唯一一个提供单次运行成本数据的框架上,错误答案平均花费 0.120 美元,而正确答案为 0.086 美元——每次失败大约贵 40%。

失败的运行消耗更多的步骤、token 和成本。

当 agent 走向错误答案时,它不会快速失败——它会反复挣扎,采取更多行动却毫无进展。这是一个有用的早期预警信号:步骤数膨胀的运行更可能正在失败。而且这不仅是浪费时间,失败确实意味着每次运行花费更多的计算资源和成本。

发现 3:过程中的错误并不是预警信号

然而,与直觉相反的是,我们发现遇到更多错误(如"文件未找到"、命令失败、空搜索结果)的运行并不会更频繁地失败。在运行过程中的任何给定时间点,成功和失败的运行显示出几乎相同的错误率。例如,在第 5 步时,错误率约为 5.5% 对 5.3%。两条线几乎完全重叠。

运行过程中的错误率。"通过"和"失败"的曲线几乎重合——无论智能体最终是否做出正确判断,错误发生的概率都相同。

遇到错误只是这些 agent 工作方式的正常部分:它们探索、遇到错误、调整、然后继续前进。错误并不意味着运行注定失败。因此,"计数错误"的方法是预测失败的糟糕方式,尽管直觉上它似乎应该有效。

发现 4:尝试不同工具有帮助,但作用有限

工具的多样性定义为:单个智能体在一次运行中使用了多少种不同的工具。以熵值来衡量,熵值越高表示智能体混合使用了不同的工具,熵值越低表示智能体重复使用了相同的工具。

我们有一个想要验证的假设——工具多样性与 agent 成功之间是否存在相关性?我们发现,在所有四个框架中,成功的运行比失败的运行使用了略微更多样化的工具——信号方向正确,但很微弱(在统计上,预测失败的能力仅比抛硬币好一点点)。

因此,一个不断重复使用同一工具的 agent 是一个轻微的被困信号,但"使用更多工具"并不是成功的万能药方。

发现 5:重复的工具调用看起来像是被困住了

我们测量了 agent 连续两次调用同一工具(即"重试")的频率,以及这是否与失败相关。

挣扎中的运行倾向于重复重试同一操作,而不是尝试不同的方法。结合发现 2(失败的运行花费更多步骤且成本更高)和发现 4(失败的运行工具多样性更低),一个一致的画面浮现出来:失败的运行不是遇到错误就停止的那种——而是陷入循环、在许多步骤中重复自身而无法取得进展的那种。

深入分析:每个框架都有自己的特征,但没有单一的获胜风格

除了通过/失败之外,每个框架以明显不同的方式使用工具:

  • Codex 是最以 shell 为中心的。 几乎所有操作都通过一个命令行工具完成,每次运行约 20 次 shell 调用,很少使用专门的搜索/读取工具。
  • OpenCode 是工具最多样化的。 它倾向于使用专门搜索,读取操作远多于原始 shell。这与发现 4 中其高工具多样性得分一致。
  • Goose 和 OpenHands 介于两者之间,它们 shell 使用较多,同时也有真正的搜索/编辑混合。

以下是按工具族分类的每次运行平均工具调用次数汇总表,分为通过和失败两组:

热力图显示了每次运行中每种工具的平均调用次数。我们将众多工具归类为 shell、搜索、读取等类别,以便对这四个框架进行公平的比较。

各框架如何取得成功

这项研究的大部分聚焦于失败,反过来,我们只关注成功的运行,发现各框架以明显不同的方式取得成功。

注:Goose 的轨迹不包含时间戳数据。

它们的获胜方式:

  • OpenCode 以"精准外科手术式"获胜——步骤最少(中位数 18 步),工具最多样,很少重复自身操作。
  • Codex 以"蛮力"获胜。 它几乎将所有操作通过单一 shell 工具完成(工具多样性接近零),经常重复操作,且步骤最多。它能到达终点,只是不够优雅。
  • OpenHands 和 Goose 介于两者之间。 两者都能得到正确答案,只是过程看起来截然不同。

速度也遵循相同的模式。每个框架的典型获胜运行都很快(中位数约 3 分钟),但尾部差异显著:Codex 的第 95 百分位运行时间延伸至约 23 分钟,在困难运行上更长。没有单一的框架和成功配方。精简多样的方法(OpenCode)和重复的、仅使用 shell 的苦干(Codex)都能得到正确答案,只是沿途的过程截然不同。

总结:预测 Agent 失败的信号

我们对每个信号在区分失败运行和成功运行方面的能力进行了评分,按框架分别评估。评分标准很简单:0.50 = 无用,分数越高越好。

最可靠的信号就是 agent 持续工作了多长时间——即发现 2 中的挣扎信号。看似最明显的候选者——错误率——本质上等同于抛硬币。这证实了一个模式:关注 agent 的努力程度,而非错误。

结论

综合来看,故事很简单:

  1. 能否解决主要取决于问题本身。 Agent 们在什么是困难的问题上基本一致。
  2. 获胜的 agent 失败得快且成本低。 失败的 agent 则反复挣扎——更多步骤、更多重复、没有进展。
  3. 不要相信看似明显的信号。 错误消息不能预测失败。最强的信号就是 agent 挣扎了多久。

对于任何构建 agent 的人来说,可操作的教训是尽早检测挣扎并切断它。一个不断堆积步骤、重复自身的运行是需要干预的对象——远比一个仅仅遇到错误的运行更需要。

下一步

这 13,483 条轨迹只是完整 OfficeQA 轨迹数据集所能实现的一个预览:失败分析、能够注意到自己何时被困的自我纠正 agent,以及为减少挣扎的模型提供训练数据。