DiagEval: Trajectory-Conditioned Diagnosis for Reliable Software Evaluation with GUI Agents¶
会议: NeurIPS 2026
arXiv: 2605.17439
代码: https://github.com/scutGit/DiagEval
领域: LLM Agent
关键词: GUI智能体评测、轨迹诊断、软件评测、归因分析、主动探测
一句话总结¶
针对交互式软件中 GUI 智能体单轨迹失败无法区分“评测器执行失误”与“软件真实缺陷”的根本痛点,DiagEval 提出复用失败轨迹、自适应派发三类定向诊断探测分支,并基于贝叶斯信息增益更新归因置信度的主动评测协议,大幅挽回假阴性判决。
研究背景与动机¶
随着大语言模型生成的代码从单文件片段迈向具备复杂交互界面的全栈应用,软件评测已无法仅依赖静态分析或单元测试,而必须借助 GUI 智能体在动态环境中交互式执行与验证。然而,这一转变引发了严重的评测可靠性危机:评测端智能体自身的执行失误,极易被误判为被测软件本身存在缺陷。例如在网页测试中,智能体可能因为元素未完全加载、滚动视口受限、点击目标漂移或推理幻觉而未达预期,导致评估器直接下达“软件缺陷”的不及格判决。
这种误判的根本矛盾在于单轨迹可辨识性鸿沟(single-trajectory identifiability gap):软件功能的正确性本质上是其底层隐式 UI 状态迁移图上的图级可达性(graph-level reachability)问题,只要存在任意一条有效路径能从初始态到达目标态,软件即应判为正确;但评测智能体在一次运行中只能观察到一条局部路径。单次 rollout 失败仅仅否定了被采样的这一条 realized path,根本不能证明目标状态在图上不可达。传统的暴力重试(Naive Retry)或 Best-of-N 采样往往陷入相同的感知盲区或由于评测器认知偏置导致失败模式复现,无法结构性消解错误归因。
本文的切入角度是:不再将失败轨迹当作应全盘丢弃的废案,而是将其转化为诊断资产。通过定位关键分叉点、解析不确定性根源并定向生成针对性的诊断分支,评估器能够主动收集跨轨迹证据。核心 idea:将单次交互失败后的软件评测形式化为轨迹条件约束下的序列诊断过程,通过解析失败生成结构化诊断摘要,引导替代迁移、视口扩展与可复现性测试三类非对称探测分支,利用期望信息增益(EIG)贪心调度并贝叶斯更新内部归因分数,高效解耦智能体执行错误(AgentFail)与环境固有缺陷(EnvFail)。
方法详解¶
整体框架¶
DiagEval 的核心运行机制构建在“执行-失败-诊断-归因”的闭环反馈流上。当主评测智能体执行初始轨迹并返回失败判决后,DiagEval 并不盲目重新从头执行,而是启动诊断引擎:首先由大模型诊断裁判分析整条失败轨迹、动作日志与最终失败截图/DOM,定位最有价值重启的分叉节点并提炼出失败诊断摘要(FDS);接着依据不确定性来源(SOU)自适应派发并生成涵盖替代路径、视口扩展与稳定性检验的候选探测分支;随后通过期望信息增益(EIG)排序优先执行信息量最大的分支;执行结果通过显式的分支类型化贝叶斯更新规则调整归因分数,一旦探测出成功则作为可达性见证立即判定通过,累积失败达到环境缺陷阈值或预算耗尽则终止判定。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["初始交互评测<br/>执行任务轨迹 τ1"] --> B{"评测判决<br/>y1 = Pass?"}
B -->|Pass| C["最终判决:Pass<br/>无需额外诊断"]
B -->|Fail| D["分叉节点定位与失败摘要解析<br/>提取 FDS 与主要不确定性 SOU"]
D --> E["SOU 引导的定向诊断分支生成<br/>派发 Type A/B/C 候选探测集"]
E --> F["基于期望信息增益的探测分支调度<br/>EIG 排序选取最优 K 个分支"]
F --> G["上下文恢复与断点探测执行<br/>在分叉节点恢复上下文并执行分支"]
G --> H{"探测结果判断<br/>verified_success?"}
H -->|是| I["纠正归因:AgentFail<br/>最终翻转判决:Pass"]
H -->|否| J["分支类型化贝叶斯归因更新<br/>更新 p(k,j) 累积 EnvFail 置信度"]
J --> K{"置信度满足<br/>p >= τenv 或耗尽预算?"}
K -->|否| F
K -->|是| L["确认缺陷:EnvFail<br/>最终维持判决:Fail"]
关键设计¶
1. 分叉节点定位与失败摘要解析:从全轨迹中精确定位干预锚点
针对长交互轨迹中错误成因难以溯源、重新从头回溯开销巨大的痛点,DiagEval 引入了分叉节点定位机制与失败诊断摘要(FDS)。分叉节点 \(t^*\) 并非简单的异常发生点,而是兼顾目标接近度与归因不确定性消除潜力的最早可操作状态。其理论目标刻画为:
其中 \(\mathcal{T}_{\mathrm{cand}}\) 为候选时间步,\(\widehat{\mathrm{Prog}}(t)\) 估计当前状态至可行延续路径的接近程度,\(\widehat{\Delta H}(t)\) 衡量该节点分支对不确定性熵的期望缩减。在工程落地中,系统利用 LLM 裁判 \(\mathcal{J}\) 对压缩轨迹上下文、动作反思、DOM 树及界面截图进行全局审查,结构化输出 FDS 元组 \(\mathcal{F}_0 = (t^*, h^*, D_{t^*}, \mathcal{C}_{t^*})\)。其中 \(h^*\) 诊断出四种典型不确定性源(SOU):SOU-1 不完善感知/Grounding 误差、SOU-2 局部视口/信息不完全观测、SOU-3 推理幻觉与误解、SOU-4 环境波动与运行时不稳定性;\(\mathcal{C}_{t^*}\) 则封装了支持快速热恢复的局部环境上下文,避免了无意义的重复冷启动。
2. SOU 引导的三维诊断探测分支生成:构建非对称信息空间
针对暴力重试容易复现相同盲区且无法提供结构化证据的缺陷,DiagEval 依据识别出的 SOU 动态派发具有不同语义和归因非对称性的三类探测算子,构成候选分支池 \(\mathcal{P}_k\): - Type A(替代路径迁移):主要应对 SOU-1 与 SOU-3。通过改变交互模态(如坐标点击改为文本 OCR 定位、键盘快捷键替代鼠标点击)或采用完全不同的业务路线,测试原失败是否仅为特定执行手法的问题。 - Type B(观测边界扩展):主要应对 SOU-2。通过滚动视口、展开折叠菜单、切换二级标签等动作暴露潜在隐藏元素,探测目标是否处于被遮挡的界面区域。 - Type C(稳定性与可复现性检验):主要应对 SOU-3 与 SOU-4。在同等或微扰条件下进行严格的受控重复与属性检验(例如鼠标悬停查看光标样式、Tab 键焦点流探测),验证界面元素是否真实具备可交互性。
这三类分支不仅在动作空间上互补,在归因语义上更具备本质的不对称先验:例如,简单稳定性测试(Type C)再次失败说明环境大概率阻断,构成了强化软件缺陷的强有力证据;而替代路径(Type A)的失败则仍可能混杂智能体自身探索不足。
3. 期望信息增益排序与分支类型化贝叶斯归因更新:自适应调度与双向判决
针对有限评测预算下多分支调度盲目性的问题,DiagEval 提出了基于期望信息增益(EIG)的分支排序准则与分支类型化贝叶斯归因更新规则。在第 \(k\) 轮诊断前,系统以二元熵刻画当前对环境缺陷的信念不确定性 \(H_{\mathrm{bin}}(p^{(k)})\),并模拟分支 \(b\) 产出各观测结果后的后验熵,优先选择能最大化压缩归因不确定性的分支:
在顺序执行分支并观测到实际产出 \(o_{k,j} \in \{\texttt{verified\_success}, \texttt{fail}\}\) 后,依据预设的类型化似然参数更新环境缺陷置信度 \(p^{(k,j)}\):
其中参数满足 \(\gamma_A > \gamma_B > \gamma_C\)(默认分别设为 0.60, 0.50, 0.40),直观体现出 Type C 失败对环境缺陷的证明力最强(使分母增量更小、后验推向 1 的速度最快)。终止准则具备明显的非对称敏捷性:一旦任意分支产出 \(\texttt{verified\_success}\),该分支即构成全局图可达性的直接充要证据,诊断立即截断,判决直接翻转为 Pass(归因为 AgentFail);若持续失败致使 \(p^{(k,j)} \ge \tau_{\mathrm{env}}\)(默认 0.70),则提前判定为确认软件缺陷(EnvFail),停止无谓探测。
一个完整示例¶
以 RealDevBench 中“胶片效果网页饱和度滑块调节”任务为例:
- 初始失败:智能体在未上传底图时即强行尝试点击饱和度滑块,并连续点击坐标 \((960, 692)\) 处的“Choose File”按钮无响应,判定任务 Fail。
- FDS 提取:诊断裁判识别其为 wrong_target 范畴(SOU-1 感知定位偏差),分叉节点回溯至 Step 0,初始化环境缺陷先验为极低的 \(p_{\mathrm{env}} = 0.10\)。
- 分支派发与 EIG 优选:依据经验先验将权重高度分配至 Type A(\(w_A=0.6, w_B=0.2, w_C=0.2\)),生成包括 A-0(OCR 动态定位上传按钮)、A-1(父级 Drop-zone 容器点击)、A-2(导航栏样例图导入)、B-3(向下滚动 500px)及 C-4(悬停检测可交互性)等 5 个候选分支。经过 EIG 排序与可行性剪枝,A-0 被排在首位执行。
- 执行与归因:执行 A-0 分支时,智能体成功借助 OCR 识别到真实的上传区域边界并完成加载,进而顺利调节饱和度滑块达成目标。评测器捕捉到 \(\texttt{verified\_success}\),立即终止诊断,将该用例纠正为 Pass,成功消除一起严重的假阴性误判。
实验关键数据¶
主实验¶
主实验在包含复杂真实 Web 全栈项目的 RealDevBench (RDB, 429例) 与以单元级组件测试为主的 WebDevJudge-Unit (WDJ-U, 502例) 上展开评测。以 Gemini 3 Flash Preview 作为基础 GUI 执行智能体,DiagEval 分别进行了 1 轮与 2 轮诊断对比:
| 数据集 | 评测框架与模型 | 端到端准确率 (Acc.) | 相对 baseline 提升 (Δ) | 假阴性例数 (FN) | 真阴性例数 (TN) | 单用例成本 ($/case) |
|---|---|---|---|---|---|---|
| WDJ-U (502例) | AppEvalPilot (Claude Opus 4.6) | 74.1% | — | 108 | 199 | $0.400 |
| WDJ-U | AppEvalPilot (Gemini 3 Flash) | 69.9% | — | 114 | 186 | $0.070 |
| WDJ-U | DiagEval (×1) (Gemini 3 Flash) | 76.1% | +6.2% | 62 | 166 | $0.122 |
| WDJ-U | DiagEval (×2) (Gemini 3 Flash) | 78.3% | +8.4% | 46 | 160 | $0.154 |
| RDB (429例) | AppEvalPilot (Claude Opus 4.6) | 69.9% | — | 104 | 66 | $0.385 |
| RDB | AppEvalPilot (Gemini 3 Flash) | 65.0% | — | 132 | 73 | $0.112 |
| RDB | DiagEval (×1) (Gemini 3 Flash) | 78.6% | +13.6% | 70 | 69 | $0.183 |
| RDB | DiagEval (×2) (Gemini 3 Flash) | 81.6% | +16.6% | 50 | 62 | $0.234 |
消融实验¶
为严格解耦失败诊断上下文、分叉节点恢复与定向分支及归因更新的具体贡献,在两个基准的初始假阴性(FN)集合上进行组件剥离评测(RDB \(n=132\),WDJ-U \(n=114\)):
| 诊断轮次 | 方法配置 | FDS 诊断 | Fork 断点恢复 | Branch+Att. 定向分支与归因更新 | RDB 恢复率 (Rec.%) | RDB 熵减 (\(\Delta H\)) | WDJ-U 恢复率 (Rec.%) | WDJ-U 熵减 (\(\Delta H\)) |
|---|---|---|---|---|---|---|---|---|
| ×1 | 朴素重跑 (NR) | – | – | – | 32.6% | 0.001 | 17.5% | 0.046 |
| ×1 | 上下文增强重试 (NR+IE) | ✓ | ✓ | – | 37.1% | 0.024 | 20.2% | 0.063 |
| ×1 | DiagEval (完整) | ✓ | ✓ | ✓ | 47.0% | 0.305 | 45.6% | 0.274 |
| ×2 | 朴素重跑 (NR) | – | – | – | 46.2% | 0.012 | 28.1% | 0.120 |
| ×2 | 上下文增强重试 (NR+IE) | ✓ | ✓ | – | 43.2% | 0.024 | 30.7% | 0.141 |
| ×2 | DiagEval (完整) | ✓ | ✓ | ✓ | 62.1% | 0.325 | 59.6% | 0.410 |
此外,在分支执行排序测试中,EIG 调度将首分支命中成功率从随机排序的 33% 和 LLM 默认排序的 58% 显著提升至 66%,使平均每恢复用例执行的探测分支数降至 1.48,节省了 26% 的探测开销。
关键发现¶
- SOU-guided 分支是挽回假阴性的核心驱动力:仅具备断点恢复(NR+IE)带来的恢复率增益极其有限(WDJ-U 仅从 17.5% 微升至 20.2%),只有引入定向 SOU 分支后恢复率直接跃升至 45.6%(×1)与 59.6%(×2),且信息熵大幅下降(\(\Delta H\) 达到 0.410),说明系统真正依靠定向探索消除了认知模糊。
- 超越盲目采样的显著优势:在 WDJ-U 的 114 个假阴性用例中,DiagEval (×2) 的恢复率(59.6%)是乐观 Best-of-3 暴力重试基线(28.9%)的两倍以上,且多数恢复来自于解决局部视口盲区的 SOU-2(恢复率高达 75.0%)。
- 极具优势的性价比前沿(Pareto Frontier):在 RDB 上,采用廉价 Gemini 3 Flash 的 DiagEval (×1) 准确率达到 78.6%,远超消耗昂贵 Claude Opus 4.6 的 AppEvalPilot 基准(69.9%),而单用例总成本仅为其 47.5%($0.183 vs $0.385)。
- 优异的无缝迁移泛化能力:将 DiagEval 原型直接零样本迁移到底层为 UI-TARS 的评测框架上,WDJ-U 与 RDB 的端到端准确率分别获得了高达 +22.1% 与 +21.7% 的绝对增益,证实其评测协议的框架通用性。
亮点与洞察¶
- 从状态图连通性视角重新审视软件评测:敏锐指出了单次 GUI rollout 评测与图可达性真值之间的“单轨迹可辨识性鸿沟”,确立了交互式软件评测必须走向后失败主动诊断的理论根基。
- 非对称先验与期望信息增益的有机结合:打破了传统测试工具“反复试错”的平权思路,巧妙地设计了 Type A/B/C 三类在归因倾向与证伪难度上具有鲜明非对称性的探测算子,并用 EIG 数学化贪心驱动,大幅压缩了评测算力开销。
- 可复用的 Agent-as-a-Judge 增强范式:该诊断架构并不绑定于特定的模型架构或测试框架,能以外挂监督模块(Supervisor)的形式赋能任意现存 GUI 评测流水线,极大降低了工业落地改造成本。
局限与展望¶
- 似然超参数与二元分类的经验性设定:当前的似然参数(\(w_0, \beta_0, \gamma_d\))采用启发式人工配置,内部归因分数为排序置信信号而非经过严格校准的后验概率;同时将归因空间强行划分为 AgentFail 与 EnvFail 二元互斥,无法覆盖软硬件协同故障等细粒度边界。
- 诊断裁判本身的偏置风险:FDS 解析与分支规划强依赖外部 LLM 监督者(如 Claude 3.7/Sonnet 4.6),若裁判本身发生严重的上下文理解偏差,其错误假设可能沿分支调度链条传递放大。
- 未来改进思路:后续工作可探索从离线日志中自监督学习校准后的似然模型,引入代码仓库静态调用图与前后端日志辅助多模态感知,并将诊断范式拓展至多智能体协作冲突等多元归因场景。
相关工作与启发¶
- vs AppEvalPilot / WebDevJudge: 传统交互式软件测试基线在智能体遇到阻碍时直接以最终执行状态给出二元评测结果,将智能体单次路线失败简单等同于软件缺陷;本文在此基础上开创性引入了后失败重诊断协议,通过构造定向探测有效解决了假阴性误判。
- vs Agent-as-a-Judge / ChatEval: 现有大模型裁判技术通常局限在针对既定、静态交互轨迹的离线评分或多角色辩论;DiagEval 则将裁判转变为主动探索者,通过闭环环境再交互主动获取跨轨迹的增量证据,弥合了静态评测在交互动态性下的根本局限。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 首次从隐式状态图可达性视角将 GUI 软件评测失败形式化为主动诊断问题,设计了完备的 SOU 分类与 EIG 分支调度体系。
- 实验充分度: ⭐⭐⭐⭐⭐ 覆盖真实全栈与组件级两大基准,对比了多家顶尖闭源与开源模型,提供了完备的组件消融、熵减分析、分支排序效率及跨框架迁移实验。
- 写作质量: ⭐⭐⭐⭐⭐ 问题定义高度精准,理论建模与工程实践结合紧密,案例分析生动详实。
- 价值: ⭐⭐⭐⭐⭐ 为大模型代码生成在全栈交互应用场景的评测可靠性提供了极其关键的破局工具,具有深远的工业落地指导意义。