-
Notifications
You must be signed in to change notification settings - Fork 840
Open
Description
问题描述
执行任务「打开电话查看最近通话记录」时,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) - 区分系统/第三方:对系统应用给出「无法找到/无法启动」等更合理的提示,而非「请安装」
环境
- 设备:Pixel 4a
- MacOS
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels