Agent 最危险的不是失败,而是“最终通过,但过程已经失控”

Agent 最终通过并不代表过程可靠:从执行轨迹、独立证据、失败回归到 Quality Gate,讨论 Agent Reliability 的工程判断。

发布 ·更新 ·约 8 分钟 ·hugfeature

很多团队评估 Agent,最后都会落到一个最简单的问题:

任务完成了吗?

代码是否通过测试,页面是否操作成功,报告是否生成,目标是否达成。

这个指标当然重要,但它正在变得不够用了。

因为对长链路 Agent 来说,最终结果正确,不代表执行过程可靠。一个 Agent 完全可能在中间走错路、破坏环境、制造错误数据,最后又绕回来得到一个“通过”的结果。

如果我们只看最终结果,这些问题几乎都是隐形的。

一项值得警惕的新研究

2026 年 9 月发布的论文 Locating Hidden Failures Makes Long-Horizon Agents More Reliable 对这个问题做了一次很有价值的拆解。

研究者分析了 2,518 条 Agent 执行轨迹,覆盖软件工程、Computer Use 和科学任务,并人工标注出 6,967 个错误、78 类失败模式。

最值得关注的不是 Agent 会犯错,而是它犯错之后发生了什么。

研究发现,一个 Agent 出现第一次错误之后,经常无法真正恢复,而且很少能够主动发现自己的错误。任务仍然会继续执行,于是错误被一路带到后面的步骤。

更麻烦的是,一些最终被判定为 solved 的任务,在执行过程中依然可能出现:

  • 删除数据
  • 破坏系统状态
  • 伪造成功
  • 通过错误路径“碰巧”得到正确结果

也就是说:

Pass ≠ Reliable。

论文进一步测试了 6 个前沿模型作为 judge,让它们判断一条 Agent trajectory 的第一次错误出现在哪里。即使表现最好的 judge,也只能在不到三分之一的运行中正确定位第一次错误。

这说明一个现实问题:

当 Agent 的任务越来越长,仅靠最终结果和一次 LLM Judge,已经不足以承担可靠性判断。

我们过去的测试逻辑正在失效

传统自动化测试天然偏向最终状态:

输入 → 执行 → Assert → Pass / Fail。

对于 API、函数或者相对确定的软件流程,这套模型非常有效。

但 Agent 的执行更像:

Goal
→ Plan
→ Tool Call
→ Observation
→ Re-plan
→ Retry
→ Side Effect
→ Final Result

它不是一次调用,而是一条 trajectory。

这意味着测试对象已经发生变化。

过去我们测试的是:

结果是否正确。

现在需要测试的是:

这个结果是怎么得到的。

如果仍然只保留最终 Assert,就会出现一种很危险的情况:

Agent 已经偏离目标、错误调用工具、污染环境甚至产生副作用,但只要最后结果碰巧满足断言,整条执行链仍然显示为绿色。

绿色,不再等于健康。

Agent Reliability 至少需要五层判断

我更倾向于把 Agent 的质量标准从单一的“任务成功率”,升级成五层:

结果正确 + 过程可解释 + 副作用可控 + 失败可回归 + 发布可阻断

第一层仍然是 Outcome。

任务最终有没有完成,这是底线。

第二层是 Trace。

Agent 调用了什么工具、读取了什么证据、在哪一步改变了计划、发生过几次 Retry,这些过程必须可以被重建。

第三层是 Evidence。

不是“Agent 说自己完成了”,而是它必须拿出能够证明完成的证据。

例如代码 Agent 不能只返回“测试已通过”,而应该关联真实测试结果、修改文件、执行日志和环境状态。

第四层是 Failure Regression。

一次失败如果只能靠人工看日志解决,那么它只是一次事故。

真正有价值的是把失败沉淀成:

Failure → Corpus → Regression Case

以后 Agent、Prompt、Skill、Model 或 Harness 发生变化,都重新验证这个失败是否再次出现。

第五层是 Quality Gate。

如果 Trace 缺失、关键 Evidence 不足、出现高风险副作用或者命中已知 Failure Pattern,即使最终任务通过,也应该能够阻止 Merge 或 Release。

到这里,AI 测试才真正从“评测一个回答”进入“控制一个执行系统”。

Harness 才是 Reliability 真正发生的地方

很多 Agent 优化最后都会落到 Prompt。

Agent 不稳定,就改 Prompt;工具调用错误,就再加一句约束;输出不符合格式,就继续补规则。

这些手段当然有用,但它解决不了长链路系统的根本问题。

因为真正的 Reliability 不应该依赖 Agent 自己承诺“我会做对”。

它应该由 Agent 外部的 Harness 提供。

Harness 至少应该知道:

Agent 想完成什么、实际做了什么、依据是什么、改变了什么、失败发生在哪里,以及最终结果是否值得信任。

这也是为什么 Trace、Evaluator、Failure Corpus 和 Quality Gate 不应该是四套独立系统。

它们其实是一条链:

Change → Agent → Harness → Trace → Verification → Failure / Root Cause → Regression → Quality Gate

Trace 负责留下事实。

Verification 判断事实是否支持结果。

Failure 把异常结构化。

Regression 保证问题不会回来。

Quality Gate 最终决定这个结果能不能进入下一阶段。

这条链一旦跑通,Agent Reliability 才开始变成工程能力,而不是模型调参经验。

真正值得优化的指标,也许不是 Success Rate

Success Rate 当然还要看。

但对于一个逐渐进入真实研发流程的 Agent,我更关心另外几个问题:

第一次错误发生在哪里?

Agent 有没有意识到自己错了?

错误之后有没有恢复?

恢复花了多少额外步骤?

有没有产生不可逆副作用?

最终 Pass 是否有独立 Evidence 支撑?

同类 Failure 下一版本还会不会再次出现?

这些指标比单纯的“成功率从 82% 提升到 87%”更接近工程现实。

因为一个成功率略低、但失败可定位、可恢复、可回归的 Agent,往往比一个成功率很高、但失败完全不可观察的 Agent 更容易进入生产系统。

结语

Agent 最危险的状态,不一定是明确失败。

明确失败至少会触发处理。

真正麻烦的是:

任务显示通过了,但执行过程已经失控,而系统没有任何机制发现它。

这也是我理解的 Agent Reliability 的核心问题。

我们最终需要建立的,不只是一个更聪明的 Agent,而是一套即使 Agent 会犯错,也能够发现、定位、恢复、回归并阻断风险的工程系统。

当这一套能力建立起来之后,所谓 AI Testing 才真正从“验证模型输出”,走向了“保障 Agent Runtime”。


参考

  1. Salman Rahman et al. Locating Hidden Failures Makes Long-Horizon Agents More Reliable, 2026.
  2. Aagam Sogani et al. When Web Agents Finish but Still Fail: Reproducible Triggers and Trace Diagnostics for Parallel Web Exploration, 2026.

沿着问题继续探索

从执行机制走向验证与交付。

相关文章

在 GitHub 反馈 ↗