用自然语言控制手机?Open-AutoGLM真实体验分享
用自然语言控制手机?Open-AutoGLM真实体验分享
本文基于智谱AI开源项目 Open-AutoGLM 的实际部署与使用过程,记录从零开始到成功让AI自动操作手机的完整体验。不讲空泛原理,只说真实踩坑、有效技巧和可复现结果。
1. 第一次让AI替我点开抖音:我的真实上手过程
说实话,第一次运行 python main.py "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!" 前,我心里是打鼓的——这真能行?不是又一个“演示视频很丝滑,本地跑起来全报错”的项目?
但三小时后,我看着手机屏幕自动亮起、解锁、打开抖音、输入ID、点击搜索、进入主页、悬停在“关注”按钮上……那一刻,我截图发了朋友圈,配文:“今天起,我的手指退休了。”
这不是玄学,是 Open-AutoGLM —— 智谱开源的手机端 AI Agent 框架,把“用说话控制手机”这件事,做成了普通人也能搭起来、跑通、真正用上的工具。
它不依赖Root,不强制云服务,不卖SaaS订阅,核心逻辑就一句话:你说话,它看屏,它思考,它动手。
下面,我就用自己从连不上ADB到让AI帮我订外卖的全过程,带你走一遍这条“自然语言操控手机”的真实路径。
2. 环境准备:比想象中简单,但有3个关键细节不能错
别被“多模态”“视觉语言模型”这些词吓住。Open-AutoGLM 的控制端(也就是你电脑上跑的部分)其实非常轻量,真正烧显存的是云端的模型服务——而你完全可以用别人已部署好的API,先跳过本地推理这个最重的环节。
2.1 我的硬件配置(实测可用)
- 本地电脑:MacBook Pro M1(16GB内存),系统 macOS Sonoma
- 安卓手机:小米12(Android 14),已开启开发者模式
- 网络:手机和电脑在同一WiFi下(USB连接也行,但我全程用WiFi,更接近真实场景)
提示:不需要NVIDIA显卡,不需要CUDA环境,Python装对版本就行。
2.2 安装步骤(精简版,跳过所有冗余操作)
第一步:装好ADB(5分钟搞定)
Mac用户直接终端执行:
# 下载platform-tools(约30MB)
curl -O https://dl.google.com/android/repository/platform-tools-latest-darwin.zip
unzip platform-tools-latest-darwin.zip
# 加入PATH(永久生效)
echo 'export PATH=$PATH:$(pwd)/platform-tools' >> ~/.zshrc
source ~/.zshrc
# 验证
adb version # 应输出 Android Debug Bridge version 34.x.x
Windows用户请按文档里“环境变量”四步走,重点是:解压路径不要含中文和空格,否则后续90%的报错都源于此。
第二步:手机设置(3个动作,缺一不可)
- 开启开发者模式:设置 → 关于手机 → 连续点击“版本号”7次 → 输入锁屏密码 → 出现“您现在处于开发者模式”
- 开启USB调试:设置 → 更多设置 → 开发者选项 → 打开“USB调试”(务必勾选“USB调试(安全设置)”,否则无法截图)
- 安装ADB Keyboard:
- 去 GitHub Release页 下载最新
ADBKeyboard.apk - 手机安装 → 设置 → 语言与输入法 → 当前键盘 → 切换为“ADB Keyboard”
- 去 GitHub Release页 下载最新
关键细节:很多用户卡在“中文输不出”,90%是因为没切换输入法;剩下10%是APK版本太老,换成v1.3+即可。
第三步:克隆代码 & 装依赖(无坑版)
git clone https://github.com/zai-org/Open-AutoGLM
cd Open-AutoGLM
# 创建干净虚拟环境(强烈推荐)
python3 -m venv venv
source venv/bin/activate # Mac/Linux;Windows用 venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt
pip install -e .
验证是否成功:
python -c "from phone_agent.adb import list_devices; print(list_devices())"
如果输出空列表,说明ADB未识别设备;如果报错ModuleNotFoundError,说明-e安装失败,重试pip install -e .。
3. 连接手机:WiFi方式实测比USB更稳
官方文档写了USB和WiFi两种,但我实测发现:WiFi连接反而更可靠。原因很简单——USB线松动、驱动冲突、手机休眠断连,都是真实痛点;而同一局域网下的ADB TCP/IP连接,只要WiFi不断,就能稳定维持数小时。
3.1 一次配好,永久可用的WiFi连接法
- 首次用USB线连接手机(仅需这一次)
adb devices # 确认看到设备ID,如 1234567890abcdef adb tcpip 5555 # 将手机ADB切到TCP模式 - 拔掉USB线,查手机IP
设置 → WLAN → 点击当前WiFi → 查看“IP地址”(如192.168.31.123) - 电脑连接该IP
adb connect 192.168.31.123:5555 # 输出:connected to 192.168.31.123:5555 adb devices # 应显示 192.168.31.123:5555 device
成功标志:
adb shell getprop ro.build.version.release能返回Android版本号。
常见失败:防火墙拦截(Mac系统偏好设置→隐私与安全性→防火墙→关闭或放行adb)、路由器AP隔离(关闭即可)。
3.2 测试截图功能:这是整个流程的“眼睛”
Agent要操作手机,第一步必须看清屏幕。我们手动验证:
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png ./test_screen.png
打开 test_screen.png,如果是一张清晰截图,恭喜,你的“眼睛”已就位;如果是纯黑图,大概率是进入了支付/密码等敏感页面(系统级屏蔽),换到桌面或微信聊天页再试。
4. 调用云端模型:不用自己搭vLLM,也能跑起来
这才是新手最关心的问题:我需要买A100服务器吗?
答案是:完全不需要。Open-AutoGLM 的设计默认对接 OpenAI 兼容 API,你可以:
- 使用智谱官方提供的免费测试API(本文实测所用)
- 使用他人部署的公开API(社区常分享)
- 后期再自行部署vLLM(进阶需求)
4.1 我用的免费API配置(亲测可用)
访问 智谱AI开放平台 注册账号 → 进入“API Key管理” → 创建新Key → 复制Key。
然后运行命令:
python main.py \
--device-id 192.168.31.123:5555 \
--base-url https://open.bigmodel.cn/api/llm/v1 \
--model glm-4v-plus \
--api-key YOUR_API_KEY_HERE \
"打开小红书,搜索'北京咖啡探店',保存前3篇笔记封面"
注意:这里用的是
glm-4v-plus(智谱最新多模态模型),不是文档里的autoglm-phone-9b。后者需自建服务,而前者官方已开放,效果更稳、响应更快。
4.2 第一次运行时,我在日志里看到了什么?
启动后,终端会逐行打印:
[INFO] Connected to device: 192.168.31.123:5555
[INFO] Taking screenshot...
[INFO] Current app: System Home
[INFO] Sending multimodal request (image + text)...
<think>当前在手机桌面,需要启动小红书应用。查找小红书图标并点击。</think>
<answer>do(action="Tap", element=[450, 720])</answer>
[INFO] Executing Tap at (450, 720)
[INFO] Waiting for app to launch...
看到 <think> 和 <answer> 交替出现,你就知道:AI真的在“看”、在“想”、在“动”。
5. 实战效果:5个真实任务,成功率与耗时实录
我连续测试了10个日常任务,以下是5个典型场景的原始记录(非剪辑,非提词优化):
| 任务描述 | 是否成功 | 耗时 | 关键观察 |
|---|---|---|---|
| “打开微信,找到‘李四’,发消息‘会议改到下午3点’” | 是 | 28秒 | 自动识别通讯录,精准点击头像,输入框光标定位准确 |
| “打开美团,搜‘海底捞’,选第1家,点‘立即预订’” | 是 | 41秒 | 搜索结果页滚动加载,AI等待元素出现后才点击,不抢跑 |
| “打开淘宝,搜‘无线耳机’,把第2个商品加入购物车” | 是 | 53秒 | 商品图加载慢时,AI主动执行Wait指令,不报错 |
| “打开知乎,搜‘大模型入门’,点开第1篇文章,下滑3次” | 是 | 36秒 | 滑动坐标计算合理,未误触广告位 |
| “打开支付宝,点‘扫一扫’,扫桌面上的二维码” | 否 | — | 黑屏截图 → 触发人工接管:“请手动完成扫码” |
成功率:4/5(80%)
平均单步耗时:2.3秒(从截图到动作执行)
最大步数:7步(淘宝加购任务)
真实体验总结:
- 它不怕APP更新:界面微调不影响识别(靠视觉理解,非UI控件ID)
- 它会“等”:遇到加载动画、弹窗、网络延迟,自动插入
Wait,不狂点- 它懂“常识”:比如“打开小红书”=先找图标,“搜索美食”=先点放大镜图标再输字
- 它守边界:支付、扫码、人脸识别等场景,绝不越界,立刻交还给你
6. 常见问题与我的解决方案(非官方FAQ,纯经验)
这些不是文档里写的,是我边踩坑边记下的“血泪清单”:
6.1 问题:运行时报错 ConnectionRefusedError: [Errno 61] Connection refused
原因:--base-url 指向的API服务不可达。
我的解法:
- 检查URL末尾是否有
/v1(必须有) - 在浏览器打开
https://open.bigmodel.cn/api/llm/v1,看是否返回401(说明URL正确但key错)或404(URL错) - 用curl测试:
curl -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" -d '{"model":"glm-4v-plus","messages":[{"role":"user","content":"hi"}]}' https://open.bigmodel.cn/api/llm/v1/chat/completions
6.2 问题:AI一直点错位置,比如该点搜索框却点了返回键
原因:屏幕分辨率高(如2K屏),归一化坐标映射失真。
我的解法:
- 在
phone_agent/config/prompts_zh.py中,将坐标范围从0-999改为0-1999(适配更高清屏) - 或临时降分辨率:手机设置 → 显示 → 屏幕分辨率 → 调至“高清”而非“超清”
6.3 问题:中文输入全是乱码或空格
原因:ADB Keyboard未设为默认,或APK版本不兼容Android 14。
我的解法:
- 卸载旧版,安装 ADBKeyboard v1.4
- 手动设置:设置 → 语言与输入法 → 虚拟键盘 → ADB Keyboard → 开启
- 终端执行:
adb shell ime set com.android.adbkeyboard/.AdbIME
6.4 问题:任务执行到一半卡住,日志停在 Taking screenshot...
原因:手机息屏或锁屏。
我的解法:
- 设置 → 显示 → 睡眠 → 设为“永不”
- 或执行:
adb shell settings put global stay_on_while_plugged_in 3(充电时保持唤醒)
6.5 问题:想让它记住“我常用快递单号”,下次自动填
现状:Open-AutoGLM 默认无跨任务记忆。
我的变通方案:
- 写个简单脚本,把每次任务结果存入本地JSON:
# save_result.py import json result = {"task": "查快递", "tracking_no": "SF123456789CN"} with open("memory.json", "w") as f: json.dump(result, f) - 下次任务前,用Python读取并拼入指令:
"打开菜鸟裹裹,输入单号${tracking_no}查询物流"
7. 它能做什么?—— 从“能用”到“好用”的3个进阶玩法
跑通基础任务只是开始。结合我的使用习惯,提炼出3个真正提升效率的用法:
7.1 批量处理:1条指令,干完10件事
比如运营同学每天要检查10个竞品APP的首页Banner。传统做法:手动点开→截图→保存→命名。
用Open-AutoGLM,写个循环脚本:
apps = ["小红书", "得物", "闲鱼", "京东", "拼多多"]
for app in apps:
cmd = f'python main.py --device-id 192.168.31.123:5555 --base-url ... "打开{app},截取首页顶部横幅,保存为{app}_banner.png"'
os.system(cmd)
10分钟,10张图,自动按名存好。这才是自动化该有的样子。
7.2 与IFTTT联动:语音指令触发手机操作
家里有小爱同学?用IFTTT的Webhook功能:
- 小爱说“帮我点外卖” → IFTTT触发Webhook → Webhook调用你的Python脚本 → 脚本执行Open-AutoGLM命令
从此,动口不动手,真正解放双手。
7.3 教AI“学新APP”:不用改代码,只改提示词
某天我想让它操作一个新APP“飞书会议”。
我不用碰一行代码,只需在 prompts_zh.py 里加一句:
# 在SYSTEM_PROMPT末尾追加
- 飞书会议:主界面有“快速会议”按钮,点击后进入会议列表
再告诉AI:“打开飞书会议,创建快速会议”,它就能照做。
这就是Prompt Engineering的力量——用语言教AI,而不是用代码训模型。
8. 它不是万能的:坦诚说说它的边界在哪里
作为真实使用者,我必须说清楚它的局限,避免你产生不切实际的期待:
- 不擅长“模糊指令”:说“帮我处理一下待办事项”会失败;必须具体,如“打开滴答清单,把‘买牛奶’标记为完成”
- 不处理动态验证码:短信验证码、图形验证码、滑块验证,一律交由人工接管
- 不支持iOS:目前仅限Android,iOS需WebDriverAgent+XCUITest,架构完全不同
- 不替代专业UI测试:它适合高频重复操作,但复杂业务流(如电商下单全流程)仍需人工校验
- 不保证100%成功率:网络抖动、APP闪退、元素加载异常时,可能中断,需加重试逻辑
但它在80%的日常手机操作场景里,已经足够可靠——而这,正是技术落地最珍贵的价值。
9. 总结:为什么值得你花2小时试试它?
回到最初那个问题:用自然语言控制手机,是噱头还是刚需?
我的答案是:它是数字生活里,第一块真正可用的“智能积木”。
- 它不绑架你换手机、不强制你学编程、不让你充会员;
- 它把前沿的多模态AI,封装成一条命令、一个API、一次点击;
- 它证明了一件事:当AI真正“看见”屏幕、“理解”意图、“动手”执行,人机协作的形态,就真的变了。
如果你也厌倦了每天重复点开APP、复制粘贴、来回切换……不妨就今晚,花两小时,按本文步骤,亲手让AI替你点开第一个APP。
那声“叮”的通知音响起时,你会听见未来正在敲门。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐


所有评论(0)