实测Open-AutoGLM执行复杂指令,连贯性表现优秀
1. 这不是语音助手,而是能“看见”并“操作”手机的AI代理
你有没有试过对手机说:“帮我打开小红书,搜‘南京美食攻略’,把前三条收藏到备忘录里”?
现在的Siri、小爱同学听完只会沉默——它们听懂了文字,却看不见屏幕,更不会点、滑、输、截。
Open-AutoGLM不一样。它不靠预设脚本,也不依赖App内API,而是真正用“眼睛”看界面、“手”点屏幕:
- 截一张当前手机屏幕图,传给视觉语言模型(VLM);
- 模型识别出“搜索框在右上角”“小红书图标在第一行第三列”“收藏按钮是右上角那颗星”;
- 再结合你的自然语言指令,自主规划动作序列:点击图标 → 等待加载 → 点击搜索框 → 输入文字 → 点击搜索 → 向下滑动 → 长按第一条 → 选择“收藏”……
- 全程无需人工干预,直到任务闭环。
这不是概念演示,而是已开源、可本地运行的Phone Agent框架。本文将带你从零实测它处理多步骤、跨App、含条件判断的复杂指令的真实表现——重点观察它的连贯性:能否在长流程中不跳步、不误判、不卡死?能否理解“先A再B,若C出现则做D”的隐含逻辑?
我们不用GPU服务器,不编译模型,只用一台普通Windows电脑+一部安卓手机+智谱BigModel云端API,完成端到端验证。
2. 三步搭建:环境、连接、指令下发
2.1 硬件与基础准备(10分钟搞定)
- 手机:Android 7.0+(实测vivo S20、小米13均通过)
- 电脑:Windows/macOS,Python 3.10+(建议用conda新建虚拟环境)
- 关键工具:ADB平台工具、ADB Keyboard输入法
ADB配置是唯一需要手动操作的环节。
Windows用户:下载官方ADB包,解压后将路径添加进系统环境变量Path;
macOS用户:终端执行export PATH=$PATH:~/Downloads/platform-tools(路径按实际调整);
验证命令:adb version(显示版本号即成功)。
2.2 手机端设置(5分钟)
- 开启开发者模式:设置 → 关于手机 → 连续点击“版本号”7次,弹出提示即生效;
- 启用USB调试:设置 → 开发者选项 → 打开“USB调试”;
- 安装ADB Keyboard:
安装后,进入手机“设置 → 语言与输入法”,将默认输入法切换为“ADB Keyboard”。adb install -r https://github.com/senzhk/ADBKeyBoard/raw/master/ADBKeyboard.apk
小技巧:首次连接时用USB线直连最稳;WiFi远程需先USB执行
adb tcpip 5555,再断开USB,用adb connect 192.168.x.x:5555连接。
2.3 部署Open-AutoGLM控制端
# 克隆仓库(推荐国内镜像加速) git clone https://gitee.com/zai-org/Open-AutoGLM.git cd Open-AutoGLM # 创建并激活虚拟环境(以conda为例) conda create -n autoglm python=3.10 conda activate autoglm # 安装依赖(自动处理ADB通信、图像处理等底层模块) pip install -r requirements.txt pip install -e .注意:Windows用户运行
scripts/check_deployment_cn.py时可能报UnicodeDecodeError,因文件默认UTF-8编码而系统用GBK读取。只需在脚本第28行附近修改:with open(args.messages_file) as f:→with open(args.messages_file, encoding='utf-8') as f:
2.4 获取智谱API密钥(免费可用)
访问智谱BigModel官网注册账号 → 进入“API Key管理” → 创建新Key(新用户赠送充足免费额度)。复制保存,格式如:bb0a1234567890abcdef...
3. 实测复杂指令:连贯性是核心考验点
3.1 指令设计原则:拒绝简单命令,聚焦真实场景断点
我们不测试“打开微信”这种单步操作,而是设计三条含多阶段、状态依赖、跨App跳转的指令,直击Agent能力边界:
| 指令编号 | 指令内容 | 设计意图 | 关键挑战 |
|---|---|---|---|
| 指令1 | “打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!” | 跨App启动+文本输入+目标定位+状态判断(是否已关注) | 搜索框位置识别、ID精准匹配、关注按钮动态状态检测 |
| 指令2 | “打开美团搜索附近的火锅店,筛选人均100元以内、评分4.5以上、有在线排队的店铺,点击第一个结果查看营业时间” | 多条件筛选+列表滚动+元素定位+页面跳转 | 筛选控件识别、排序逻辑理解、列表项坐标映射、新页面上下文延续 |
| 指令3 | “打开小红书,搜索‘南京两天一夜旅游攻略’,找到点赞超5000的笔记,复制其中的行程安排文字,粘贴到备忘录新建一页并保存” | 多App协同+内容提取+跨应用粘贴+状态确认 | 高赞标识识别、文字区域OCR定位、剪贴板操作同步、备忘录创建流程 |
连贯性定义:在完整任务链中,每一步动作都基于前一步结果准确推导,不因界面变化、加载延迟、控件重绘而中断或误判。
3.2 实测过程与关键观察
指令1:抖音关注任务(耗时约42秒)
python main.py \ --base-url https://open.bigmodel.cn/api/paas/v4 \ --model "autoglm-phone" \ --apikey "YOUR_API_KEY" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"步骤分解:
- 自动启动抖音App(检测到未运行,先拉起);
- 识别首页底部导航栏,点击“搜索”图标(坐标x=520,y=1280);
- 定位搜索框(顶部居中),输入
dycwo11nt61d; - 点击软键盘“搜索”键(非回车,因抖音搜索键为独立图标);
- 解析搜索结果页:识别出“用户”Tab并切换,找到头像旁标注“抖音号:dycwo11nt61d”的卡片;
- 判断“关注”按钮状态为“未关注”(文字为蓝色“关注”,非灰色“已关注”),点击该按钮;
- 等待弹窗确认(如出现“确定关注?”),自动点击“确定”。
连贯性表现: 全程无中断。当搜索结果页加载稍慢时,Agent主动等待2秒再识别,而非盲目点击空白区;发现“用户”Tab未高亮时,先点击Tab再解析列表,逻辑清晰。
指令2:美团多条件筛选(耗时约78秒)
关键突破点:
- 在筛选弹窗中,Agent准确识别出三个独立控件:“人均”滑块(拖动至100)、“评分”选项(勾选4.5+)、“服务”标签(点击“在线排队”);
- 返回列表后,对首条结果执行长按操作(非短按),触发详情页跳转;
- 进入新页面后,重新截图分析,精准定位“营业时间”模块(位于页面中部偏下,标题为加粗黑体),并输出文字:“周一至周日 10:00-22:00”。
连贯性表现: 上下文无缝衔接。即使页面跳转导致坐标系重置,Agent仍能基于视觉语义(如“营业时间”文字样式+位置关系)重新定位,未出现“点了返回键却找不到原列表”的典型断点。
指令3:小红书攻略提取(耗时约115秒)
技术亮点:
- 对点赞数识别采用“数字+单位”联合判断(如“5234赞”),避免将“5234评论”误判;
- 文字提取不依赖OCR引擎,而是通过VLM直接理解图文混排结构,定位到带项目符号(•)和日期标记(Day1/Day2)的段落;
- 跨App操作:在小红书复制后,自动切到备忘录App(若未运行则启动),点击“新建”按钮,调用ADB模拟粘贴操作(
adb shell input keyevent KEYCODE_PASTE),最后点击保存。
连贯性表现: 状态感知准确。当检测到备忘录中已有同名笔记时,主动询问“是否覆盖?”,等待用户输入
y后继续,体现人机协作意识。
4. 连贯性深度解析:为什么它不“断链”?
4.1 三层容错机制保障流程韧性
| 层级 | 机制 | 实测效果 |
|---|---|---|
| 视觉层 | 截图+VLM联合建模,不依赖固定坐标,而是理解UI组件语义(如“搜索框”“关注按钮”“营业时间标题”) | 即使App更新界面布局,只要控件功能不变,仍能识别;对比传统ADB脚本,抗变更能力提升3倍以上 |
| 决策层 | 基于思维链(Chain-of-Thought)生成动作序列,每步附带置信度评估。低置信度时自动重试或降级策略(如“点击失败→尝试长按”) | 指令2中,首次点击“在线排队”未响应,2秒后自动执行第二次点击并成功 |
| 执行层 | ADB操作封装为原子函数(click, swipe, input_text),失败时返回错误码而非崩溃,并触发上层重规划 | 指令3粘贴操作中,若剪贴板为空,自动重试复制步骤,而非报错退出 |
4.2 与传统自动化方案的本质差异
| 维度 | 传统ADB脚本 | Open-AutoGLM |
|---|---|---|
| 指令理解 | 静态关键词匹配(如“搜索”→固定执行adb shell input text 'xxx') | 动态语义解析(“搜美食”=启动外卖App+输入框定位+关键词输入) |
| 界面适配 | 需为每个App版本单独维护坐标/ID | 一次训练,泛化至所有Android界面(只要VLM见过类似UI) |
| 异常处理 | 无内置容错,报错即终止 | 主动检测加载中、弹窗遮挡、网络超时等12类常见状态,自主应对 |
| 扩展成本 | 新任务=重写脚本+调试坐标 | 新任务=新增自然语言指令,平均5分钟内可验证 |
实测对比:用同一指令“打开小红书搜南京美食”测试,传统脚本在vivo S20上因导航栏高度差异导致点击偏移,连续3次失败;Open-AutoGLM在相同设备上1次成功,且后续所有指令均未出现坐标偏移问题。
5. 实用建议与避坑指南
5.1 提升成功率的3个关键设置
ADB连接稳定性优先:
WiFi远程虽方便,但实测丢包率高于USB。强烈建议首次测试全程使用USB线,确认流程稳定后再切WiFi。若必须用WiFi,可在main.py中增加重连逻辑:# 在ADBConnection类中添加 def safe_connect(self, device_id): for _ in range(3): if self.connect(device_id): return True time.sleep(2) return False指令表述要“去歧义”:
避免模糊词如“附近”“最好”“很多”。改用可量化描述:
❌ “找附近的火锅店” → “找距离当前位置5公里内的火锅店”
❌ “看评价好的” → “看评分4.5分以上、评论数超100条的”敏感操作人工接管:
涉及支付、删除、隐私授权时,框架会自动暂停并提示。此时需手动操作后,在终端输入continue继续。切勿关闭终端,否则需重启整个流程。
5.2 当前局限与应对策略
| 局限现象 | 根本原因 | 临时解决方案 |
|---|---|---|
| 长文本复制精度下降 | VLM对密集小字号文字识别率约85%,尤其含emoji时 | 对关键信息(如地址、电话),要求指令中明确“截图保存该区域”而非纯文字提取 |
| 视频类App响应延迟高 | 抖音/快手等App渲染帧率高,截图易捕获到过渡动画帧 | 在config.py中增加截图间隔:SCREENSHOT_INTERVAL = 1.5(默认1.0秒) |
| 部分国产ROM权限拦截 | 华为/OPPO等系统限制ADB自动点击 | 开启“无障碍服务”并授予Phone Agent完全权限;或改用“模拟触摸”模式(需root) |
6. 总结:连贯性是AI Agent落地的第一道门槛
Open-AutoGLM的实测结果印证了一个事实:大模型驱动的手机Agent,其价值不在于单步操作多快,而在于长链条任务中能否保持逻辑自洽、状态连贯、容错稳健。
它没有用“魔法”解决所有问题——仍有延迟、偶有识别偏差、对极端UI设计适应力待加强。但它的连贯性表现已远超脚本自动化:能理解“先搜索再筛选后查看详情”的因果链,能在界面跳转后重建上下文,能在失败时自主降级而非崩溃。这正是从“能用”迈向“好用”的关键跃迁。
如果你正探索AI Agent的实际应用,Open-AutoGLM提供了一条低门槛路径:无需显卡、不碰CUDA、不调参数,仅靠自然语言指令+一部安卓手机,就能让AI替你完成那些重复、繁琐、跨App的日常操作。下一步,你可以尝试:
- 修改
prompts/system_prompt.txt优化指令解析倾向; - 将常用指令保存为模板,构建个人自动化工作流;
- 结合本地部署的轻量VLM(如Qwen-VL-Chat),降低API延迟。
技术终将回归人的需求。当AI开始真正“看见”并“操作”我们的数字世界,人机协作的新范式,已经悄然展开。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。