news 2026/4/16 17:58:36

Python API怎么用?Open-AutoGLM远程连接示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python API怎么用?Open-AutoGLM远程连接示例

Python API怎么用?Open-AutoGLM远程连接示例

你有没有想过,不用手动点屏幕,只说一句“打开小红书搜西安美食”,手机就自动完成打开App、输入关键词、点击搜索、滚动浏览的全过程?这不是科幻电影,而是 Open-AutoGLM 正在做的事——它把你的安卓手机变成一个能听懂人话、看得清界面、下得了手的AI智能助理。

Open-AutoGLM 是智谱开源的手机端 AI Agent 框架,核心模型 autoglm-phone-9b 专为多模态手机操作设计。它不依赖 Root,不修改系统,只靠 ADB + 视觉语言模型 + 自动化规划,就能让普通安卓机获得接近“豆包手机”的体验。而真正让它灵活落地的关键,不是命令行那几行启动指令,而是背后可编程、可集成、可嵌入业务系统的 Python API。

本文不讲概念、不堆参数,只聚焦一件事:如何用 Python 代码,稳定、可控、可复用地远程连接并驱动 Open-AutoGLM 手机代理。你会看到从零配置设备到调用 API 发送指令的完整链路,所有代码均可直接运行,所有步骤都经过真机实测验证。


1. 理解 Open-AutoGLM 的通信架构

在动手写代码前,先理清它怎么工作。Open-AutoGLM 不是单体应用,而是一个清晰分层的远程协作系统:

  • 手机端:负责截图、执行点击/滑动/输入等操作,通过 ADB 与电脑通信
  • 服务端(云端或本地):运行 autoglm-phone-9b 模型,接收截图和指令,输出操作序列
  • 控制端(你的 Python 脚本):作为“大脑指挥官”,协调两端——它向服务端发自然语言指令,再把服务端返回的操作指令,翻译成 ADB 命令发给手机

关键点在于:Python API 不是直接调用大模型,而是作为控制端与服务端通信的桥梁,并封装了 ADB 设备管理逻辑。这意味着你可以把它嵌入自动化测试平台、客服工单系统,甚至做成企业内部的“手机操作中台”。

所以,当你看到from phone_agent.adb import ADBConnection,这不是在调用模型,而是在初始化一个“手机遥控器”。真正的 AI 推理发生在--base-url指向的服务端。


2. 环境准备:三步打通本地与手机的通道

API 再好,设备连不上就是空谈。这里不重复文档里的碎片步骤,而是按真实调试顺序,给出最简、最稳的配置路径。

2.1 ADB 必须能识别设备(USB 或 WiFi)

无论后续用哪种方式连接,第一步永远是让adb devices能稳定列出你的设备:

# 在终端执行,确保输出类似: # List of devices attached # 1234567890ABCDEF device adb devices
  • USB 连接:开启开发者模式 + USB 调试后,用原装数据线直连。如果显示unauthorized,请在手机弹窗点“允许”;如果显示offline,重启 ADB 服务:adb kill-server && adb start-server
  • WiFi 连接(推荐用于长期运行)
    # 1. 先用 USB 连接,启用 TCP/IP 模式 adb tcpip 5555 # 2. 拔掉 USB,连接同一 WiFi 后获取手机 IP(设置 → 关于手机 → 状态信息里找) # 3. 连接 WiFi 设备(替换为你的手机 IP) adb connect 192.168.1.100:5555

验证成功标志:adb shell getprop ro.build.version.release能返回 Android 版本号(如14),说明 ADB 通道已通。

2.2 安装 ADB Keyboard(解决输入问题)

Open-AutoGLM 需要向 App 输入文字(比如搜索关键词),但默认输入法无法被 ADB 控制。ADB Keyboard 就是为此而生:

  • 下载 APK:https://github.com/senzhk/ADBKeyBoard/releases
  • 安装后进入手机「设置 → 语言与输入法 → 当前输入法」,切换为ADB Keyboard
  • 验证:在终端执行adb shell input text "hello",手机屏幕应出现 “hello”

注意:部分 Android 13+ 设备需额外授权。若无反应,在「设置 → 应用 → ADB Keyboard → 权限」中开启“显示在其他应用上层”和“无障碍服务”。

2.3 克隆并安装 Open-AutoGLM 控制端

这一步不是部署模型,而是安装 Python SDK:

git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM pip install -r requirements.txt pip install -e .

安装完成后,你就能在任意 Python 脚本中导入phone_agent模块了。它提供的不是黑盒接口,而是清晰可读的类结构,比如ADBConnection管理设备,PhoneAgentClient封装服务端通信。


3. Python API 实战:从连接设备到执行指令

现在进入核心——用 Python 代码替代命令行,实现完全可控的远程操作。我们分四步走:连接设备 → 初始化代理客户端 → 发送指令 → 解析结果。

3.1 连接并管理设备(ADBConnection)

这是所有操作的前提。ADBConnection类帮你屏蔽了底层adb命令的复杂性:

from phone_agent.adb import ADBConnection, list_devices # 创建连接管理器实例 conn = ADBConnection() # 方式一:连接 WiFi 设备(推荐用于远程场景) success, message = conn.connect("192.168.1.100:5555") print(f"WiFi 连接状态: {message}") # 成功时输出 "Connected to 192.168.1.100:5555" # 方式二:连接 USB 设备(自动识别第一个 device) usb_success, usb_msg = conn.connect() print(f"USB 连接状态: {usb_msg}") # 列出当前所有已连接设备(含类型:usb / wifi) devices = list_devices() for device in devices: print(f"设备ID: {device.device_id} | 连接类型: {device.connection_type.value}")

这段代码做了三件事:

  1. 主动建立与手机的 ADB 连接(支持 IP 或自动发现)
  2. 返回结构化结果,让你知道连接是否成功、失败原因是什么
  3. 提供list_devices()这样的工具函数,方便你在多设备环境中精准选择目标

小技巧:conn.disconnect()可随时断开连接;conn.get_device_ip()能自动获取 WiFi 设备 IP,避免硬编码。

3.2 初始化代理客户端(PhoneAgentClient)

设备连上了,下一步是告诉 AI “你要干什么”。PhoneAgentClient就是那个把自然语言指令发给服务端、并等待操作序列返回的“传声筒”:

from phone_agent.client import PhoneAgentClient # 初始化客户端(指向你的服务端) client = PhoneAgentClient( base_url="http://192.168.1.200:8800/v1", # 替换为你的云服务器IP和端口 model="autoglm-phone-9b", timeout=300 # 设置超时,防止长任务卡死 ) # 发送指令(字符串即自然语言) instruction = "打开高德地图,搜索最近的火锅店" response = client.run(instruction) print(f"任务ID: {response.task_id}") print(f"状态: {response.status}") print(f"耗时: {response.elapsed_time:.1f} 秒")

client.run()返回的是一个PhoneAgentResponse对象,包含:

  • task_id:唯一任务标识,可用于日志追踪
  • statussuccess/failed/timeout
  • elapsed_time:端到端耗时(从发送指令到收到最终操作序列)
  • steps:详细的操作步骤列表(稍后详解)

关键参数说明:

  • base_url必须带/v1后缀,这是 Open-AutoGLM 服务端的标准 API 路径
  • model参数必须与服务端加载的模型名严格一致(如autoglm-phone-9b
  • timeout强烈建议设置,因为视觉理解+规划可能耗时较长(尤其首次加载)

3.3 解析并执行操作序列(steps)

服务端返回的不是最终结果,而是一系列可执行的原子操作。这才是 Open-AutoGLM 的“智能”所在——它把“搜火锅店”这个高层意图,拆解为机器能懂的底层动作:

# 继续上面的 response if response.status == "success": print("\n--- 操作步骤分解 ---") for i, step in enumerate(response.steps, 1): print(f"{i}. {step.action}: {step.parameters}") # 示例输出: # 1. Launch: {'package': 'com.autonavi.minimap'} # 2. Wait: {'duration': 3} # 3. Tap: {'x': 520, 'y': 120} # 4. Type: {'text': '火锅店'} # 5. Tap: {'x': 980, 'y': 180}

每个step是一个字典,包含:

  • action:操作类型(Launch,Tap,Type,Swipe,Back等)
  • parameters:执行所需参数(坐标、文本、包名等)

你完全可以基于这些步骤做二次开发:

  • 记录每一步耗时,分析性能瓶颈
  • Tap步骤加坐标偏移校准(适配不同分辨率)
  • 遇到Take_over步骤时,自动暂停并通知人工介入(如验证码)

3.4 完整可运行示例:一键执行全流程

把以上三步组合,就是一个生产就绪的脚本:

#!/usr/bin/env python3 # 文件名: auto_phone_task.py import time from phone_agent.adb import ADBConnection from phone_agent.client import PhoneAgentClient def main(): # Step 1: 连接设备 conn = ADBConnection() success, msg = conn.connect("192.168.1.100:5555") # 使用 WiFi if not success: print(f"设备连接失败: {msg}") return # Step 2: 初始化客户端 client = PhoneAgentClient( base_url="http://192.168.1.200:8800/v1", model="autoglm-phone-9b", timeout=300 ) # Step 3: 发送指令 instruction = "打开小红书,搜索‘北京秋天拍照圣地’,保存前三条笔记封面图" print(f"正在执行: {instruction}") try: response = client.run(instruction) print(f"\n 任务完成!耗时 {response.elapsed_time:.1f} 秒") print(f"共生成 {len(response.steps)} 个操作步骤") # Step 4: 打印关键步骤摘要 for step in response.steps[:3]: # 只看前3步 print(f" → {step.action} {step.parameters}") except Exception as e: print(f"❌ 执行异常: {e}") if __name__ == "__main__": main()

运行它,你会看到:

  • 设备连接状态实时反馈
  • 指令发送后等待响应(期间手机屏幕会自动操作)
  • 最终输出步骤数和首几步动作,便于快速验证逻辑

这个脚本的价值在于:它把原本需要记忆命令行参数、手动复制粘贴的流程,变成了一个可版本管理、可单元测试、可集成进 CI/CD 的 Python 模块。


4. 远程调试的三大避坑指南

在真实环境中,90% 的失败不是模型问题,而是环境配置细节。以下是高频问题的根因和解法:

4.1 “Connection refused” 错误

现象:Python 报错ConnectionRefusedError: [Errno 111] Connection refused
根因:base_url指向的服务端未运行,或防火墙拦截了端口
解法:

  • 在服务端机器执行curl http://localhost:8800/v1/health,确认服务存活
  • 检查云服务器安全组,放行8800端口(TCP 协议)
  • 若用内网穿透(如 frp),确认穿透配置正确,且base_url使用穿透后的域名

4.2 “Device not found” 或 ADB 操作无响应

现象:list_devices()返回空列表,或Tap指令手机无反应
根因:ADB 连接不稳定,或 ADB Keyboard 未生效
解法:

  • 执行adb devices后,立刻运行adb shell getprop ro.product.model,确认能读取设备型号
  • 若 WiFi 连接偶尔掉线,添加重连逻辑:
    for _ in range(3): success, msg = conn.connect("192.168.1.100:5555") if success: break time.sleep(2)

4.3 指令执行卡在“Wait”或“Take_over”

现象:任务长时间无进展,response.steps中出现大量Wait,或最后一步是Take_over
根因:服务端视觉模型未能识别当前界面元素(如按钮文字模糊、广告遮挡)
解法:

  • client.run()中增加max_retries=2参数,让客户端自动重试
  • 对关键步骤(如搜索框)添加显式等待:在Tap前插入Wait步骤,确保页面加载完成
  • 遇到Take_over时,主动捕获并提示人工:“请手动输入验证码,完成后按回车继续”

5. 进阶用法:让 API 更贴合你的业务场景

基础 API 已足够强大,但若想深度集成,还需掌握这些扩展能力:

5.1 自定义操作回调(hook)

你可以在每一步操作执行前后插入自定义逻辑,比如截图存档、性能打点:

def on_step_start(step): print(f"[HOOK] 即将执行: {step.action}") def on_step_end(step, result): if result == "success": print(f"[HOOK] {step.action} 完成") else: print(f"[HOOK] ❌ {step.action} 失败: {result}") # 初始化客户端时注册回调 client = PhoneAgentClient( base_url="http://192.168.1.200:8800/v1", model="autoglm-phone-9b", on_step_start=on_step_start, on_step_end=on_step_end )

5.2 批量任务调度

用一个脚本驱动多台手机并行执行不同任务:

from concurrent.futures import ThreadPoolExecutor tasks = [ ("192.168.1.101:5555", "打开美团搜咖啡"), ("192.168.1.102:5555", "打开抖音关注科技博主"), ("192.168.1.103:5555", "打开小红书搜穿搭"), ] def run_task(device_info): device_id, instruction = device_info conn = ADBConnection() conn.connect(device_id) client = PhoneAgentClient(base_url="http://192.168.1.200:8800/v1", model="autoglm-phone-9b") return client.run(instruction) # 并行执行 with ThreadPoolExecutor(max_workers=3) as executor: results = list(executor.map(run_task, tasks))

5.3 与企业系统对接(伪代码示意)

# 从企业微信 webhook 接收用户指令 def handle_wechat_message(msg): user_id = msg["sender"] instruction = msg["text"] # 调用 Open-AutoGLM 执行 client = PhoneAgentClient(...) response = client.run(instruction) # 将结果推送回用户 send_to_wechat(user_id, f"已完成:{instruction},耗时{response.elapsed_time}s")

6. 总结:API 是通往自动化手机的真正钥匙

回到最初的问题:Python API 怎么用?答案很朴素——它不是炫技的玩具,而是把“手机自动化”这件事,从命令行的一次性操作,变成可编程、可维护、可扩展的工程能力。

你学会了:

  • 如何用ADBConnection稳定管理设备连接,告别adb devices的不确定性
  • 如何用PhoneAgentClient封装服务端通信,让自然语言指令变成结构化响应
  • 如何解析steps操作序列,把 AI 的“思考过程”变成可审计、可干预的执行流
  • 如何绕过三大典型坑,让脚本在真实网络和设备环境下可靠运行
  • 如何用回调、并发、系统集成,把 API 融入你的业务毛细血管

Open-AutoGLM 的价值,不在于它多像豆包手机,而在于它把曾经属于大厂的“系统级自动化”能力,以开源、开放、可编程的方式,交到了每一个开发者手中。而 Python API,正是你握住这把钥匙的第一步。

--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:16:57

LightOnOCR-2-1B多语OCR应用:跨境电商独立站多语种商品图OCR+SEO优化

LightOnOCR-2-1B多语OCR应用:跨境电商独立站多语种商品图OCRSEO优化 1. 为什么跨境电商卖家需要多语种OCR工具? 你有没有遇到过这样的情况:刚收到一批来自德国供应商的商品图,图片里全是德文标签和参数,但团队里没人…

作者头像 李华
网站建设 2026/4/16 12:26:36

Qwen3:32B大模型实战:Clawdbot Web平台支持Markdown/代码块渲染演示

Qwen3:32B大模型实战:Clawdbot Web平台支持Markdown/代码块渲染演示 1. 为什么这个组合值得你花5分钟试试 你有没有遇到过这样的情况:在和大模型聊天时,它明明给出了很专业的回答,但文字挤成一团,代码没有高亮&#…

作者头像 李华
网站建设 2026/4/16 12:26:26

Qwen3-0.6B极致压缩方案:300MB内存跑大模型

Qwen3-0.6B极致压缩方案:300MB内存跑大模型 [【免费下载链接】Qwen3-0.6B Qwen3 是通义千问系列最新一代开源大语言模型,涵盖6款密集模型与2款混合专家(MoE)架构,参数量从0.6B至235B。Qwen3-0.6B以极小体积承载强大能…

作者头像 李华