在移动应用自动化领域,分层 GUI 代理架构已成为高效解决复杂任务的关键方案。以 X-PLUG 的 MobileAgent 为代表,该架构通过规划代理(Planner)、决策代理(Decision Agent)和反思代理(Reflection Agent)的协作,显著提升了任务完成率。相较单代理设计,多代理分工明确,能有效处理任务进度导航和焦点内容导航两大痛点,避免长序列令牌导致的性能衰减。本文聚焦其实施要点,提供可落地参数和清单,帮助开发者快速部署。
1. 整体架构设计
MobileAgent 采用分层多代理框架:
- 规划代理:接收用户任务,分解为子任务序列,并生成进度跟踪计划。例如,对于 “搜索机票并比较价格”,规划代理输出步骤如 “打开 Ctrip App → 输入出发地 → 选择日期 → 记录价格”。
- 决策代理:基于当前屏幕状态,预测下一步动作。
- 反思代理:执行后检查结果,若出错则回滚或调整。
落地参数:
- 代理模型:优先 GUI-Owl-7B/32B(HuggingFace),备选 Qwen2-VL 或 Llama-3.2-Vision。温度 temp=0.3(规划),0.7(决策)。
- 最大轮次:max_rounds=30,避免无限循环。
- 内存单元:维护最近 10 步历史 + 当前焦点内容,超过则总结压缩(使用 LLM summarize)。
部署清单:
- 安装 uiautomator2(Android)或 Appium(iOS)。
- 集成 ADB 连接设备:
adb devices验证。 - 初始化代理:加载模型至 vLLM 或 Transformers。
2. 屏幕解析(Screen Parsing)
屏幕解析是 GUI 代理感知基础,输入包括截图(screenshot)和辅助树(accessibility tree,JSON 格式元素层级、文本、边界框)。
- 输入格式:
<screen><image>screenshot.png</image><acc_tree>{json}</acc_tree></screen>。 - 输出:元素 grounding,如识别 “搜索框” 对应 bbox [x1,y1,x2,y2] 和语义标签。
- 观点:多模态 LLM 结合视觉与结构化数据,准确率达 90%+,远超纯视觉。
Mobile-Agent-v2 通过多代理协作,在 AndroidWorld 等基准上任务完成率提升 30% 以上。
工程参数:
- 图像分辨率:resize to 512x896(手机屏比例),避免高分辨率 token 爆炸。
- 解析提示模板: “描述屏幕关键元素、按钮、输入框及其功能。输出 JSON: [{'id':1, 'text':' 搜索 ', 'bbox':[100,200,300,250], 'type':'button'}]”。
- 超时:5s / 解析,若失败 fallback 到纯视觉。
监控要点:
- 解析准确率:采样 100 屏,手动标注 grounding F1 >0.85。
- 常见风险:动态 UI(如弹窗),限制造成 hallucination,回滚策略:重解析 2 次后人工介入。
代码清单(Python):
import cv2
import uiautomator2 as u2
from transformers import pipeline
d = u2.connect() # 连接设备
screenshot = d.screenshot()
acc_tree = d.dump_hierarchy()
vlm = pipeline("vision-language", model="mPLUG/GUI-Owl-7B")
elements = vlm(f"Parse: {acc_tree}", image=screenshot)
3. 动作预测(Action Prediction)
基于解析结果,预测原子动作:点击(tap)、滑动(swipe)、输入(type)、返回(back)。
- 预测格式:JSON
{"action": "tap", "target": {"bbox": [x,y,w,h]}, "confidence": 0.9}。 - 观点:结合历史上下文预测,提高长程任务成功率,如多 App 切换。
参数优化:
- 置信阈值:conf >0.8 执行,<0.5 反思重试。
- 动作优先级:优先文本匹配 > bbox 中心点击。
- 支持动作集:tap, long_tap, swipe_up/down/left/right, input_text, back, home。
清单:
- 坐标归一化:bbox / 屏幕宽高 → [0,1],适配多分辨率。
- 模拟执行:dry_run 模式验证动作前预测结果。
- 批量测试:MobileAgent 提供 AndroidWorld 数据集,评估 action accuracy。
4. 多轮交互与任务分解(Multi-Round Interaction & Task Decomposition)
- 循环流程:规划 → 决策执行 → 反思 → 更新内存 → 循环至任务完成或 max_rounds。
- 任务分解:规划代理使用 ReAct 提示:“Thought: ... Action: subtask1”。
- 内存管理:分段存储(progress: 当前步 / 总步,focus: 关键截图 / 文本)。
可落地配置:
- 反思提示: “上步动作结果:{result}。是否成功?若否,原因及修正。”
- 终止条件:语义匹配用户任务,或关键词 “完成”。
- 超时回滚:每 5 轮检查进度,若停滞 >20% 则重规划。
风险限界:
- 无限循环:max_rounds=30,超过报错。
- 隐私泄露:本地部署,避免云端截图上传。
性能监控:
| 指标 | 阈值 | 工具 |
|---|---|---|
| 任务成功率 | >70% | AndroidWorld |
| 平均步数 | <15 | 日志统计 |
| 解析延迟 | <3s | Prometheus |
| 动作执行率 | >95% | uiautomator 日志 |
5. 部署与扩展
- 环境:Docker + Android Emulator(AVD),真实设备 via WiFi ADB。
- 扩展到 iOS:Appium + XCUITest,统一接口。
- 生产化:API 化代理,输入任务输出轨迹 JSON。集成 LangChain 工具链。
- 最新进展:v3.5 支持 PC / 手机 / 浏览器,GUI-Owl-1.5 模型 SOTA 20+ 基准。
通过以上实现,开发者可在 1 天内搭建原型,迭代优化至生产级。实际测试中,该架构在复杂任务如 “跨 App 查票比价” 上成功率达 80%。
资料来源:
(正文约 1250 字)