Skip to content

Agent 无法正确识别并打开目标应用,陷入重复循环 #27

@Holidayrabbit

Description

@Holidayrabbit

问题描述

在执行「打开谷歌浏览器并搜索今天的ai新闻」任务时,Agent 无法正确找到并打开 Google Chrome,反复点击错误的应用图标(如 EnjoyFit、FILMIX),陷入 press_home / press_back → 点击「Chrome」→ 进入错误应用 → 再次 press_home 的循环,直至达到最大步数。

复现步骤

  1. 启动 WebUI:python -m mobile_use.webui
  2. 连接 Android 设备,配置 VLM
  3. 输入任务:「打开谷歌浏览器并搜索今天的ai新闻」
  4. 观察 Agent 执行过程

实际行为

  • Step 0–1:Agent 认为点击了 Chrome 图标,实际进入 EnjoyFit 登录页
  • Step 2–4press_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.pyparse_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.pyutils/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

建议改进

  1. 修复坐标缩放:在 ReActAgent 中正确对 coordinate / coordinate2 做分辨率缩放
  2. 增强失败反馈:在 prompt 或 observation 中显式说明「上一步操作导致进入了 X 应用,而非目标应用」
  3. 支持按包名启动:对「打开某应用」类任务,优先使用 open_app(package_name) 或类似能力
  4. 增加重复检测:若连续多次 press_home + 点击后仍进入同一错误应用,可触发 call_user 或切换策略(如滑动桌面、使用应用抽屉搜索)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions