安卓 AI Agent 屏幕理解指南:UI 树、截图还是混合证据怎么选
安卓 AI Agent 做当前屏幕任务时,应先判断需要语义结构、像素证据,还是两者结合。本文比较无障碍树与截图在证据、失败模式、成本、隐私和验证上的差异,并说明 FoneClaw 如何用受支持的屏幕信息与截图工具完成可确认的手机任务。
- 安卓 AI Agent 屏幕理解应按任务选择证据:结构化控件和状态优先看 UI 树,颜色、图像、地图、图表和自绘界面需要截图,复杂场景采用混合判断。
- 无障碍树能提供文本、描述、角色、状态、动作、焦点、边界和层级等语义信息,但节点可能缺失、过期、重复、命名不清或与真实画面不一致。
- 截图提供像素证据,适合视觉定位和布局判断;它也会带来更高处理成本、更多隐私暴露,并受方向、遮挡、动画和截图时机影响。
- FoneClaw 把当前屏幕信息、跨应用读取和用户选择的截图放进可见流程:先检查证据,再提出动作,必要时请求确认,执行后重新验证屏幕状态。
UI 树、截图还是两者都用
安卓 AI Agent 屏幕理解的直接答案是:能用可靠语义节点解决的任务,先用 UI 树;需要判断真实视觉内容、空间关系或自绘界面时,再使用截图;当任一证据不完整时,把无障碍树与截图结合起来校准。无障碍树提供的是层级化语义数据,截图提供的是当前屏幕的像素证据,正确路线取决于屏幕本身和用户要完成的动作。
例如,用户说“点开设置里的 Wi-Fi”,如果屏幕上有清楚的文本、可点击节点和层级关系,UI 树通常更直接,也更容易说明目标控件。用户说“帮我看这张图表里哪个柱子最高”或“地图上蓝色路线旁边那个按钮是什么”,像素信息就更关键。还有一些任务看似简单,却需要两种证据同时出现:节点告诉我们按钮的可点击状态,截图确认它在视觉上没有被弹窗遮挡。
我们在 FoneClaw 里处理当前屏幕任务时,不把“输入越多”当作默认答案。截图会增加处理成本,也可能捕捉到屏幕上的个人内容;UI 树更紧凑,却会受应用实现质量影响。更稳的判断方式是先问:这个任务需要识别控件语义,还是需要看见画面?如果答案不确定,就先读取结构化状态,发现缺口后再获取必要的视觉证据。
Android 无障碍树能看见什么
Android 官方文档把 accessibility service 放在辅助使用场景中:它可以在用户启用并授权后接收无障碍事件、检查窗口内容,并在合适配置下代表用户执行交互。屏幕内容通常以层级结构呈现,节点由 AccessibilityNodeInfo 表示。对 AI Agent 来说,这类结构能把“屏幕上有什么控件”转换成更可审阅的语义材料。
有价值的节点信息包括文本、content description、控件类型、是否可点击、是否选中、是否获得焦点、是否可编辑、支持的动作、父子层级、窗口边界和屏幕坐标。用户让 Agent “打开刚才那条通知”“勾选仅 Wi-Fi 下载”“找到提交按钮”时,这些字段可以帮助模型判断目标、状态和下一步动作。与单纯看图相比,语义节点经常更紧凑,也更容易与可执行动作关联。
不过,无障碍树不是屏幕的完整复制。第一,部分自绘界面、游戏、图表或 WebView 内容可能只暴露很少语义。第二,同一个词可能出现在多个节点里,目标需要结合层级、边界和上下文判断。第三,节点状态可能在动画、加载、滚动或弹窗出现后快速变化。第四,某些应用提供的描述可能过于笼统,例如多个按钮都叫“更多”。第五,视觉上可见的颜色、图片、角标、遮挡和图形关系,可能并没有被节点表达出来。
Android 的无障碍服务指南也提醒我们,窗口内容读取和手势能力需要明确配置与用户启用。我们把它理解为用户授权的辅助能力,而不是绕过应用和系统边界的通用自动化捷径。需要完整理解 Android 手机 Agent 从意图到确认、执行和验证的通用闭环,可以继续看AI 智能体控制 Android 手机:从自然语言意图到确认、执行和验证。
什么时候必须看截图像素
截图记录的是屏幕在某一刻的像素。它没有天然知道哪个控件“可点击”,也不会告诉模型某个按钮背后的系统含义;它擅长的是展示视觉事实。对多模态安卓手机 Agent 来说,截图适合补足 UI 树无法表达或表达不够稳定的部分。
典型场景包括图片、海报、验证码样式提示、图表、地图、路线、商品卡片、相机预览、自绘画布、主题颜色、红点角标、按钮遮挡、弹窗位置和视觉布局。用户问“这个页面上哪个套餐更便宜”“右上角是否有未读标记”“图里的二维码旁边写了什么”时,UI 树可能拿不到完整事实,截图才是关键证据。
截图也有自己的失败模式。第一,OCR 识别出的文字不一定等于可操作控件,尤其在图片文字和按钮文字混在一起时。第二,坐标受屏幕尺寸、系统缩放、横竖屏、状态栏、导航栏和悬浮窗影响。第三,动画、加载和滚动会让截图时刻与执行时刻不一致。第四,弹窗、键盘、隐私遮罩或系统浮层可能挡住真实目标。第五,截图会暴露更多可见内容,包括消息、联系人、账户名、位置或健康信息,因此应按任务需要最小化使用。
我们把截图看作证据,而不是证明。它可以告诉 Agent “画面里有什么”和“它大概在哪里”,但不能单独证明背后状态已经更新,也不能替代权限、确认和结果验证。尤其是表单、付款、发送消息、删除内容这类动作,视觉定位之后仍要停在可检查的提交前状态。更深入的 Android 表单场景,可看Gemini 表单填写:Android AI 自动填表能做什么,哪些地方必须自己确认,那里会把字段、预览和最终确认拆得更细。
按证据质量比较 UI 树与截图
在产品实现里,UI 树和截图不是竞争关系,而是两种不同证据。UI 树偏语义、状态和动作,截图偏视觉、布局和像素。下面的矩阵适合在设计或测试移动 Agent 视觉定位时快速判断该用哪一路。
| 评估维度 | UI 树更擅长 | 截图更擅长 | 采用前要确认 |
|---|---|---|---|
| 文本与语义 | 读取节点文本、描述、角色和可执行动作 | 识别图片中文字或未暴露为节点的内容 | 文本是否唯一,是否与用户目标一致 |
| 状态判断 | 判断 checked、focused、enabled、selected 等节点状态 | 观察颜色、角标、遮挡、加载动画和视觉提示 | 状态是否刚刚变化,是否需要重新读取 |
| 空间定位 | 使用节点 bounds 和层级定位目标 | 判断图像、地图、图表和自绘区域里的相对位置 | 屏幕方向、缩放、浮层和坐标是否稳定 |
| 成本与延迟 | 通常更紧凑,适合快速筛选候选控件 | 信息量更大,适合多模态判断但处理更重 | 视觉输入是否真正回答了未解决问题 |
| 隐私暴露 | 暴露结构化文本和控件信息 | 捕捉当前可见画面中的更多个人内容 | 是否可用更小范围、更少截图或用户选择的图片 |
| 验证价值 | 适合确认目标控件和状态字段 | 适合确认画面变化、视觉结果和遮挡情况 | 执行后是否用新状态重新检查 |
这张表也能解释为什么“只看一种输入”容易出错。UI 树可能把控件名称说清楚,却看不到一层浮窗挡住了按钮;截图能看到浮窗,却不知道哪个底层节点对应提交动作。AI Agent 要做的是把证据和行动拆开:先找目标,再确认目标,再执行受支持动作,最后用新的状态验证结果。
Android 的UI Automator 测试指南展示了层级、可见文本、content description、资源标识和显式等待在测试中的价值。我们引用它是为了说明层级化定位和等待状态的重要性,不把它等同于 FoneClaw 的内部实现。当前开源移动 Agent 生态中,也能看到自然语言、设备状态和视觉交互组合的方向,例如 MobileRun 移动 Agent 项目;具体产品仍应按各自权限、工具和执行边界评估。
构建语义加视觉的混合流程
混合流程的目标不是把 UI 树和截图都塞给模型,而是按问题逐步取证。我们在 FoneClaw 的当前屏幕任务里采用的判断思路,可以概括为:先检查语义,再发现缺口,必要时捕捉视觉证据,随后对齐、提议、确认、执行和验证。
- 读取当前语义状态。先查看屏幕可见节点、文本、描述、可点击状态、层级和边界。很多设置切换、列表选择、按钮点击和表单草稿都能从这里建立候选目标。
- 判断证据缺口。如果节点缺少文本、多个候选重名、屏幕包含图像或自绘内容,或者用户的问题本身依赖颜色、位置、图表和地图,就标记为需要视觉证据。
- 只捕捉必要画面。截图应服务一个明确问题,例如“哪个卡片处于选中状态”或“弹窗是否遮挡按钮”。用户选择的截图、当前屏幕截图和历史图片应在任务中被清楚区分。
- 对齐节点与像素。把节点 bounds、屏幕尺寸、方向、截图尺寸和可见区域放在一起,避免把截图中的视觉位置误配到另一个控件。
- 处理冲突。如果 UI 树显示按钮可用,但截图显示它被弹窗挡住;或者截图中有两个类似按钮,节点名称也不清楚,Agent 应停下来说明不确定点,向用户询问或建议手动接手。
- 提出可审阅动作。在点击、输入、保存、发送、删除或修改设置前,把目标、内容、权限和预期结果显示给用户。影响越大的动作,确认越要具体。
- 执行后重新读取状态。当前屏幕可能在检查和操作之间变化,工具返回成功也不等于用户目标已经完成。执行后应重新读取 UI 树或截图,确认结果与预期一致。
这个流程把“看见”和“行动”分开。屏幕理解阶段只回答当前证据支持什么;执行阶段只做用户允许、工具支持、目标明确的动作;验证阶段用新状态检查结果。这样即使某一步失败,也能把失败位置说清楚,而不是给出含糊的完成反馈。
权限边界同样属于混合流程的一部分。截图权限、无障碍权限、输入权限、通知权限和目标应用权限不是一回事。需要深入理解沙盒、手机权限和 Agent 边界,可以阅读AI Agent 沙盒与手机权限:安全 Agent 为什么仍然需要边界。我们在 FoneClaw 中持续强化的方向,是让每一种能力都围绕具体任务出现,并让用户知道它正在被用来解决哪一个问题。
FoneClaw 如何处理当前屏幕任务
FoneClaw 是 Android 手机 Agent 运行时:用户可以从免费默认模型开始,也可以配置兼容模型;模型负责理解自然语言和规划步骤,FoneClaw 通过受支持的 Android 工具执行并反馈结果。针对当前屏幕任务,我们把结构化屏幕信息、跨应用屏幕读取和截图证据放进同一套可见控制流程,而不是把视觉能力包装成对所有应用的通用接管。
在受支持场景里,FoneClaw 可以先使用 get_screen_info 获取当前屏幕结构,或使用 cross_app_read_screen 理解跨应用可见内容;当用户明确需要视觉证据时,可以通过 screenshot_take 捕捉当前屏幕,或用 screenshot_open 打开用户选择的截图继续分析。我们也会保留图片尺寸、文件引用和后续重读路径,让多模态判断更容易和真实屏幕状态对应。
一个具体例子是用户在某个设置页说:“帮我看看哪个开关是通知提醒。”如果 UI 树里有清楚文本和开关状态,FoneClaw 会优先用结构化信息定位;如果页面是自定义图形、开关文字被截断,或者有浮层遮挡,我们会让截图参与判断。下一步如果涉及修改设置,FoneClaw 会展示要改的对象和预期结果,再请求确认。执行后,它会重新检查屏幕状态,而不是只相信一次点击。
当前屏幕入口也会影响体验。悬浮助手让用户在其他应用里发起“看这个页面”的请求,但它同样需要清楚说明当前上下文、可用工具和确认点。需要了解这类入口设计,可以读Android 悬浮 AI 助手与当前屏幕:从提问到可控操作的完整指南。
FoneClaw 的能力范围可以在FoneClaw 功能页面查看,其中包含 100+ built-in tools 的当前产品能力概览;准备在自己的设备上验证时,可从FoneClaw 下载页面选择适合的安装方式。实际可用动作会受到设备、系统、应用状态、用户授权和所选任务的影响。
用可逆任务测试屏幕理解
测试安卓 AI Agent 屏幕理解,不要从高影响动作开始。选择一个无害、可逆、结果可见的任务,例如在设置页识别某个开关但先不修改,或在笔记应用里定位“新建”按钮并创建一条可删除的测试笔记。测试应在你真实使用的 Android 版本、设备、应用和显示设置上进行。
一个实用流程是:先写下你预期的目标和当前状态;让 Agent 只用 UI 树说明它看见了哪些候选;如果有视觉事实未解决,再添加截图;切换一次横竖屏或让页面滚动,观察它是否重新定位;中途打断一次,确认能停止;最后执行一个可撤销动作,并要求它重新读取状态来验证结果。手动接手是合理结果,尤其在目标不明确或权限不足时。
一次成功不能证明所有应用都可靠,尤其是自绘界面、游戏、地图、金融、支付和账号设置页面。更正式的评估应覆盖多应用、多状态、权限弹窗、网络变化、用户中断和恢复路径;需要系统化设计测试集时,可以继续看安卓手机 Agent 基准测试指南:2026 年怎样评估可靠性、安全和恢复。对日常用户来说,最好的第一步是让 Agent 解释证据来源,再让它完成一个能撤销的小任务。