Skip to content

(mobile agent v3.5) [Bug] Agent 无法识别和打开系统应用(如电话),且 Click 失败后错误提示安装 #269

@Holidayrabbit

Description

@Holidayrabbit

问题描述

执行任务「打开电话查看最近通话记录」时,Agent 表现异常:

  1. STEP 0 & 1:VLM 正确识别到 Phone 图标并输出 click 动作,坐标 [116, 706]
  2. STEP 2:在 click 似乎未生效后,Agent 改为 open 动作,请求打开 "Phone"
  3. APP RESOLVER:LLM 返回 app: "",理由为「电话/Phone 不在已安装应用列表中」
  4. 错误提示[ACTION REQUIRED] Please install the app: Phone

电话是系统预装应用,不应被要求「安装」。

复现步骤

cd mobile_use
uv run run_gui_owl_1_5_for_mobile.py --instruction "打开电话查看最近通话记录"

根因分析

1. 应用列表不包含系统应用

utils.pyget_package_name(all_packages=False) 默认使用 pm list packages -3,只返回第三方应用,系统应用(电话、设置、联系人等)被排除。

# utils.py:156-163
def get_package_name(self, all_packages=False):
    flag = "" if all_packages else " -3"  # -3 仅第三方
    cmd = f"{self.adb_path}{self._device_flag}shell pm list packages{flag}"

2. packages.py 缺少电话/拨号器映射

packages.py 中未包含常见拨号器包名,如:

  • com.android.dialer (AOSP)
  • com.google.android.dialer (Google)
  • com.miui.dialer (小米)
  • 等厂商定制包名

因此 NAME_PACKAGE_DICT.get("Phone", [])NAME_PACKAGE_DICT.get("电话", []) 均为空。

3. Click 与 Open 的衔接逻辑缺失

当 VLM 在屏幕上识别到图标并执行 click 时,若 click 未生效(坐标缩放、延迟、界面变化等),Agent 会 fallback 到 open。但 open 依赖「已安装应用列表 + 包名映射」,两者都不包含系统应用,导致无法打开。

4. 错误提示不合理

系统应用无法通过「安装」获得,提示 Please install the app: Phone 对用户无意义。

建议改进

  1. 支持系统应用get_package_name() 增加选项或默认包含常见系统应用(电话、设置、联系人、相机等)
  2. 扩展 packages.py:补充电话/拨号器及常见系统应用的包名映射
  3. 优化 open 失败处理:当解析不到应用时,可尝试通过 adb shell am start + Intent 启动(如 android.intent.action.DIAL
  4. 区分系统/第三方:对系统应用给出「无法找到/无法启动」等更合理的提示,而非「请安装」

环境

  • 设备:Pixel 4a
  • MacOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions