AnTrap:动态对抗环境下评测 Android GUI 智能体的运行时异常鲁棒性 Are Android GUI Agents Robust Against Runtime Anomalies? AnTrap: Evaluating Agents in Dynamic Adversarial Environments
AnTrap 基准动态注入四层十类陷阱,揭示 16 个 GUI 智能体对运行时异常普遍脆弱
前置知识
GUI 智能体执行循环
GUI 智能体通过循环完成任务:每轮接收环境提供的状态 $S$(截图),生成内部思考 $T$,再执行动作 $A$(点击、滑动、输入等),多轮交互 $R=(S,T,A)$ 直至任务完成。执行循环是所有 GUI 智能体的共同骨架,也是异常可能出现的全部位置。
AnTrap 的四层陷阱(State/Thinking/Action/Round)正是按循环中的状态输入、思考生成、动作执行和多步轨迹来划分的,理解执行循环才能理解每个陷阱注入在哪个环节、考察什么能力。
GRPO(组相对策略优化)
一种轨迹级在线强化学习算法:对每个任务采样 $G$ 条 rollout 轨迹,用规则奖励打分,优势在组内归一化 $A_i = \frac{r_i - \mathrm{mean}(r)}{\mathrm{std}(r)}$,同一轨迹内所有 token 共享序列级优势,无需 critic 模型。
论文第 5 章的核心实验就是在原始环境与 AnTrap 对抗环境中分别做 GRPO,通过增益差异来区分'环境可学习的异常'与'推理瓶颈导致的异常'。
动态评测环境(AndroidWorld)
与静态数据集不同,AndroidWorld 在真实 Android 模拟器中在线运行任务:任务参数随机化、智能体持续与活操作系统交互、通过系统状态规则自动判定成败。AnTrap 以它为基础环境,把 116 个原始任务扩充为 236 个带随机参数的任务。
理解动态环境才能区分'在静态轨迹固定位置预放对抗样本'(如 SMAN Bench)与 AnTrap'执行过程中在线随机注入陷阱'的本质差异,后者才接近真实部署。
可解性保持(Solvability Preservation)
AnTrap 注入陷阱的第一设计原则:任何扰动都不能把任务变成不可能完成,即被干扰后仍存在通往成功的路径。这样任何性能下降都可完全归因于智能体鲁棒性不足,而非任务本身无解,评测信号因此干净可信。
这是解读本文所有实验数据的前提:模型掉分不可能是任务无解造成的。人工验证显示 91% 的任务同时满足原始可解、注入后仍可解、陷阱在真实手机上合理存在三条标准。
直接修改与诱导修改(History Policy)
AnTrap 注入扰动的两种历史策略:直接修改(S 层、R 层)会把被篡改的观察写入智能体的持久交互历史,模拟真实世界发生了变化;诱导修改(T 层、A 层)只在决策瞬间呈现假观察或悄悄改掉动作,历史中记录的是智能体自己被误导的思考与输出。
这决定了陷阱考察的能力:前者考'从真实环境变化中恢复',后者考'在自身错误认知下自我纠正'。两种失败模式的含义完全不同,是理解各层实验结果差异的关键。
研究动机
真实部署中的 Android GUI 智能体几乎必然遭遇运行时异常。作者先做了一项大规模试点研究:预定义 600 个日常移动任务(涵盖消息、导航、媒体、设置、购物等),在真实手机上通过 ADB 部署 UI-TARS-1.5-7B、GUI-Owl-7B 和 MAI-UI-8B 执行,逐步记录截图、推理与动作并人工标注。结果显示异常来自两个来源:一是外部环境扰动,例如订酒店时全屏广告弹窗遮挡界面、健康应用里'摇一摇跳转'广告把会话带去外卖应用;二是智能体自身内部错误,例如推理时幻觉出不存在的界面元素、把仍在'手机号'设置页误判为已切换到'工作号'、调节闹钟音量时点击坐标反复偏离滑块。然而现有基准无法系统考察这类恢复能力:静态基准(AITW、ScreenSpot V2、AndroidControl)只测单步操作与定位;动态基准(AndroidWorld、AndroidLab、MobileWorld)虽然在线运行,却在干净稳定条件下评测;少数关注鲁棒性的工作要么只覆盖视觉噪声(SMAN Bench),要么只测指令歧义(AmbiBench),移动端缺乏可控、系统化的异常注入手段。
本文的目标是本文的目标是构建一个能系统性评测 Android GUI 智能体'从异常中恢复'能力的基准 AnTrap,具体分四步走。第一,通过真实设备的试点研究归纳出一套细粒度的运行时异常分类法 STAR,按执行循环分为 State、Thinking、Action、Round 四层共十个子类,同时覆盖外部扰动与内部错误两大来源。第二,以 AndroidWorld 为基础,将 116 个原始任务人工扩充为 236 个带随机参数的任务,并开发一套在线注入管线,能在执行过程中按可控的类型、时机(0 到 max_step)和频率(0–100%)注入陷阱,同时严格保证任务注入后仍可完成。第三,用该基准评测 7 家机构的 16 个主流多模态模型(含 Gemini-3-Pro、Claude-Sonnet-4.6、GPT-5.4 等闭源模型与 GUI-Owl、Qwen3-VL、UI-TARS 等开源模型),并加入人类基线,量化它们对各类异常的脆弱程度。第四,在原始环境与对抗环境中分别做 GRPO 强化学习对照实验,划分出'可以通过对抗训练学会的异常'与'受推理能力瓶颈限制的异常',为后续智能体研发指明方向。
与已有工作不同的是,本文的独特切入角度有三点。首先是分类维度:不同于以往按攻击手段或噪声类型组织评测,AnTrap 依据智能体执行循环的内在结构(状态输入→思考→动作→多步轨迹)来划分异常,天然覆盖'环境搞的鬼'和'自己犯的错'两大来源,这是首个面向移动端、同时覆盖外源性与内源性扰动的细粒度分类法。其次是注入方式:已有对抗评测多为静态——在固定轨迹的固定位置放置对抗样本(如 SMAN Bench);AnTrap 坚持动态干预,扰动沿轨迹随机出现(每步概率 0.16、每个 episode 恰好一次),且注入只发生在智能体与环境的接口处,不修改智能体推理逻辑,接闭源 API 也零侵入。第三是历史策略的精心设计:S 层和 R 层采用直接修改,让假观察进入历史(考察环境恢复);T 层和 A 层采用诱导修改,只记录被误导的输出而不记录假观察(考察自我纠正),从而把'识别外部变化'与'发现自身错误'两种失败模式干净地解耦,这是此前工作从未做到的。
核心方法
直觉上,可部署的移动智能体不能只会在理想路径上走,还必须能在广告弹窗、界面卡死、自己点错之后爬起来继续走。AnTrap 就是在 AndroidWorld 模拟器上加一层'对抗中间件':拦截智能体的执行循环 $\langle S_t, T_t, A_t \rangle$,按 STAR 分类法在合适的层注入扰动,形式化为 $\mathcal{L}_{\mathrm{trap}} \xrightarrow{\ \ } \tilde{X}$,其中 $X \in \{S_t, T_t, A_t, R_{t-k:t}\}$,$k$ 为连续步窗口大小。技术上管线由配置层(指定实例化哪层哪个子类的异常)、中央控制器(编排注入时机)和四个层级模块(实现十个陷阱算子)组成。默认每步以 $p_{\mathrm{trap}}=0.16$ 的概率独立触发,每个 episode 恰好注入一次,且只允许出现在前 80% 步预算内以保留恢复余量,总步预算延长 1.15 倍;所有随机决策固定种子 42,平均 1.3 次尝试即可成功注入。整个过程不触碰智能体推理代码,判定器与原环境一致,无陷阱时注入层退化为透明直通。
核心创新在于把'异常'从偶然事件变成可控、可复现、可归因的实验变量。与已有方法的本质区别有三。其一,已有对抗基准在静态轨迹的预定义位置放置陷阱,而 AnTrap 的陷阱在真实模拟器执行流中在线触发,智能体必须在毫无预警的任意一步应对异常。其二,所有陷阱遵循可解性保持原则——注入绝不把任务变成不可能完成,因此任何性能下滑都可完全归因于鲁棒性不足而非任务无解,人工验证显示 91% 任务同时满足原始可解、注入后可解、陷阱真实三条标准。其三,历史策略的区分设计:S 层和 R 层用直接修改,被篡改的观察持久写入历史,考察智能体对真实环境变化的识别与恢复;T 层和 A 层用诱导修改,假观察或被劫持的动作不进入历史,历史里只留下智能体自己被误导的思考与输出,考察它在自身错误认知下的自我纠错能力——这精确模拟了'模型幻觉后只能靠自己发现并纠正'的真实困境,是本文最巧妙的设计。
方法步骤详情
第一步,试点定分类:在 600 个真实设备任务上部署三个开源智能体并标注轨迹,归纳出 STAR 四层十子类分类法。第二步,扩充任务:在 AndroidWorld 的 116 个任务上人工新增 120 个(共 236 个),逐一验证可解。第三步,实现十个陷阱算子:S 层用 TrapOverlay APK 弹出权限框、模态框、横幅或全屏广告(模板/VLM 生成),并用 Pillow 遮挡 10–30% 屏幕;T 层用 $N=3$ 步前旧帧替换当前观察,或用 24 对反义词替换界面文字;A 层在模型输出与 ADB 执行之间加 $[20,50]$ 像素偏移、重映射动作类型、或点击相反含义按钮;R 层丢弃 $k \in [1, \lfloor T/4 \rfloor]$ 步 ADB 命令制造死锁、注入 HOME/APP_SWITCH 打断上下文、或每 2 步注入 BACK 制造循环。第四步,评测:8 个 Pixel 6 模拟器并行,Pass@3 规则成功率。第五步,GRPO:用 VERL、600 任务、$G=8$ rollout、二元奖励,在原始与对抗环境各训练两个 7B 模型,每子类独立十次。
技术新颖性
从技术新颖性看有四点。第一,分类学层面:STAR 是首个基于执行循环原理、经真实设备 600 任务实证归纳的移动端异常分类,区别于此前只覆盖视觉噪声或指令歧义的单一维度评测。第二,系统层面:注入只发生在智能体与环境的接口(截图捕获、观察传递、动作分发、轨迹流四个点),对任意智能体零侵入,接 Gemini、Claude、GPT 等闭源 API 无需改动推理逻辑,无陷阱时退化为透明直通、只增加恢复步的时间开销。第三,实验范式层面:本文首次用'同一算法在两种环境中的对照 GRPO'来划分挑战性质——原始环境 GRPO 与 AnTrap 环境 GRPO 的增益差直接回答了'哪些鲁棒性缺陷是数据暴露问题、哪些是架构性推理瓶颈',这一实验设计本身对智能体研究有方法论价值。第四,消融设计层面:每子类独立训练十个专家模型,再与混合陷阱训练对照,精确分离了'对抗暴露集中度'这一变量,发现混合训练的增益被稀释到与干净环境训练相当,说明稀疏的恢复信号不足以让策略学会通用恢复行为。
实验结果
核心发现有四点。第一,普遍脆弱:16 个模型全部显著掉分,最强的 Claude-Sonnet-4.6 从 74.2% 降至平均 66.5%,最弱的 UI-TARS-1.5-7B 从 29.7% 掉到 21.8%,而人类基线达 93.4%,领先最强模型近 27 点。第二,跨步上下文异常比单步异常更致命:R 层陷阱(死锁、上下文中断、循环)普遍掉分最狠,如 GPT-5.4 在 Loop 上仅 51.7%(原始 65.3%),而单步动作与视觉扰动相对可容忍。第三,推理能力不等于鲁棒性:Qwen3-VL-8B-Thinking 原始 62.7% 高于 Instruct 版的 52.1%,但陷阱下分别掉 6.1 与 5.8 点。第四,GRPO 对照划出清晰边界:干净环境 GRPO 提升原始成绩却不提升鲁棒性;AnTrap 环境 GRPO 原始任务提升相当,S 层 +8.1∼11.0%、A 层最高 +8.5%,但 T 层仅 +4.2∼5.1%、R 层 <3%(Loop <1%)——单步异常可由对抗训练习得,多步上下文陷阱是推理瓶颈。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| ANTRAP 全陷阱平均(最强闭源模型) | 成功率 Pass@3 (%) | Claude-Sonnet-4.6:66.5 | 自身原始环境 74.2;人类标注员 93.4 | 仍掉 7.7 个百分点,距人类差 26.9 点 |
| S 层陷阱恢复(AnTrap 环境 GRPO) | 成功率提升(百分点) | +8.1 ∼ +11.0 | 原始环境 GRPO 仅 +1.2 ∼ +1.7 | 对抗训练增益约为干净训练的 5–8 倍 |
| A 层陷阱恢复(AnTrap 环境 GRPO) | 成功率提升(百分点) | 最高 +8.5(Grounding Error 等),Intent Deviation 仅 +3.4∼5.5 | 原始环境 GRPO +1.6 ∼ +2.1 | 动作执行类异常大部分可通过对抗训练解决 |
| R 层 Loop 陷阱(AnTrap 环境 GRPO) | 成功率提升(百分点) | < +1.0(训练后 GUI-Owl-7B 36.4、UI-TARS-7B 21.6) | 训练前 35.6 / 20.8 | 几乎为零,属推理瓶颈而非环境可学习问题 |
| 思考型 vs 指令型模型的鲁棒性 | 陷阱下绝对掉分(百分点) | GUI-Owl-1.5-32B-Think:-7.1(69.5→62.4) | GUI-Owl-1.5-32B-Instruct:-5.8(68.2→62.4) | 推理增强未带来任何鲁棒性收益 |
局限与改进
作者承认的局限有三:一是规模,受在线任务初始化与评测耗时限制,只有 236 个基础任务,难以覆盖全球范围内丰富的 Android 使用场景;二是方法,受预算与轨迹标注数据限制,未探索对抗性 SFT,而这种做法可能更擅长解决上下文理解类缺陷;三是定位,AnTrap 只做诊断不做治疗,如何规模化训练以补齐暴露的短板仍是开放问题。我自己的观察补充五点:其一,陷阱参数是人工设定的(每 episode 恰好一个陷阱、概率 0.16、步预算延长 1.15 倍),与真实设备上异常的自然分布未必一致,结论对异常密度可能敏感;其二,GPT 系列因采用 Set-of-Marks 推理而豁免 Grounding Error 陷阱,该子类上跨模型对比不完全公平;其三,GRPO 实验只在 7B 开源模型上进行,结论能否外推到 30B 以上或闭源模型未知;其四,每 episode 单一陷阱的设计无法考察复合异常(如弹窗叠加死锁),而这恰是真实世界更常见的形态;其五,只报告规则成功率,未报告恢复耗时、多余步数、误操作代价等过程指标,无法衡量恢复的效率与代价。
独立分析的弱点
独立分析后我认为有四个值得关注的弱点。第一,R 层陷阱近乎无解暴露的是架构缺陷:模型过度依赖当前观察、缺乏对长程历史的整合与自我监控,改进方向是引入轨迹级过程奖励模型(如 GUI-Shepherd 式的步级验证)、或在动作空间中加入'标记异常/回溯'等元动作,让恢复行为有明确的奖励通路。第二,对抗 GRPO 的增益高度依赖陷阱类型与训练暴露的对应关系,混合训练即失效,说明学到的是针对性恢复策略而非通用鲁棒性;改进方向是课程学习(由易到难的陷阱序列)或奖励塑形(对'识别异常并纠正'的中间行为给部分分),提高学习信号密度。第三,T 层诱导修改依赖模型输出格式的约定(instruct 模型先输出动作描述再调用工具),对输出格式不同的模型同一陷阱的实际难度不一致,改进方向是把诱导修改改为对所有模型统一的观察图像级篡改。第四,陷阱内容虽有人工模板与 VLM 生成两种来源,但与真实广告生态(如摇一摇跳转、虚假关闭按钮)相比仍偏温和,可能高估模型鲁棒性;改进方向是从试点研究的真实异常案例中回灌陷阱素材,构造更贴近实战的黑盒对抗库。
未来方向
作者提出的未来方向包括:把构造方法扩展到更广泛的 Android 场景以提升结论普适性;探索对抗性 SFT(利用标注好的恢复轨迹做监督微调)能否解决上下文理解类缺陷;开发可扩展的训练方法,把 AnTrap 从诊断工具变成训练资源。基于论文成果我还可以延伸五点:第一,把十个陷阱算子封装为开放 RL 环境并结合课程学习与步级过程奖励,专攻 R 层推理瓶颈,例如训练模型显式输出'检测到环境异常'的判断后再决策;第二,利用长上下文与思考模型的潜力训练轨迹级异常检测器,作为外挂模块适配任意智能体;第三,把 STAR 分类法迁移到桌面(OSWorld)与 Web(WebArena)环境,验证'环境可学习 vs 推理瓶颈'边界的跨平台普适性;第四,用试点研究数据拟合真实异常的密度与类型分布,校准注入策略并支持多陷阱叠加;第五,把 AnTrap-GRPO 划定的能力边界作为模型画像,指导训练数据合成与动态评测集生成。
复现评估
复现条件总体友好但算力门槛不低。代码承诺开源在 GitHub(gguogan/AnTrap),基准基于 AndroidWorld 构建:评测只需在 Docker 中并行运行 8 个 Pixel 6 模拟器(Android API 33),开源模型用 vLLM 部署在 4 张 A40 48GB 上,上下文 32768 token、每 prompt 最多 8 张图;API 模型用 temperature 1.0。关键随机性均已固定:任务初始化种子 30、陷阱种子 42,每 episode 恰好一个陷阱;236 个任务定义与判定器随代码发布,人工验证标准有明确描述,注释员报酬每人 10 美元。GRPO 部分门槛较高:2 节点共 16 张 A100 80GB、定制 VERL 框架、600 个人工校验的训练任务、每子类独立训练共十次运行(另加混合与原始环境训练),7B 全参数训练对学术实验室已是较大开销。综合评估:只复现评测的难度中等(主要成本是 API 费用与模拟器运维),完整复现训练实验的难度高,需要多机多卡集群与较长周期。
论文图表
展示试点研究中发现的四类典型异常场景:订酒店时全屏弹窗遮挡界面(State 层外部中断)、添加工作电话时推理未识别当前仍是'手机号'设置(Thinking 层推理错误)、调音量滑块时坐标反复偏离(Action 层定位错误)、健康应用里摇一摇广告跳转到外卖应用导致迷失方向(Round 层长序列事故),并说明 AnTrap 把它们组织为四层十子类。
这是全文的问题引入:四个真实场景直观定义了'运行时异常'的含义,也是 STAR 分类法的雏形,理解它才能理解后续每个陷阱算子针对什么。
第 2–5 步连续注入状态死锁陷阱(界面无响应)后,训练后的 GUI-Owl-7B 通过更换目标重试、调整滑动坐标等操作最终恢复并完成任务。
展示即使 R 层也存在可恢复案例:死锁类陷阱并非完全不可学,只是增益有限,补充了主表结论的细节。