Open-AutoGLM代码实例:Python调用API控制安卓设备实战
1. Open-AutoGLM – 智谱开源的手机端AI Agent框架
你有没有想过,让AI像真人一样操作你的手机?不是简单的自动化脚本,而是能“看懂”屏幕、理解语义、自主决策的智能助手。现在,这已经不再是科幻。
Open-AutoGLM 是由智谱AI开源的一款面向移动端的AI代理(Agent)框架,它基于强大的视觉语言模型(VLM),结合 ADB(Android Debug Bridge)技术,实现了真正意义上的“自然语言操控手机”。用户只需输入一句话,比如“打开小红书搜索美食探店推荐”,系统就能自动解析意图、识别当前界面元素、规划点击路径,并一步步完成整个操作流程。
这个项目的核心是AutoGLM-Phone,一个构建在多模态大模型之上的手机智能助理系统。它不仅能“读图”,还能“行动”。通过将视觉感知与动作规划相结合,它把复杂的交互任务变成了可执行的指令流。更关键的是,它是完全开源的,开发者可以本地部署、远程调试,甚至二次开发出属于自己的“数字分身”。
2. 核心原理:AI如何“看”和“动”
2.1 多模态理解:让AI读懂屏幕
传统自动化工具依赖控件ID或坐标点,一旦界面变化就失效。而 Open-AutoGLM 使用的是基于图像的视觉理解方式。
每当你下达一条指令,系统会:
- 通过 ADB 实时截取手机当前屏幕画面;
- 将截图 + 自然语言指令一起送入云端的视觉语言模型(如
autoglm-phone-9b); - 模型分析图像内容,识别按钮、输入框、列表项等 UI 元素;
- 结合上下文理解用户意图,输出下一步应执行的动作(如“点击位于屏幕下方的‘发现’图标”)。
这种方式不依赖应用内部结构,即使没有源码也能工作,适应性极强。
2.2 动作执行:从决策到点击
模型输出的动作会被解析为具体的 ADB 命令。例如:
- “点击搜索框” →
adb shell input tap x y - “输入文字” →
adb shell am broadcast -a ADB_INPUT_TEXT --es msg "美食" - “滑动页面” →
adb shell input swipe x1 y1 x2 y2
这些命令通过 ADB 发送到设备,实现精准操控。整个过程形成一个闭环:观察 → 理解 → 决策 → 执行 → 再观察,直到任务完成。
2.3 安全机制与人工介入
考虑到隐私和误操作风险,系统内置了多重保护:
- 敏感操作确认:涉及支付、删除、授权等高危动作时,会暂停并提示用户确认;
- 验证码/登录接管:遇到图形验证码或账号登录场景,自动交还控制权给用户;
- 远程调试支持:可通过 WiFi 连接设备,无需物理接触即可开发测试。
这种“人在环路”的设计,既保证了自动化效率,又不失安全性。
3. 本地环境搭建:连接你的真机
要让 Open-AutoGLM 跑起来,你需要准备一台电脑作为控制端,一部安卓手机作为被控设备,并确保两者能通过 ADB 通信。
3.1 硬件与软件要求
| 项目 | 要求 |
|---|---|
| 控制端操作系统 | Windows 或 macOS |
| Python 版本 | 推荐 3.10+ |
| 安卓设备 | Android 7.0 及以上版本 |
| 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文件,避免每次重启终端都要重新设置。
3.3 手机端设置
开启开发者模式
进入“设置” → “关于手机” → 连续点击“版本号”7次,直到提示“您已进入开发者模式”。启用 USB 调试
返回“设置”主菜单 → “开发者选项” → 开启“USB 调试”。安装 ADB Keyboard(用于文本输入)
- 下载 ADB Keyboard APK 并安装。
- 进入“语言与输入法”设置 → 将默认输入法切换为ADB Keyboard。
- 这样 AI 才能通过 ADB 向输入框发送文字。
4. 部署 Open-AutoGLM 控制端
一切准备就绪后,开始部署本地控制代码。
4.1 克隆项目仓库
git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM4.2 安装依赖
pip install -r requirements.txt pip install -e .注意:部分依赖可能需要编译,请确保你的系统已安装
wheel、setuptools和 C++ 构建工具(Windows 用户建议安装 Microsoft C++ Build Tools)。
5. 设备连接方式详解
Open-AutoGLM 支持两种连接方式:USB 和 WiFi。推荐先用 USB 调通,再尝试无线连接。
5.1 USB 连接(稳定首选)
使用数据线将手机连接电脑。
手机会弹出“允许USB调试?”提示,勾选“始终允许”并点击确定。
在终端运行:
adb devices输出应类似:
List of devices attached 1234567890ABCDEF device出现
device状态即表示连接成功。
5.2 WiFi 远程连接(灵活开发)
适用于远程调试或无数据线场景。
- 先用 USB 连接设备,启动 ADB TCP/IP 模式:
adb tcpip 5555 - 断开 USB 数据线。
- 获取手机 IP 地址(可在“设置”→“WLAN”中查看)。
- 使用 IP 连接设备:
成功后会返回:adb connect 192.168.x.x:5555connected to 192.168.x.x:5555
此后即可通过网络进行所有 ADB 操作。
6. 启动 AI 代理:让AI接管手机
6.1 命令行快速体验
在项目根目录下运行:
python main.py \ --device-id 1234567890ABCDEF \ --base-url http://192.168.1.100:8800/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"参数说明:
| 参数 | 说明 |
|---|---|
--device-id | 通过adb devices获取的设备ID,若为WiFi连接则填写IP:5555 |
--base-url | 云端 vLLM 服务的地址,格式为http://<IP>:<端口>/v1 |
--model | 指定使用的模型名称,需与服务端加载的一致 |
| 最后的字符串 | 用户输入的自然语言指令 |
执行后,你会看到 AI 开始自动操作手机:解锁、打开应用、搜索、点击关注……全程无需手动干预。
6.2 Python API 编程调用
除了命令行,你还可以将其集成进自己的 Python 脚本中,实现更复杂的逻辑控制。
from phone_agent.adb import ADBConnection, list_devices # 创建 ADB 连接管理器 conn = ADBConnection() # 连接远程设备(WiFi) success, message = conn.connect("192.168.1.100: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}") # 断开连接 conn.disconnect("192.168.1.100:5555")这段代码展示了如何用 Python 动态管理设备连接,非常适合嵌入到自动化测试平台或远程运维系统中。
7. 常见问题与排查建议
7.1 ADB 连接失败
现象:
adb devices显示unauthorized
解决:检查手机是否弹出授权对话框,确认电脑指纹并点击“允许”。现象:
adb connect失败或超时
解决:确保手机与电脑在同一局域网;关闭防火墙或杀毒软件;尝试重启 ADB 服务:adb kill-server adb start-server
7.2 模型无响应或乱码
- 检查点:
- 确认 vLLM 服务正常运行且监听正确端口;
- 检查
--base-url是否拼写错误(注意/v1后缀); - 查看服务端日志是否有 OOM(显存不足)报错;
- 确保
max-model-len设置足够大(建议 ≥ 4096)以容纳长上下文。
7.3 文字输入失败
- 原因:未正确设置 ADB Keyboard 为默认输入法。
- 验证方法:在终端执行:
观察当前焦点输入框是否出现“Hello”字样。adb shell am broadcast -a ADB_INPUT_TEXT --es msg "Hello"
7.4 屏幕识别不准
- 优化建议:
- 提高截图分辨率(修改源码中的截图尺寸);
- 避免反光或遮挡屏幕;
- 对于复杂界面,可尝试拆分指令,分步执行。
8. 总结
Open-AutoGLM 不只是一个技术玩具,它代表了一种全新的交互范式——用自然语言直接操控设备。无论是批量处理重复操作、辅助老年人使用手机,还是构建全自动的移动测试机器人,它的潜力都远超传统自动化方案。
本文带你完成了从环境配置、设备连接到实际调用的完整流程。你现在完全可以:
- 用一行命令让 AI 帮你刷短视频;
- 写个脚本自动收集竞品 App 的首页信息;
- 搭建一个远程“AI客服”,帮家人解决手机使用问题。
更重要的是,这一切都建立在开源、可控、可定制的基础上。你可以自由扩展功能,接入更多模型,甚至训练专属的垂直领域代理。
未来已来,只是分布不均。而现在,你已经拿到了通往未来的钥匙。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。