news 2026/4/18 8:04:23

Open-AutoGLM从零开始:Python API连接远程设备完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Open-AutoGLM从零开始:Python API连接远程设备完整指南

Open-AutoGLM从零开始:Python API连接远程设备完整指南

Open-AutoGLM 是智谱开源的手机端 AI Agent 框架,它把大模型能力真正带到了指尖——不是在云端跑个 demo,而是让 AI 真正“看见”你的手机屏幕、“理解”当前界面、“动手”完成操作。它不依赖预设脚本,也不靠固定规则匹配,而是用视觉语言模型做感知,用智能规划做决策,再通过 ADB 实现精准执行。一句话说:你动嘴,它动手。

AutoGLM-Phone 是这个框架的核心落地形态。它能以多模态方式理解屏幕内容,并通过 ADB 自动操控设备。用户只需用自然语言下指令,比如“打开小红书搜美食”,模型就能解析意图、识别当前 App 界面、判断按钮位置、模拟点击、输入文字、滑动页面,一气呵成。而 Phone Agent 则是基于 AutoGLM 构建的完整手机端智能助理系统,不仅支持本地 USB 控制,更关键的是——它原生支持远程 ADB 调试能力。你可以把手机放在客厅,电脑放在书房,甚至服务器部署在云上,全程通过 WiFi 或公网连接控制真机。它还内置了敏感操作确认机制,在登录、支付、验证码等关键环节会暂停并提示人工接管,兼顾自动化与安全性。

下面我们就从零开始,手把手带你完成整个链路:本地电脑配置 → 手机端设置 → 控制端部署 → Python API 远程连接 → 实际指令调用。全程不绕弯、不跳步,每一步都可验证、可复现。

1. 环境准备:让电脑“认得”你的手机

要让本地电脑能指挥安卓设备,第一步不是写代码,而是打通底层通信通道。这依赖 ADB(Android Debug Bridge)——它是 Android 官方提供的调试桥接工具,也是 Open-AutoGLM 控制真机的唯一通路。

1.1 硬件与基础环境要求

  • 操作系统:Windows 10/11 或 macOS Monterey 及以上(Linux 同理,本文以 Win/macOS 为主)
  • Python 版本:建议使用 Python 3.10+(避免因 asyncio 或 typing 模块差异导致兼容问题)
  • 安卓设备:Android 7.0(Nougat)及以上版本的真机或模拟器(推荐真机,模拟器对屏幕截图和触控模拟支持有限)
  • ADB 工具:必须独立安装,不能只靠 Android Studio 带的版本(因其路径常被隐藏且不易加入环境变量)

为什么强调独立安装 ADB?
Open-AutoGLM 的ADBConnection类会主动调用adb devicesadb shell screencapadb shell input tap等命令。如果 ADB 不在系统 PATH 中,程序会在运行时直接报错:“adb: command not found”,而不是给你友好的提示。提前配好,省去 80% 的排查时间。

1.2 Windows 下 ADB 环境变量配置(实测有效)

别点开各种“一键配置工具”,手动配最稳:

  1. 去 Android SDK Platform-Tools 官网 下载最新 ZIP 包(如platform-tools-latest-windows.zip
  2. 解压到一个固定路径,例如:C:\adb
  3. Win + R输入sysdm.cpl→ “高级”选项卡 → “环境变量”
  4. 在“系统变量”中找到Path→ “编辑” → “新建” → 粘贴C:\adb
  5. 打开新终端(重要!旧终端不会自动加载新变量),输入:
    adb version
    若输出类似Android Debug Bridge version 34.0.5,说明成功。

1.3 macOS 下 ADB 配置(Terminal 一行搞定)

同样下载 platform-tools,解压后假设路径为~/Downloads/platform-tools

# 临时生效(当前 Terminal 有效) export PATH="$PATH:~/Downloads/platform-tools" # 永久生效(写入 shell 配置) echo 'export PATH="$PATH:~/Downloads/platform-tools"' >> ~/.zshrc source ~/.zshrc

验证方式同上:adb version。注意 macOS 默认 shell 是 zsh,不是 bash,别写错配置文件。

2. 手机端设置:打开“控制权限”的三把钥匙

电脑有了 ADB,手机还得“点头同意”。这不是信任问题,是 Android 系统级的安全设计。三步缺一不可:

2.1 开启开发者模式

路径因品牌略有差异,但逻辑统一:
设置 → 关于手机 → 连续点击“版本号”7 次
直到弹出提示:“您现在处于开发者模式”。

小技巧:部分国产机型(如小米、华为)需先开启“MIUI 优化”或“系统更新”里的“开发者选项开关”,再点版本号才生效。

2.2 启用 USB 调试

回到设置首页 →开发者选项 → 找到“USB 调试”并开启
首次开启时,手机会弹窗询问“允许 USB 调试吗?”,勾选“始终允许”,再点确定。

注意:如果后续用 WiFi 连接,这一步仍是必需的——因为adb tcpip命令必须通过 USB 首次握手才能启用 TCP/IP 模式。

2.3 安装并启用 ADB Keyboard(解决输入难题)

Open-AutoGLM 要帮你在搜索框里打字,但默认输入法无法被 ADB 直接控制。解决方案是换一个“听命令”的输入法:

  1. 下载 ADB Keyboard APK(推荐 v1.3+)
  2. 用 USB 连接手机,通过adb install adbkeyboard.apk安装(或手动安装)
  3. 进入手机设置 → 语言与输入法 → 当前输入法 → 选择 ADB Keyboard
  4. 返回设置 →开发者选项 → 默认输入法 → 选择 ADB Keyboard

验证是否生效:断开 USB,在 Terminal 输入
adb shell am broadcast -a ADB_INPUT_TEXT --es msg "hello"
如果手机当前焦点输入框出现 “hello”,说明 ADB Keyboard 已就绪。

3. 部署控制端:把 Open-AutoGLM 装进你的电脑

现在软硬件通道已通,下一步是把控制大脑——Open-AutoGLM 的客户端代码——部署到本地。

3.1 克隆仓库与安装依赖

打开终端(Windows 推荐 PowerShell,macOS 用 Terminal),执行:

# 1. 克隆官方仓库(非 fork,确保获取最新稳定版) 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 .

pip install -e .的作用是“开发模式安装”,它把当前目录作为可导入的 Python 包。这样你修改phone_agent/下的代码,main.py就能立刻生效,无需反复重装。

3.2 理解项目结构(关键文件速览)

不必全读源码,先盯住三个核心模块:

  • main.py:命令行入口,封装了从截图→推理→动作生成→执行的全流程
  • phone_agent/adb.py:所有 ADB 操作的封装,包括connect()screenshot()tap()text()等方法
  • phone_agent/agent.py:AI Agent 核心逻辑,负责调用远端模型 API、解析返回的 JSON 动作指令、做安全校验

你后续写自己的自动化脚本,90% 的工作都在adb.pyagent.py的组合调用上。

4. 设备连接实战:USB 与 WiFi 两种方式全掌握

Open-AutoGLM 支持两种连接模式:USB(稳定可靠,适合调试)和 WiFi(灵活自由,适合远程)。我们分别实操。

4.1 USB 连接:即插即用,5 秒验证

  1. 用原装数据线连接手机与电脑
  2. 手机弹窗确认“允许 USB 调试”,勾选“始终允许”
  3. 终端执行:
    adb devices
    输出应类似:
    List of devices attached 1234567890abcdef device
    出现device状态,说明连接成功。1234567890abcdef就是你的--device-id

4.2 WiFi 远程连接:摆脱线缆,实现真·远程控制

这是 Open-AutoGLM 的亮点能力。分三步走:

步骤 1:USB 首次握手,启用 TCP/IP 模式
adb tcpip 5555

手机会显示“正在重新启动 adbd 以进行 TCP/IP 连接”,几秒后提示成功。

步骤 2:断开 USB,用 WiFi 连接

先查手机 IP(设置 → WLAN → 点击当前网络 → 查看 IP 地址,通常是192.168.x.x
然后执行:

adb connect 192.168.1.100:5555

若输出connected to 192.168.1.100:5555,即成功。

步骤 3:验证远程连通性
adb -s 192.168.1.100:5555 devices adb -s 192.168.1.100:5555 shell getprop ro.build.version.release

后者应返回安卓版本号(如13),证明远程 shell 可用。

提示:WiFi 连接不稳定?试试关闭手机“智能 WiFi 切换”或“WLAN+”功能,这些特性会让手机在后台自动断开 ADB 所需的长连接。

5. Python API 远程连接:用代码接管手机

命令行main.py是快速验证,但工程化必须用 API。Open-AutoGLM 提供了清晰、面向对象的 Python 接口,核心就是ADBConnection类。

5.1 基础连接与设备管理

以下代码可在任意 Python 脚本中运行(无需在 Open-AutoGLM 根目录):

from phone_agent.adb import ADBConnection, list_devices # 1. 创建连接管理器实例 conn = ADBConnection() # 2. 连接远程设备(支持 IP:port 或 device_id) success, message = conn.connect("192.168.1.100:5555") print(f"连接状态: {message}") # 成功时输出 "Connected successfully" # 3. 列出所有已连接设备(USB/WiFi) devices = list_devices() for device in devices: print(f"{device.device_id} - {device.connection_type.value}") # 输出示例:192.168.1.100:5555 - wifi # 4. (可选)为 USB 设备启用 TCP/IP(方便后续切 WiFi) # success, message = conn.enable_tcpip(5555) # ip = conn.get_device_ip() # 自动获取设备 IP # print(f"设备 IP: {ip}") # 5. 断开连接 conn.disconnect("192.168.1.100:5555")

这段代码的价值在于:它把 ADB 的底层命令(adb connectadb devices)封装成了直白的 Python 方法,你不再需要拼接字符串、解析 stdout,所有错误都以(False, "error msg")元组返回,便于异常处理。

5.2 屏幕截图与动作执行(真实可用的最小闭环)

光连上没用,得让 AI “看见”并“动手”。下面这段代码,完成了 Open-AutoGLM 最核心的两步:

from phone_agent.adb import ADBConnection import time conn = ADBConnection() conn.connect("192.168.1.100:5555") # 1. 截图并保存到本地(用于后续模型分析) screenshot_path = "screen.png" success, msg = conn.screenshot(screenshot_path) if not success: print(f"截图失败: {msg}") else: print(f"截图已保存至 {screenshot_path}") # 2. 模拟一次点击(x=500, y=1200,单位像素) success, msg = conn.tap(500, 1200) print(f"点击结果: {msg}") # 3. 输入文字(需确保 ADB Keyboard 已启用) success, msg = conn.text("Hello from Open-AutoGLM!") print(f"输入结果: {msg}") time.sleep(1) # 等待 UI 响应 conn.disconnect("192.168.1.100:5555")

关键点:conn.screenshot()返回的是本地路径,这意味着你可以把它直接喂给自己的 VLM 模型;conn.tap()conn.text()是原子操作,调用即执行,没有中间状态。这就是“远程控制”的本质——把手机当成本地外设来用。

6. 启动 AI 代理:让大模型真正“动手”

连接只是铺路,真正的智能在云端模型。Open-AutoGLM 的设计哲学是:控制端轻量化,AI 端专业化。你本地只管传图、收指令、执行动作;所有“理解屏幕”、“规划步骤”、“生成动作”的重活,都交给部署在服务器上的autoglm-phone-9b模型。

6.1 命令行快速启动(适合调试)

在 Open-AutoGLM 根目录下执行:

python main.py \ --device-id 192.168.1.100:5555 \ --base-url http://123.56.78.90:8800/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"

参数说明:

  • --device-id:你的设备标识(USB ID 或 WiFi IP:port)
  • --base-url:指向你部署的 vLLM 服务地址(需提前映射端口,如 8800)
  • --model:模型名称,必须与 vLLM 启动时注册的名称一致
  • 最后字符串:自然语言指令,支持中文,越具体成功率越高

实际效果:程序会自动截图 → 发送图片+文字到云端 → 接收 JSON 格式动作序列(如[{"action": "click", "x": 120, "y": 340}, {"action": "text", "content": "dycwo11nt61d"}])→ 逐条执行 → 最终完成关注。

6.2 Python 脚本集成(生产推荐)

把上面的流程封装成函数,便于嵌入业务系统:

from phone_agent.agent import PhoneAgent from phone_agent.adb import ADBConnection # 初始化连接与 Agent conn = ADBConnection() conn.connect("192.168.1.100:5555") agent = PhoneAgent( base_url="http://123.56.78.90:8800/v1", model_name="autoglm-phone-9b", device_connection=conn ) # 执行任务(自动完成截图→推理→执行全链路) result = agent.run("打开小红书,搜索'北京烤鸭',进入第一个笔记,点赞并收藏") print(f"任务状态: {result.status}") print(f"执行步骤: {len(result.actions)} 步") print(f"耗时: {result.duration:.2f} 秒") conn.disconnect("192.168.1.100:5555")

PhoneAgent.run()是最高层封装,它内部已处理:

  • 多次截图(防动态界面)
  • 错误重试(网络抖动、模型超时)
  • 敏感动作拦截(如adb shell input keyevent 26关机指令会被拒绝)
  • 人工接管钩子(遇到验证码时抛出HumanInterventionRequired异常)

7. 常见问题排查:少走弯路的实战经验

即使按步骤操作,也常卡在几个经典坑位。以下是真实踩坑总结:

7.1 “Connection refused” —— 云服务器端口没放行

现象:--base-url指向云服务器,但main.py报错ConnectionRefusedError
原因:云服务器防火墙(如阿里云安全组、腾讯云网络 ACL)未开放8800端口
解决:登录云控制台 → 找到对应 ECS 实例 → 编辑安全组规则 → 添加入方向规则:端口8800,协议TCP,授权对象0.0.0.0/0(或限制为你的办公 IP)

7.2 “Device offline” —— WiFi 连接掉线

现象:adb devices显示offline,或conn.connect()返回失败
原因:手机 WiFi 省电策略自动断开闲置连接
解决:

  • 手机设置 → WLAN → 高级 → 关闭“WLAN 休眠策略”
  • 或在终端定期保活:while true; do adb connect 192.168.1.100:5555; sleep 30; done

7.3 模型返回乱码 / 无动作 —— vLLM 启动参数不匹配

现象:main.py日志显示收到响应,但actions字段为空或格式错误
原因:autoglm-phone-9bmax-model-lengpu-memory-utilization敏感。若显存不足或上下文截断过短,模型无法生成完整 JSON
解决:启动 vLLM 时务必指定:

python -m vllm.entrypoints.api_server \ --model zai-org/autoglm-phone-9b \ --tensor-parallel-size 1 \ --max-model-len 8192 \ --gpu-memory-utilization 0.95 \ --port 8800

max-model-len 8192是硬性要求,低于此值会导致 JSON 截断;gpu-memory-utilization 0.95确保显存足够加载视觉编码器。

8. 总结:你已掌握手机 AI Agent 的完整控制权

到这里,你已经走完了 Open-AutoGLM 从零到落地的全部关键路径:

  • 本地电脑装好了 ADB,能稳定识别手机;
  • 手机开启了开发者模式、USB 调试、ADB Keyboard,获得了“被操控”的能力;
  • 控制端代码部署完毕,ADBConnection让远程连接像调用函数一样简单;
  • 你亲手写了截图、点击、输入的闭环代码,理解了底层交互逻辑;
  • 你用PhoneAgent成功驱动云端大模型,把一句“打开抖音搜博主”变成了真实操作;
  • 你还掌握了最常见的三个故障点及解法,不再是“报错就懵”。

Open-AutoGLM 的价值,从来不只是“又一个手机自动化工具”。它把大模型从“对话盒子”升级为“数字双手”——你能用它批量测试 App UI、自动生成短视频脚本并执行发布、为视障用户实时描述屏幕、甚至构建无人值守的电商运营机器人。而这一切的起点,就是今天你亲手敲下的这几行adb connectconn.tap()

下一步,不妨试试:
PhoneAgent.run()封装成 Web API,用 Flask 暴露一个/do-task接口;
结合schedule库,每天上午 9 点自动打开企业微信打卡;
cv2对截图做 OCR 预处理,把模糊文字转成清晰文本再送模型。

技术的边界,永远由动手的人定义。


获取更多AI镜像

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

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

PlayIntegrityFix 深度指南:突破安卓完整性验证困境

PlayIntegrityFix 深度指南:突破安卓完整性验证困境 【免费下载链接】PlayIntegrityFix Fix Play Integrity (and SafetyNet) verdicts. 项目地址: https://gitcode.com/GitHub_Trending/pl/PlayIntegrityFix 验证困境:当自定义设备遇上谷歌安全壁…

作者头像 李华
网站建设 2026/4/16 9:18:18

如何用ANTs破解神经影像分析难题?顶尖研究者都在用的开源利器

如何用ANTs破解神经影像分析难题?顶尖研究者都在用的开源利器 【免费下载链接】ANTs 项目地址: https://gitcode.com/gh_mirrors/ants/ANTs 神经影像分析的隐形翅膀:ANTs核心价值解析 在医学影像的世界里,如何让计算机"看懂&qu…

作者头像 李华
网站建设 2026/4/18 4:48:04

高效专家并行通信库DeepEP零基础配置与性能调优指南

高效专家并行通信库DeepEP零基础配置与性能调优指南 【免费下载链接】DeepEP DeepEP: an efficient expert-parallel communication library 项目地址: https://gitcode.com/GitHub_Trending/de/DeepEP 当你在训练大规模混合专家(Mixture-of-Experts, MoE&am…

作者头像 李华
网站建设 2026/4/18 6:33:34

如何通过DataHub构建企业级元数据平台:从部署到治理全攻略

如何通过DataHub构建企业级元数据平台:从部署到治理全攻略 【免费下载链接】datahub The Metadata Platform for the Modern Data Stack 项目地址: https://gitcode.com/GitHub_Trending/da/datahub 副标题:5个核心步骤3个避坑技巧,打…

作者头像 李华
网站建设 2026/4/17 22:44:29

3个突破性步骤,让CVAT模型集成实现自动化标注效率跃升

3个突破性步骤,让CVAT模型集成实现自动化标注效率跃升 【免费下载链接】cvat Annotate better with CVAT, the industry-leading data engine for machine learning. Used and trusted by teams at any scale, for data of any scale. 项目地址: https://gitcode.…

作者头像 李华