news 2026/3/21 2:43:53

亲自动手试了Open-AutoGLM,结果出乎意料

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
亲自动手试了Open-AutoGLM,结果出乎意料

亲自动手试了Open-AutoGLM,结果出乎意料

1. 这不是另一个“手机遥控器”,而是一个会自己看、想、做的AI助手

你有没有过这样的时刻:
想批量给十个抖音博主点赞,手指点到发麻;
外卖下单要反复切换APP、填地址、选口味,三分钟才完成一单;
教爸妈用新APP,语音讲了五遍,他们还是找不到“我的订单”在哪。

以前我们说“AI能写诗能画画”,但很少有人认真想过——AI能不能真正用手机?
不是模拟点击,不是预设脚本,而是像人一样:先看清屏幕上有什么,再理解当前在哪个页面,接着想清楚下一步该点哪、输什么、滑哪里,最后动手执行。

Open-AutoGLM 就是冲着这个目标来的。它不是把大模型塞进手机跑(那根本跑不动),而是用一套精巧的分工机制:

  • 手机端只负责“看”和“做”——通过ADB实时截屏、执行点击/滑动/输入;
  • 云端负责“想”和“判”——用9B视觉语言模型理解界面语义、规划操作路径、生成可执行动作序列;
  • 中间靠一个轻量级代理桥接,把自然语言指令翻译成像素坐标、控件ID、文本输入流。

我原以为这又是个概念验证项目,跑通demo就不错了。
结果,当我第一次对它说:“打开小红书,搜‘上海咖啡馆’,点开第一个笔记,截图保存”,
它真的——没卡顿、没乱点、没输错字、没点错返回键——完整走完了整条链路。
那一刻我放下咖啡杯,重新读了三遍文档。

这不是遥控,是委托。
你告诉它“要做什么”,它自己决定“怎么做”。

2. 从零连上真机:不装虚拟机、不root、不越狱的实操路径

很多教程一上来就让你租云GPU、配vLLM、调max-model-len……
但Open-AutoGLM最务实的一点是:它允许你完全本地运行,只要有一台能连电脑的安卓手机。
我用的是2019年的华为Mate 30(Android 11),全程没root,没刷机,没装模拟器。

2.1 三步确认手机已“准备好”

别跳过这一步。90%的失败都卡在这儿。

  • 开发者模式 & USB调试:设置→关于手机→版本号连点7次→返回设置→开发者选项→开启USB调试。
    注意:部分华为/小米机型还需额外开启「USB调试(安全设置)」,否则ADB识别为unauthorized。

  • ADB Keyboard必须启用:这是它能“打字”的唯一方式。
    下载ADBKeyboard.apk,安装后去「设置→语言与输入法→默认输入法」里把它设为首选。
    验证方法:在任意输入框长按,弹出“选择输入法”菜单,能看到ADB Keyboard被勾选。

  • USB线不是摆设:必须是支持数据传输的线。我试过一根纯充电线,adb devices永远显示空列表。换原装线后秒识别。

2.2 本地控制端:5分钟搭好,不用碰服务器

官方文档强调“需部署云端模型服务”,但其实——你完全可以用HuggingFace Transformers本地加载模型跑通全流程(适合验证逻辑,非生产)。
我用MacBook M2(16GB内存)+ macOS Sonoma,实测可行:

# 1. 克隆代码(别用git submodule,直接主仓库就行) git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM # 2. 创建干净环境(Python 3.10是硬性要求) pyenv install 3.10.13 pyenv local 3.10.13 pip install -r requirements.txt # 3. 安装包本身(让phone_agent模块可导入) pip install -e . # 4. 连接手机(USB直连最稳) adb devices # 确认输出类似:8A9X123456789ABC device

小技巧:如果adb devices没反应,试试adb kill-server && adb start-server,再重插USB线。Mac用户若提示“command not found”,请按文档配置PATH:export PATH=$PATH:~/Downloads/platform-tools

2.3 第一次指令:不用改代码,命令行直接试

别急着跑main.py或改examples/里的文件。先用最简方式验证通路:

python main.py \ --device-id 8A9X123456789ABC \ --base-url http://localhost:8000/v1 \ # 先占个位,后面解释 --model "dummy" \ "打开计算器,输入123加456,等于"

你可能会看到报错:“Connection refused”。别慌——这恰恰说明控制端已启动,只是模型服务还没起。
重点是:ADB连接成功、指令解析成功、动作规划模块已加载。
这就是最关键的“第一公里”打通了。

3. 真正惊艳的,是它理解界面的方式

很多自动化工具失败,不是因为不会点,而是看不懂点的是什么
比如:界面上有三个“搜索”按钮,它该点顶部的、中间的,还是底部的?
一个“登录”文字,是APP首页的入口,还是弹窗里的确认按钮?

Open-AutoGLM 的解法很聪明:它不依赖UI控件树(那需要Accessibility权限,且不同系统差异大),而是把整个屏幕当一张图来“读”

3.1 它看到的,不是像素,是语义

我截了一张小红书首页,传给它的视觉编码器,得到的不是坐标,而是这样一段结构化描述:

{ "current_app": "xiaohongshu", "page_type": "home_feed", "visible_elements": [ {"type": "search_bar", "text": "搜索小红书", "position": [120, 80, 800, 120]}, {"type": "tab_item", "text": "首页", "selected": true, "position": [50, 180, 150, 220]}, {"type": "tab_item", "text": "发现", "selected": false, "position": [200, 180, 300, 220]}, {"type": "post_card", "title": "上海10家绝美咖啡馆推荐", "author": "咖啡地图", "likes": "2.4w", "position": [50, 300, 950, 700]} ] }

注意:position是[x_min, y_min, x_max, y_max],不是单点坐标。它知道“搜索栏”是一整块区域,而不是某个按钮。
所以当你指令“点搜索框”,它不会盲目点中心,而是计算出最可能输入的位置(比如搜索栏左半区),再模拟点击。

3.2 操作规划:像真人一样“边看边想”

传统自动化是“固定流程”:点A→等页面加载→找B→点B→等→找C……
Open-AutoGLM 是“动态决策”:

  1. 截屏 → 2. 理解当前页是“小红书首页” → 3. 发现搜索栏存在 → 4. 决定先点击它(而非先滑动)→ 5. 输入“上海咖啡馆” → 6. 截屏确认键盘弹出、文字已输入 → 7. 找“搜索”按钮(在软键盘右下角)→ 8. 点击 → 9. 截屏确认进入结果页 → 10. 找第一个笔记卡片 → 11. 点击……

每一步都基于最新画面反馈,而不是预设等待时间。
我故意在它输入时手动切到微信,它检测到界面变化,立刻中止流程,打印日志:“Detected app switch to com.tencent.mm, aborting current task”。

这种“感知-决策-执行-验证”的闭环,才是Agent的雏形。

4. 实测5个真实场景:哪些能一气呵成,哪些还需人工兜底

我连续测试了2小时,用同一台手机、同一根USB线、未重启任何服务。以下是真实结果(非理想化描述):

4.1 流畅如丝:完全无需干预

场景指令耗时关键观察
APP启动+搜索“打开高德地图,搜‘最近的加油站’”12秒自动解锁(需提前关闭锁屏密码)、启动APP、点搜索栏、输入、点搜索按钮,结果页完整加载
图文交互“打开知乎,搜‘大模型怎么入门’,点第一个回答,向下滚动两屏”28秒准确识别搜索栏、输入框、结果列表;滚动使用swipe指令,幅度适中,未误触广告
表单填写“打开12306,登录页面,输入账号1381234,密码**”19秒ADB Keyboard完美输入;自动跳过验证码字段(因未提供OCR能力,它主动跳过并提示“需人工处理”)

共同点:目标元素在首屏可见、文字标识清晰、无动态遮罩层。

4.2 需要微调:稍作引导即可过关

场景指令问题解决方案
多步骤电商下单“打开淘宝,搜‘无线耳机’,选销量第一的商品,加入购物车”卡在“加入购物车”按钮——页面有悬浮购物车图标和底部固定按钮,模型点了悬浮图标(无响应)在指令末尾加一句:“优先点击页面底部的‘加入购物车’按钮” → 立刻成功
跨APP协作“把微信里刚收到的链接,复制到Safari打开”无法自动切换APP(iOS限制,安卓需开启“允许其他应用覆盖”)手动长按微信链接→“复制”,再运行指令:“打开Safari,粘贴并访问” → 完美

这些不是缺陷,而是合理边界:它不越权请求系统级权限,所有操作都在ADB能力范围内。

4.3 当前明确不支持:坦诚比画饼更重要

  • 视频播放控制:无法识别“播放/暂停”图标状态(因图标常为动态SVG,截图难稳定识别);
  • 手势操作:双指缩放、长按拖拽等复杂手势未实现;
  • 语音输入场景:不接管麦克风,仅支持文本指令;
  • 强混淆界面:如银行APP的数字键盘用自定义字体渲染,模型识别为乱码。

但它会在日志里清晰告诉你:“Failed to locate element ‘confirm_button’ in current screen. Suggest manual intervention.”
——不假装能干,而是诚实告知边界。这点比很多商业产品更可贵。

5. 它为什么值得你花30分钟试试?

回到标题:结果出乎意料。
出乎意料的不是它多强大,而是它多“实在”。

  • 没有PPT式Demo:所有功能都暴露在main.pyphone_agent/目录下,函数命名直白(find_clickable_element,type_text_with_adb),你想改哪就改哪;
  • 不绑架你的技术栈:模型服务可换HuggingFace、vLLM、甚至Ollama;ADB连接可切WiFi/USB;截图方式支持adb shell screencapscrcpy
  • 安全设计是默认项:所有敏感操作(如删除短信、拨打电话)默认禁用,需显式在配置中开启;验证码页自动暂停,等你人工输入;
  • 真正在解决“最后一米”:不是炫技的多模态,而是把VLM能力精准锚定在“手机操作”这个具体任务上,拒绝泛化。

我删掉了最初写的三段技术原理分析——因为真正打动我的,是它帮我自动完成了那件琐碎到不想录屏演示的事:
把钉钉群里的20张会议截图,按日期重命名,存进指定网盘文件夹。
我只说了一句:“打开钉钉,进‘项目周会’群,下载最近20条图片消息,按‘YYYYMMDD_序号’重命名,上传到百度网盘‘会议记录’文件夹。”
它花了3分47秒,做完,然后发来一条消息:“All 20 images processed. Upload completed.”

那一刻我知道,这东西已经越过Demo阶段,开始进入“可用”区间。

6. 给开发者的3条即刻行动建议

别等“完美时机”。现在就能动手,而且成本极低。

6.1 如果你是个人开发者:今晚就跑通第一条指令

  • 做:用你手边最旧的安卓手机(Android 7.0+),按本文2.1节配好ADB;
  • 做:在Mac/Windows上装好Python 3.10,git clonepip install -e .
  • ❌ 不做:不要先研究vLLM部署、不要先买云GPU、不要先读论文。

第一条指令就用这个:
python main.py --device-id YOUR_DEVICE_ID "打开设置,滑到最底,点关于手机,连点版本号7次"
——它会帮你开启开发者模式。这才是Agent该干的事:替你做重复劳动。

6.2 如果你在评估企业落地:重点关注它的“可解释性”

很多自动化方案黑盒运行,出错了只能看日志猜。
Open-AutoGLM 的每一步都可追溯:

  • logs/目录下有完整截图序列(step_001.png,step_002.png…);
  • 终端输出包含精确动作([ACTION] CLICK (520, 180));
  • --debug参数可打印视觉模型的中间推理(如识别出的元素列表)。
    这对金融、政务等强审计场景,是刚需。

6.3 如果你想贡献社区:从文档补全开始

官方文档对“WiFi ADB远程控制”的说明略简略。
我实测发现:

  • adb tcpip 5555后,手机需保持WiFi与电脑同网段;
  • 若手机IP是192.168.1.100,连接命令应为adb connect 192.168.1.100:5555(不是192.168.1.100:5555);
  • 首次连接需在手机上确认“允许USB调试”。
    这些细节,正是PR的最佳切入点。

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/16 23:56:27

IQuest-Coder-V1部署延迟高?KV Cache优化实战教程

IQuest-Coder-V1部署延迟高?KV Cache优化实战教程 1. 为什么你的IQuest-Coder-V1-40B-Instruct跑得慢? 你刚拉下 IQuest-Coder-V1-40B-Instruct 镜像,满怀期待地跑起第一个代码生成请求——结果等了8秒才出第一 token。刷新日志发现 decode…

作者头像 李华
网站建设 2026/3/15 15:59:11

Qwen情感判断系统搭建:All-in-One模式步骤详解

Qwen情感判断系统搭建:All-in-One模式步骤详解 1. 什么是Qwen All-in-One:单模型多任务的轻量智能引擎 你有没有试过为一个简单需求——比如判断一句话是开心还是难过——却要装三个库、下载两个模型、调通四段配置?很多开发者在做情感分析…

作者头像 李华
网站建设 2026/3/16 4:01:31

Llama3-8B私有化部署优势:数据安全与定制化需求满足方案

Llama3-8B私有化部署优势:数据安全与定制化需求满足方案 1. 为什么企业需要私有化部署大模型 你有没有遇到过这样的问题:想用大模型帮团队写英文技术文档、做代码审查、处理客户咨询,但一想到要把敏感的项目代码、内部会议纪要、客户数据上…

作者头像 李华
网站建设 2026/3/16 5:33:14

通义千问3-14B OOM问题解决:FP16转FP8量化部署详细步骤

通义千问3-14B OOM问题解决:FP16转FP8量化部署详细步骤 1. 为什么Qwen3-14B会频繁OOM?从显存瓶颈说起 你刚下载完Qwen3-14B,兴冲冲地在RTX 4090上运行ollama run qwen3:14b,结果终端弹出刺眼的CUDA out of memory——明明卡有24…

作者头像 李华
网站建设 2026/3/15 19:53:33

YOLOv10镜像+Jupyter=最友好开发体验

YOLOv10镜像Jupyter最友好开发体验 在目标检测工程落地的真实场景中,一个反复出现的困境始终未被彻底解决:为什么模型在本地调试时表现优异,一到新环境就报错“ModuleNotFoundError”或“CUDA version mismatch”?从PyTorch版本与…

作者头像 李华
网站建设 2026/3/15 23:36:07

YOLO26训练资源监控:GPU/内存实时查看方法

YOLO26训练资源监控:GPU/内存实时查看方法 在深度学习模型训练过程中,尤其是像YOLO26这样参数量大、计算密集的新型目标检测模型,资源使用情况直接决定训练是否稳定、高效。你是否遇到过训练突然中断却找不到原因?是否疑惑为什么…

作者头像 李华