Open-AutoGLM入门实战:完成第一个‘打开抖音’指令
你有没有想过,以后手机操作不再需要手动点来点去?比如一句话说“打开抖音搜美食”,手机就自动完成启动、输入、点击全过程——不是靠预设脚本,而是真正理解你的意图,看懂屏幕,再一步步执行。这不是科幻,是正在发生的现实。Open-AutoGLM 就是让这件事变得简单可行的那把钥匙。
它不是又一个大模型 API 封装工具,而是一套端到端可落地的手机端 AI Agent 框架。由智谱开源,专为移动场景设计,把视觉理解、语言推理和设备操控三者真正打通。今天我们就从零开始,用它完成人生中第一个 AI 指令:“打开抖音”。
整个过程不需要写一行逻辑代码,不涉及模型训练,也不用调试复杂参数。你只需要一台电脑、一部安卓手机、一条 USB 线(或同一 WiFi),外加 15 分钟专注时间。完成后,你会清楚知道:这个框架到底在做什么、为什么能做成、以及它和普通自动化工具有什么本质不同。
1. 先搞懂它是什么:不是“语音助手”,而是“看得见、想得清、动得了”的手机AI代理
Open-AutoGLM 的核心不在“说”,而在“看+想+做”。它的实际运行形态叫 AutoGLM-Phone,是一个基于多模态视觉语言模型的手机智能助理框架。这句话里有三个关键词,我们拆开来看:
1.1 “看得见”:用眼睛理解真实手机界面
它不依赖 UI 层级结构(比如 Android 的 View ID)或预埋 Hook,而是直接把手机屏幕截图喂给视觉语言模型。这意味着——哪怕 App 更新了图标位置、改了按钮文字、甚至用了全新设计语言,只要画面内容可识别,它就能继续工作。就像人看图识字一样自然。
1.2 “想得清”:把一句话翻译成可执行的操作序列
当你输入“打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!”,系统不会只做“启动抖音”这一步。它会先判断当前是否在桌面;如果不在,要先返回桌面;然后找到抖音图标并点击;等待 App 启动完成;识别顶部搜索框;点击进入;输入指定账号;在结果页定位目标用户;最后找到“关注”按钮并点击。这一整套动作规划,全部由模型自主生成,无需人工编排流程。
1.3 “动得了”:通过 ADB 实现真实、稳定、跨 App 的设备控制
所有操作都走标准 Android Debug Bridge(ADB)通道。不是模拟触摸事件,而是调用底层 input tap / input text / dumpsys 命令,确保行为与真人一致。它支持点击、滑动、输入文字、截屏、获取当前 Activity 等完整能力,并内置安全机制:遇到登录页、验证码弹窗、权限申请等敏感环节,会主动暂停并提示人工接管,避免误操作。
这就是它和传统 RPA 工具的本质区别:RPA 是“按坐标点”,Open-AutoGLM 是“按语义做”。前者脆弱、难维护;后者鲁棒、可泛化。
2. 准备工作:三步搞定本地控制环境
别被“AI”“Agent”这些词吓住。整个部署过程其实比装一个微信还轻量。我们分三块准备:电脑环境、手机设置、控制端代码。
2.1 电脑端:装好 ADB 和 Python 环境
你不需要 GPU,不需要 Docker,甚至不需要云服务器(本教程默认使用已部署好的云端模型服务,你只需连上去用)。本地电脑只需满足:
- 操作系统:Windows 或 macOS(Linux 同理,命令微调即可)
- Python 版本:3.10 或更高(推荐用 conda 或 pyenv 管理,避免污染系统环境)
- ADB 工具:Android SDK Platform-Tools(官网下载地址)
验证是否装好:打开终端,输入
adb version,看到类似Android Debug Bridge version 1.0.41即成功。
2.2 手机端:开启开发者权限 + 输入法替换
这是最关键的一步,但只需一次性设置。请按顺序操作(以主流安卓为例):
开启开发者模式:
设置 → 关于手机 → 连续点击“版本号”7 次 → 弹出“您现在是开发者”提示。开启 USB 调试:
设置 → 系统 → 开发者选项 → 打开“USB 调试”。安装并启用 ADB Keyboard(必须!):
- 下载 ADB Keyboard APK(v1.3 或更新)
- 在手机上安装(允许“未知来源应用”)
- 设置 → 语言与输入法 → 当前键盘 → 切换为 “ADB Keyboard”
这一步不可跳过。普通输入法无法通过 ADB 接收文本指令,会导致“搜索”“输入账号”等步骤失败。
2.3 控制端:拉取代码、装好依赖
打开终端,执行以下命令:
# 1. 克隆官方仓库 git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM # 2. 创建虚拟环境(推荐,避免依赖冲突) python -m venv venv source venv/bin/activate # macOS/Linux # venv\Scripts\activate # Windows # 3. 安装依赖 pip install -r requirements.txt pip install -e .成功标志:无报错,且
python -c "import phone_agent"不报 ModuleNotFoundError。
3. 连接手机:USB 直连 or WiFi 远程,两种方式任选
连接方式决定了你后续是“插线操作”还是“隔空指挥”。两者都稳定,我们分别说明。
3.1 USB 直连(新手首选,最稳)
- 用原装数据线将手机连接电脑
- 手机弹出“允许 USB 调试吗?”→ 勾选“始终允许”,点确定
- 终端执行:
adb devices若看到类似ZY322KDL7F device的输出,说明连接成功。device前面那一串就是你的--device-id。
3.2 WiFi 远程连接(适合开发调试)
需先用 USB 连一次,开启网络调试模式:
# 1. USB 连接后,开启 TCP/IP 模式 adb tcpip 5555 # 2. 断开 USB,确保手机和电脑在同一 WiFi 下 # 3. 查找手机 IP(设置 → 关于手机 → 状态 → IP 地址) # 4. 连接 WiFi 设备 adb connect 192.168.1.100:5555 # 替换为你手机的真实 IP验证:再次运行
adb devices,应显示192.168.1.100:5555 device。
4. 执行第一个指令:“打开抖音”
万事俱备,现在我们下达第一条自然语言指令。注意:本教程默认你已有一个可用的云端模型服务(如智谱提供的公开 demo 服务,或你自行部署的 vLLM + AutoGLM-Phone 推理服务)。如果你还没有,可先使用社区提供的临时 endpoint(详见项目 README),我们聚焦在“怎么用”。
4.1 命令行一键运行
在Open-AutoGLM根目录下,执行:
python main.py \ --device-id ZY322KDL7F \ --base-url http://116.204.120.182:8800/v1 \ --model "autoglm-phone-9b" \ "打开抖音"参数说明:
--device-id:从adb devices输出中复制(如ZY322KDL7F或192.168.1.100:5555)--base-url:替换成你实际的模型服务地址(格式:http://<IP>:<PORT>/v1)- 最后字符串:你的自然语言指令,引号包裹,支持中文
4.2 看它怎么做:实时日志告诉你每一步
运行后,你会看到类似这样的输出:
[INFO] 截获当前屏幕截图(1080x2340) [INFO] 视觉编码完成,送入 LLM... [INFO] LLM 规划动作序列:[{'action': 'launch_app', 'package': 'com.ss.android.ugc.aweme'}] [INFO] 执行:adb shell am start -n com.ss.android.ugc.aweme/.splash.SplashActivity [INFO] 等待 App 启动...(检测到 aweme.MainActivity) [INFO] 任务完成:已打开抖音你亲眼看到:AI 先截图 → 理解画面 → 决定要启动抖音 → 调用 ADB 命令 → 等待界面加载 → 确认成功。全程无人工干预。
4.3 进阶尝试:加一句“搜美食”
把指令改成:
python main.py --device-id ZY322KDL7F --base-url http://116.204.120.182:8800/v1 --model "autoglm-phone-9b" "打开抖音搜索美食"你会观察到更长的动作链:启动抖音 → 识别首页搜索框 → 点击 → 输入“美食” → 点击搜索按钮 → 等待结果页加载 → 报告完成。
小技巧:首次运行建议加
--verbose参数,看详细日志;熟练后可去掉,更清爽。
5. 用 Python API 更灵活地集成
如果你不想总敲命令,或者想把它嵌入自己的脚本、Web 页面、甚至做成定时任务,Open-AutoGLM 提供了干净的 Python API。
5.1 连接管理:统一设备入口
from phone_agent.adb import ADBConnection, list_devices # 初始化连接管理器 conn = ADBConnection() # 连接设备(支持 USB 或 WiFi) success, msg = conn.connect("ZY322KDL7F") # 或 "192.168.1.100:5555" print(f"连接结果:{msg}") # 查看所有已连接设备 for dev in list_devices(): print(f"{dev.device_id} ({dev.connection_type.value})")5.2 发起一次完整任务
from phone_agent.agent import PhoneAgent # 创建代理实例 agent = PhoneAgent( device_id="ZY322KDL7F", base_url="http://116.204.120.182:8800/v1", model_name="autoglm-phone-9b" ) # 下达指令(同步阻塞,直到完成或超时) result = agent.run("打开抖音,搜索‘北京烤鸭’,点第一个视频播放") print("任务状态:", result.status) print("执行步骤数:", len(result.steps)) print("最终截图保存在:", result.screenshot_path)返回的
result是结构化对象,含每一步动作、耗时、截图路径、错误信息,方便你做日志分析、成功率统计、异常告警。
6. 常见问题与避坑指南(来自真实踩坑经验)
刚上手时,90% 的问题都集中在连接和权限。这里列出高频问题及解法,帮你省下 2 小时排查时间:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
adb devices显示unauthorized | 手机未授权电脑调试 | 断开重连 USB,手机弹窗点“允许”并勾选“始终允许” |
adb devices无输出或显示offline | ADB 服务异常 | 终端执行adb kill-server && adb start-server |
| 指令执行卡在“等待 App 启动” | ADB Keyboard 未启用 | 回到手机“语言与输入法”,确认默认键盘是 ADB Keyboard |
| 搜索框识别失败 / 输入文字没反应 | 输入法未切换或 ADB Keyboard 权限被禁 | 设置 → 应用管理 → ADB Keyboard → 权限 → 开启“显示在其他应用上方”和“无障碍服务” |
| 模型返回乱码或超时 | 云端服务未启动 / 端口未映射 / 显存不足 | 检查服务端docker ps是否运行;确认防火墙放行端口;vLLM 启动时加--max-model-len 4096 |
| WiFi 连接频繁断开 | 路由器节能策略关闭 ADB 端口 | 改用 USB;或路由器设置中关闭“AP 隔离”、“节能模式” |
终极建议:第一次务必用 USB +
--verbose运行,盯着日志看每一步是否符合预期。熟悉后再切 WiFi、去 verbose。
7. 总结:你刚刚完成的,不只是一个指令
回看这 15 分钟:你配置了 ADB,设置了手机开发者选项,克隆了代码,运行了一条命令,看着手机自己打开抖音——这背后是视觉理解、语言规划、设备控制三者的无缝协同。Open-AutoGLM 的价值,不在于它能“打开抖音”,而在于它证明了一件事:手机上的 AI Agent,已经可以脱离脚本、不依赖 UI 结构、仅凭自然语言和屏幕画面,就完成真实、连贯、可解释的任务流。
它不是玩具,而是生产力新范式的基础构件。下一步,你可以:
- 尝试更复杂的指令:“登录微信,给张三发‘会议改到下午三点’,然后截屏发到钉钉工作群”
- 把它接入 Home Assistant,用语音控制手机完成家庭事务
- 写个脚本,每天早上自动刷抖音热点,截图发到企业微信日报
- 甚至为视障用户定制一套全语音交互的手机操作层
技术从来不是目的,解放双手、释放注意力、让人去做更值得做的事,才是它该有的样子。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。