-
Notifications
You must be signed in to change notification settings - Fork 7
Agent 无法正确识别并打开目标应用,陷入重复循环 #27
Copy link
Copy link
Open
Description
问题描述
在执行「打开谷歌浏览器并搜索今天的ai新闻」任务时,Agent 无法正确找到并打开 Google Chrome,反复点击错误的应用图标(如 EnjoyFit、FILMIX),陷入 press_home / press_back → 点击「Chrome」→ 进入错误应用 → 再次 press_home 的循环,直至达到最大步数。
复现步骤
- 启动 WebUI:
python -m mobile_use.webui - 连接 Android 设备,配置 VLM
- 输入任务:「打开谷歌浏览器并搜索今天的ai新闻」
- 观察 Agent 执行过程
实际行为
- Step 0–1:Agent 认为点击了 Chrome 图标,实际进入 EnjoyFit 登录页
- Step 2–4:
press_back/press_home返回主屏 - Step 5–7:再次点击「Chrome」,实际进入 FILMIX
- Step 8–16:持续重复:
press_home→ 点击「Chrome」→ 进入 FILMIX →press_back/press_home
Agent 始终认为自己在点击 Chrome,但实际打开的是其他应用,且未根据失败结果调整策略。
可能原因分析
1. 坐标缩放逻辑错误(ReActAgent / SingleAgent)
mobile_use/agents/agent_react.py 中 parse_reason_and_action 的坐标缩放条件有误:
# 当前代码 (line 38-45)
for k, v in params.items():
if k in ['click', 'long_press', 'swipe']: # params 的 key 实际是 'coordinate', 'coordinate2'
try:
x = round(v[0] / size[0] * raw_size[0])
y = round(v[1] / size[1] * raw_size[1])
params[k] = (x, y)click(coordinate=[x,y]) 解析后 params 的 key 为 coordinate,而非 click,因此上述条件永远不成立,坐标从未被缩放到设备分辨率。VLM 基于缩放后的截图输出坐标,但执行时未做转换,可能导致点击位置偏移。
建议参考 agent_qwen.py 或 utils/proactive_exploration/utils.py 中的实现,改为检查 coordinate / coordinate2 等参数名:
if k in ['coordinate', 'coordinate2']:2. 图标识别与布局差异
- VLM 可能将其他彩色圆形图标误判为 Chrome
- 不同设备/主题下图标位置、大小、排列不同,纯坐标点击不稳定
3. 失败反馈未被有效利用
- 系统提示中有「当前前后操作的屏幕无响应时,你需要避免在下一步再执行相同的操作」
- 但未明确告知「上次点击打开了错误应用」,Agent 难以从「点击后进入 FILMIX」推断出「上次点击位置错误」
- 缺少对「目标应用是否已打开」的显式校验
4. 缺少更可靠的启动方式
- 当前主要依赖
click点击图标 - 若支持
open_app/open(package_name)等按包名启动,可避免图标识别和坐标问题
环境信息
- 项目:mobile-use (MadeAgents/mobile-use)
- Agent 类型:SingleAgent / ReAct
- 任务:打开谷歌浏览器并搜索今天的ai新闻
- 最大步数:30
- 设备:Pixel 4a
建议改进
- 修复坐标缩放:在 ReActAgent 中正确对
coordinate/coordinate2做分辨率缩放 - 增强失败反馈:在 prompt 或 observation 中显式说明「上一步操作导致进入了 X 应用,而非目标应用」
- 支持按包名启动:对「打开某应用」类任务,优先使用
open_app(package_name)或类似能力 - 增加重复检测:若连续多次
press_home+ 点击后仍进入同一错误应用,可触发call_user或切换策略(如滑动桌面、使用应用抽屉搜索)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels