Open-AutoGLM新闻阅读助手:热点资讯推送执行部署案例
1. 引言:让AI帮你刷手机,真正实现“动口不动手”
你有没有这样的经历:看到朋友分享的某个博主内容很感兴趣,立刻想打开抖音去搜、关注,但一连串点击操作下来,可能已经分心去做别的事了?又或者,你想每天定时获取某类新闻资讯,却懒得一个个App翻看?
现在,这一切都可以交给AI来完成。
今天要介绍的Open-AutoGLM,是智谱开源的一款面向手机端的AI Agent框架。它不只是一个聊天机器人,而是一个能“看懂屏幕、听懂指令、自动操作”的智能助理。你只需要说一句:“打开小红书搜北京周末美食推荐”,它就能自己启动App、输入关键词、滑动浏览,甚至完成关注或点赞动作——全程无需你动手。
这个能力背后的核心项目叫Phone Agent,基于视觉语言模型(VLM)和 ADB 自动化技术构建。它通过多模态理解手机屏幕内容,结合自然语言指令进行任务规划,并调用底层 ADB 接口执行真实点击、滑动、输入等操作,真正实现了“意图到动作”的闭环。
本文将以“热点资讯自动推送”为实际场景,带你从零开始部署 Open-AutoGLM 控制端,连接真机设备,最终实现一条自然语言指令驱动全流程操作的完整案例。
2. 技术架构解析:Phone Agent 是如何工作的?
在动手之前,先简单了解一下这套系统的运行逻辑。理解原理,才能更好排查问题、优化使用体验。
2.1 整体架构:云端模型 + 本地控制 + 真机执行
整个系统分为三个部分:
- 云端 AI 模型服务:负责接收截图与用户指令,理解语义并生成下一步操作命令。
- 本地控制端(Open-AutoGLM):运行在你的电脑上,负责抓取手机画面、发送给云端、接收指令后调用 ADB 执行操作。
- 安卓设备(真机或模拟器):被控制的目标设备,所有操作都在这里发生。
它们之间的协作流程如下:
用户下指令 → 控制端截屏 + 发送指令至云端 → VLM 模型分析画面与意图 → 输出操作动作 → 控制端执行 ADB 命令 → 手机响应变化 → 循环直至任务完成2.2 核心组件说明
| 组件 | 功能 |
|---|---|
| 视觉语言模型(VLM) | 理解手机屏幕图像 + 用户文字指令,输出应执行的操作类型(如点击坐标、输入文本) |
| ADB(Android Debug Bridge) | Android 官方调试工具,支持安装应用、输入命令、模拟点击等远程控制功能 |
| ADB Keyboard | 允许通过 ADB 输入文字,解决自动化中无法调起键盘的问题 |
| Open-AutoGLM 控制脚本 | 本地 Python 程序,协调截图、通信、指令执行 |
2.3 支持的操作类型
目前 Phone Agent 可以识别并执行以下常见操作:
- 启动 App
- 点击指定区域(按钮、图标)
- 滑动页面(上/下/左/右)
- 输入文本(借助 ADB Keyboard)
- 返回、Home 键模拟
- 条件判断(例如:“如果已关注则跳过”)
同时,系统内置安全机制:遇到敏感操作(如支付、删除账号),会暂停并提示人工确认;在登录或验证码场景也支持手动接管,避免误操作。
3. 本地环境搭建:准备你的“遥控中心”
接下来我们正式开始部署。你需要一台本地电脑(Windows 或 macOS 均可),一部安卓手机,以及一个已部署好 AutoGLM 模型服务的云服务器(本文不涉及模型部署,假设服务已在http://<server_ip>:8800上运行)。
3.1 硬件与软件要求
- 操作系统:Windows 10+/macOS 12+
- Python 版本:建议 3.10 或以上
- 安卓设备:Android 7.0 及以上版本
- 网络环境:电脑与手机处于同一局域网(WiFi 连接时必需)
- ADB 工具包:必须提前安装并配置好
3.2 安装与配置 ADB
Windows 用户
- 下载 Android SDK Platform Tools 并解压。
- 按
Win + R输入sysdm.cpl→ 高级 → 环境变量。 - 在“系统变量”中的
Path添加 ADB 解压路径(如C:\platform-tools)。 - 打开命令行,输入:
若显示版本信息,则表示安装成功。adb version
macOS 用户
在终端中执行以下命令(假设 platform-tools 解压在 Downloads 目录):
export PATH=${PATH}:~/Downloads/platform-tools你可以将这行加入.zshrc或.bash_profile实现永久生效:
echo 'export PATH=${PATH}:~/Downloads/platform-tools' >> ~/.zshrc source ~/.zshrc验证方式同上:
adb version4. 手机端设置:开启“被控制”模式
为了让电脑能够远程操控手机,需要开启开发者权限和调试功能。
4.1 开启开发者选项
进入手机设置 → 关于手机 → 连续点击“版本号”7次,直到提示“您已进入开发者模式”。
4.2 启用 USB 调试
返回设置主界面 → 开发者选项 → 找到“USB 调试”,勾选启用。
⚠️ 注意:不同品牌手机路径略有差异,请根据机型搜索具体操作。
4.3 安装 ADB Keyboard(关键步骤!)
由于大多数自动化方案无法直接输入中文或触发软键盘,必须使用专用输入法。
- 下载 ADB Keyboard APK(GitHub 开源项目)。
- 安装到手机。
- 进入“语言与输入法”设置 → 默认输入法 → 切换为ADB Keyboard。
这样,后续所有文本输入都将通过 ADB 命令完成,不再依赖触摸键盘。
5. 部署 Open-AutoGLM 控制端
现在我们来部署本地控制程序。
5.1 克隆代码仓库
打开终端或命令行工具,执行:
git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM5.2 安装 Python 依赖
确保你使用的是虚拟环境(推荐),然后安装依赖:
pip install -r requirements.txt pip install -e .
-e .表示以可编辑模式安装,便于后续修改调试。
6. 设备连接方式:USB 与 WiFi 二选一
有两种方式连接手机:USB 数据线 和 WiFi 无线连接。推荐初次使用选择 USB,更稳定。
6.1 USB 连接
使用数据线将手机连接电脑。
手机弹出“允许USB调试?”对话框时,点击“允许”。
在终端运行:
adb devices输出应类似:
List of devices attached 1234567890abc device出现设备 ID 即表示连接成功。
6.2 WiFi 远程连接(适合无数据线场景)
若想摆脱数据线束缚,可通过 WiFi 连接 ADB。
第一步:先用 USB 连接,开启 TCP/IP 模式
adb tcpip 5555此命令会让手机监听 5555 端口的 ADB 连接。
第二步:断开 USB,通过 IP 连接
查看手机 WiFi 设置中的 IP 地址(如192.168.1.105),然后执行:
adb connect 192.168.1.105:5555再次运行adb devices,确认设备在线。
✅ 成功后即可拔掉数据线,实现无线控制。
7. 执行第一个任务:热点资讯自动查找与关注
现在一切就绪,让我们下达第一条指令:“打开抖音,搜索抖音号为 dycwo11nt61d 的博主,并关注他”。
7.1 命令行方式启动代理
在 Open-AutoGLM 根目录下运行:
python main.py \ --device-id 1234567890abc \ --base-url http://123.45.67.89:8800/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"参数说明:
--device-id:来自adb devices显示的设备ID(USB)或IP:5555(WiFi)--base-url:你的云服务器地址,需确保端口对外开放(如 8800)--model:指定使用的模型名称(需与后端一致)- 最后的字符串:自然语言指令,尽量清晰明确
7.2 观察执行过程
程序会自动循环执行以下步骤:
- 调用
adb exec-out screencap -p > screen.png截取当前屏幕; - 将截图和指令一起发送到云端模型;
- 模型返回操作建议(如“点击坐标 (x=500, y=800)”);
- 控制端调用
adb shell input tap x y执行点击; - 等待页面加载,重复上述过程,直到任务完成。
你会看到终端不断输出日志,如:
[INFO] 当前界面检测到抖音首页 [INFO] 正在点击搜索框... [INFO] 输入文本: dycwo11nt61d [INFO] 点击搜索结果第一项 [INFO] 检测到‘+关注’按钮,正在点击 [SUCCESS] 任务完成!整个过程约耗时 30~60 秒,完全无需人工干预。
8. 使用 Python API 实现更灵活的集成
除了命令行,Open-AutoGLM 还提供了 Python API,方便你将其嵌入到其他系统中,比如定时任务、Web 服务或企业自动化流程。
8.1 示例:远程设备管理
from phone_agent.adb import ADBConnection, list_devices # 创建连接管理器 conn = ADBConnection() # 连接远程设备 success, message = conn.connect("192.168.1.105:5555") print(f"连接状态: {message}") # 列出所有已连接设备 devices = list_devices() for device in devices: print(f"{device.device_id} - {device.connection_type.value}") # (可选)为 USB 设备启用 TCP/IP success, message = conn.enable_tcpip(5555) if success: ip = conn.get_device_ip() print(f"设备 IP: {ip}")8.2 扩展思路:打造每日新闻推送机器人
你可以编写一个定时脚本,每天早上 8 点自动执行:
instructions = [ "打开今日头条,浏览科技板块前10条新闻", "打开微博热搜榜,截图前三名话题", "打开微信公众号‘财经早餐’,阅读最新推文" ] for inst in instructions: run_phone_agent(device_id, base_url, inst)再配合邮件或企业微信通知,就能实现个性化的“AI 新闻秘书”。
9. 常见问题与解决方案
尽管整体流程清晰,但在实际部署中仍可能遇到一些问题。以下是高频故障及应对方法。
9.1 ADB 连接失败
- 现象:
adb devices无设备或显示unauthorized - 原因:未授权调试或驱动问题
- 解决:
- 检查是否弹出“允许USB调试”提示,重新插拔数据线;
- Windows 用户可尝试安装 Google USB Driver;
- 删除
~/.android/adbkey文件后重试。
9.2 模型无响应或乱码
- 现象:长时间卡顿、输出乱码、操作错误
- 原因:模型服务异常或参数不匹配
- 解决:
- 检查 vLLM 启动时的
--max-model-len是否足够(建议 ≥ 8192); - 确认 GPU 显存充足(至少 24GB 对于 9B 模型);
- 查看服务端日志是否有 OOM 或 decode 错误。
- 检查 vLLM 启动时的
9.3 输入中文失败
- 现象:搜索框为空或输入乱码
- 原因:ADB Keyboard 未设为默认输入法
- 解决:
- 进入手机“语言与输入法”设置,确认当前输入法为 ADB Keyboard;
- 可尝试手动切换一次后再运行脚本。
9.4 WiFi 连接不稳定
- 现象:中途断连、操作延迟高
- 建议:
- 使用 5GHz WiFi 网络;
- 避免信号干扰;
- 优先使用 USB 调试,稳定性更高。
10. 总结:迈向真正的手机自动化时代
通过本次实践,我们完成了 Open-AutoGLM 的全链路部署,实现了从自然语言指令到手机自动操作的完整闭环。无论是“搜索特定博主并关注”,还是“每日定时浏览新闻”,这类重复性任务都可以交由 AI 自动完成。
这不仅提升了效率,更重要的是改变了人机交互的方式——不再是“我点一下,机器动一下”,而是“我说一句话,机器帮我做完一整件事”。
未来,随着多模态模型能力的增强,Phone Agent 类系统有望应用于更多场景:
- 自动填写表单、抢票、签到
- 移动端测试自动化(比传统脚本更智能)
- 老人辅助操作手机(语音控制)
- 企业合规审计(自动记录操作轨迹)
而你现在,已经掌握了它的核心使用方法。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。