问题描述
执行任务「打开电话查看最近通话记录」时,Agent 表现异常:
- STEP 0 & 1:VLM 正确识别到 Phone 图标并输出
click 动作,坐标 [116, 706]
- STEP 2:在 click 似乎未生效后,Agent 改为
open 动作,请求打开 "Phone"
- APP RESOLVER:LLM 返回
app: "",理由为「电话/Phone 不在已安装应用列表中」
- 错误提示:
[ACTION REQUIRED] Please install the app: Phone
电话是系统预装应用,不应被要求「安装」。
复现步骤
cd mobile_use
uv run run_gui_owl_1_5_for_mobile.py --instruction "打开电话查看最近通话记录"
根因分析
1. 应用列表不包含系统应用
utils.py 中 get_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 对用户无意义。
建议改进
- 支持系统应用:
get_package_name() 增加选项或默认包含常见系统应用(电话、设置、联系人、相机等)
- 扩展 packages.py:补充电话/拨号器及常见系统应用的包名映射
- 优化 open 失败处理:当解析不到应用时,可尝试通过
adb shell am start + Intent 启动(如 android.intent.action.DIAL)
- 区分系统/第三方:对系统应用给出「无法找到/无法启动」等更合理的提示,而非「请安装」
环境
问题描述
执行任务「打开电话查看最近通话记录」时,Agent 表现异常:
click动作,坐标[116, 706]open动作,请求打开 "Phone"app: "",理由为「电话/Phone 不在已安装应用列表中」[ACTION REQUIRED] Please install the app: Phone电话是系统预装应用,不应被要求「安装」。
复现步骤
根因分析
1. 应用列表不包含系统应用
utils.py中get_package_name(all_packages=False)默认使用pm list packages -3,只返回第三方应用,系统应用(电话、设置、联系人等)被排除。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对用户无意义。建议改进
get_package_name()增加选项或默认包含常见系统应用(电话、设置、联系人、相机等)adb shell am start+ Intent 启动(如android.intent.action.DIAL)环境