腾讯AppAgent评测:解析树与视觉结合,移动端自动化测试的新思路

腾讯发布并被 CHI 2025 收录的多模态智能体框架 AppAgent,通过解析树与视觉特征结合的方式,探索移动端自动化测试的新路径。本文深入解析其两阶段工作流、动作空间设计及退化机制。

在移动端自动化测试领域,传统方案往往依赖后端接口或 accessibility API 进行结构化调用。然而,腾讯近期发布并被 CHI 2025 收录的多模态智能体框架 AppAgent,则尝试了一条不同的技术路线:让多模态大模型像人类一样通过点击、滑动等操作直接使用 App,而不依赖任何系统内部接口。这一方向不仅对 UI Agent 研究具有参考价值,也为自动化测试提供了新的可能性。

两阶段工作流:先学习,再执行

AppAgent 的核心设计是一套两阶段工作流。第一阶段是“探索”(exploration),智能体通过自主尝试或观察人类演示,为 App 中的 UI 元素积累一份自然语言文档;第二阶段是“部署”(deployment),智能体在执行具体任务时查阅这份文档来决定如何操作。这种将“学习如何使用 App”与“使用 App 完成任务”显式拆分的思路,使得学习成果可以反复复用,区别于以往“边跑边决策”的临时性方案。

解析树+视觉特征:动作空间的设计逻辑

AppAgent 在感知层采用了解析树与视觉特征双输入的方式。解析树并非第二个模型,而是一份确定性的 XML 数据,用于识别屏幕上有哪些可交互元素及其位置,并在截图上绘制数字标签。真正做决策的只有一个视觉语言模型,它看到的是“一张贴了数字的截图”,输出的是“选哪个数字”。

具体实现上,AppAgent 通过 adb shell uiautomator dump 获取 UI Automator XML 树,遍历所有 clickable="true" 和 focusable="true" 的节点,并记录其边界框。两类节点分别遍历后,再通过欧氏距离阈值去重,避免重复标号。最终,这些元素会在截图上以数字标签呈现,可点击元素标红,可滚动元素标蓝。

  • 动作空间包括:tap(element)、text(element, text_str)、long_press(element)、swipe(element, direction, dist) 以及 grid()
  • 所有动作的第一个参数都是“数字标签”,而非坐标或元素路径
  • 模型无需具备像素级坐标定位能力,只需具备“看图选数字”的视觉理解能力

这种设计的优势在于降低了模型的定位难度,但代价是完全依赖解析树能否正确枚举出交互元素。与 Mobile-Agent-v3 等训练专用模型输出绝对坐标的方案相比,AppAgent 将定位精度前置到运行时的确定性代码中,不需要训练任何专用模型,但鲁棒性完全绑定在 Android 无障碍框架暴露信息的完整程度上。

探索阶段:自主尝试与人类演示

AppAgent 的探索阶段分为两条路径:自主探索和人类演示。自主探索采用“先动作、再反思”的两段式结构。每一轮先截图、解析元素列表、调用视觉模型选择一个动作执行,然后截取“动作后”的画面,将前后两张图一起交给模型进行反思。反思结果分为四类:无效(INEFFECTIVE)、返回(BACK)、继续(CONTINUE)、成功(SUCCESS)。只有被判定为“无效”的操作不会生成文档,其余三类都会记录相关信息。

为了提高效率,AppAgent 还引入了主动剪枝机制:将判定为“无效”或“返回/继续”的元素加入黑名单,在后续轮次中直接跳过。只有被判定为“成功”的元素会一直保留在候选池中。这种机制有效减少了重复尝试,把有限的探索轮次留给未验证的元素。

不过,自主探索存在一个明显的能力边界:它无法学习文本输入框的功能。如果当前动作是 text(),代码会直接跳过反思和文档生成。这意味着,对于依赖搜索框或登录表单的 App,必须依靠人类演示路径来补充文档。

人类演示路径由 step_recorder.py 负责录制,document_generation.py 负责生成文档。与自主探索不同,人类演示路径不仅支持文本输入文档的生成,还具备文档精修能力。当配置文件中开启 DOC_REFINE 选项时,若某个元素已存在文档,系统会要求模型将新观察与旧文档合并,生成更完整的描述。而自主探索路径则不具备这一功能,文档一旦生成便不再更新。

解析树缺失时的退化机制

当视觉模型发现想要操作的元素没有被标上数字(如 WebView、自定义渲染控件或游戏画面),AppAgent 提供了一个 grid() 动作作为兜底方案。调用该动作后,系统会在截图上叠加一层网格,模型通过 tap_grid(area, subarea)、long_press_grid(area, subarea) 等方式进行定位。其中,area 指定网格中的某一格,subarea 从九个方位(中心加八个罗盘方向)中选择,实现格子内部的精度细分。

然而,这种退化方案并非万能。首先,网格模式下动作空间发生收缩,text() 动作完全消失,意味着模型失去了输入文本的能力。如果任务需要在未被无障碍树覆盖的输入框中打字,网格机制无法解决。其次,源码中发现了一个真实存在的坐标 bug:在 swipe_precise 方法中,拼接 ADB 命令时误将起点 Y 坐标写成了 X 坐标,导致滑动起点错误。该 bug 只在网格兜底路径中触发,虽然不会报错,但会悄无声息地执行错误操作,进一步削弱了降级路径的可靠性。

行业意义:从自动化测试到 UI Agent 的技术演进

AppAgent 的出现,标志着移动端 UI Agent 正在从传统的结构化调用向“模拟人类交互”方向演进。相比依赖后端接口或 accessibility API 的自动化测试方式,AppAgent 的优势在于更强的泛化能力和更接近真实用户的操作逻辑。然而,其对解析树的高度依赖、探索阶段的能力限制以及退化路径中的潜在缺陷,也提醒我们在实际应用中仍需谨慎评估。

对于自动化测试团队而言,AppAgent 提供了一种新的思路:通过多模态大模型与确定性代码的结合,实现更灵活、更贴近用户行为的测试覆盖。尽管目前仍存在局限,但随着 UI Agent 技术的不断成熟,未来或许能在更多复杂场景中发挥作用。

原创文章,作者:点点,如若转载,请注明出处:https://www.dian8dian.com/teng-xun-appagent-ping-ce-jie-xi-shu-yu-shi-jue-jie-he-yi

Like (0)
点点的头像点点
Previous 2小时前
Next 2026年3月22日 下午6:00

相关推荐