怎么设计一个能看懂屏幕并操作 GUI 界面的视觉 Agent?
先这样答
GUI Agent 的每个执行循环分四步。第一步感知:截取屏幕图像,用视觉语言模型识别 UI 元素,包括按钮、输入框、菜单和文字,输出 UI 元素树或坐标标注。第二步意图理解:用户说「在购物 App 搜索无线耳机」,Agent 把它分解为打开应用、定位搜索框、输入关键词、点击搜索的子任务序列。第三步动作执行:把决策转成 GUI 操作原语,click 坐标、type 文本、scroll 方向、swipe 滑动。第四步状态验证:执行后再次截屏,确认操作生效,比如输入框里出现了文字、页面发生了跳转,然后进入下一轮循环。
三个核心难点要主动讲。动态页面:加载动画、弹窗会干扰元素识别,需要等待页面稳定的机制。坐标精度:视觉模型预测的点击坐标有偏移,点错位置整个任务就断了,可以用元素框中心点校正,或者先放大目标区域再精确定位。误差累积:长任务链里每步的识别错误会向后传播,所以状态验证环节不能省,发现异常要能重试或回退。
训练这类模型的数据是「指令加操作对」:用户指令、对应截图、标注的操作序列三者配对。来源包括人工标注操作录像、模拟环境自动生成、线上用户确认过的成功操作回流。
面试官会怎么追问
- 「怎么验证一次点击真的生效了?」 点击后截屏对比。可以查目标元素状态变化,也可以看页面 DOM 或界面整体哈希变化。验证失败要走重试逻辑,连续失败要上报而不是硬闯下一步。
- 「坐标偏移怎么兜底?」 两级定位:先让模型给出目标元素的大致区域,再在小区域内做二次精确检测取中心点。对按钮这类规则形状,还可以叠加传统目标检测。
- 「任务中途弹了广告弹窗怎么办?」 状态验证环节识别到意外弹窗,把「关闭弹窗」插入为临时子任务,完成后回到原计划继续。这要求 Agent 的规划是可中断、可恢复的,不是一次性输出死计划。
回答的坑
- 只讲模型能力,不讲状态验证和异常恢复。工程上后者才是可用性的分水岭。
- 忽略多步误差累积问题,仿佛每步都完美执行。面试官会追问失败率随步数的变化。
同系列的题
—— 本题完 ——