2026/5/24 5:45:34
网站建设
项目流程
网站样式下载,谷歌企业邮箱注册,山东网站建设公司哪家权威,网页优化公司Python API怎么用#xff1f;Open-AutoGLM远程连接示例
你有没有想过#xff0c;不用手动点屏幕#xff0c;只说一句“打开小红书搜西安美食”#xff0c;手机就自动完成打开App、输入关键词、点击搜索、滚动浏览的全过程#xff1f;这不是科幻电影#xff0c;而是 Open…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 devicesUSB 连接开启开发者模式 USB 调试后用原装数据线直连。如果显示unauthorized请在手机弹窗点“允许”如果显示offline重启 ADB 服务adb kill-server adb start-serverWiFi 连接推荐用于长期运行# 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 就是为此而生下载 APKhttps://github.com/senzhk/ADBKeyBoard/releases安装后进入手机「设置 → 语言与输入法 → 当前输入法」切换为ADB Keyboard验证在终端执行adb shell input text hello手机屏幕应出现 “hello”注意部分 Android 13 设备需额外授权。若无反应在「设置 → 应用 → ADB Keyboard → 权限」中开启“显示在其他应用上层”和“无障碍服务”。2.3 克隆并安装 Open-AutoGLM 控制端这一步不是部署模型而是安装 Python SDKgit 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(fWiFi 连接状态: {message}) # 成功时输出 Connected to 192.168.1.100:5555 # 方式二连接 USB 设备自动识别第一个 device usb_success, usb_msg conn.connect() print(fUSB 连接状态: {usb_msg}) # 列出当前所有已连接设备含类型usb / wifi devices list_devices() for device in devices: print(f设备ID: {device.device_id} | 连接类型: {device.connection_type.value})这段代码做了三件事主动建立与手机的 ADB 连接支持 IP 或自动发现返回结构化结果让你知道连接是否成功、失败原因是什么提供list_devices()这样的工具函数方便你在多设备环境中精准选择目标小技巧conn.disconnect()可随时断开连接conn.get_device_ip()能自动获取 WiFi 设备 IP避免硬编码。3.2 初始化代理客户端PhoneAgentClient设备连上了下一步是告诉 AI “你要干什么”。PhoneAgentClient就是那个把自然语言指令发给服务端、并等待操作序列返回的“传声筒”from phone_agent.client import PhoneAgentClient # 初始化客户端指向你的服务端 client PhoneAgentClient( base_urlhttp://192.168.1.200:8800/v1, # 替换为你的云服务器IP和端口 modelautoglm-phone-9b, timeout300 # 设置超时防止长任务卡死 ) # 发送指令字符串即自然语言 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/timeoutelapsed_time端到端耗时从发送指令到收到最终操作序列steps详细的操作步骤列表稍后详解关键参数说明base_url必须带/v1后缀这是 Open-AutoGLM 服务端的标准 API 路径model参数必须与服务端加载的模型名严格一致如autoglm-phone-9btimeout强烈建议设置因为视觉理解规划可能耗时较长尤其首次加载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_urlhttp://192.168.1.200:8800/v1, modelautoglm-phone-9b, timeout300 ) # 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_retries2参数让客户端自动重试对关键步骤如搜索框添加显式等待在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_urlhttp://192.168.1.200:8800/v1, modelautoglm-phone-9b, on_step_starton_step_start, on_step_endon_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_urlhttp://192.168.1.200:8800/v1, modelautoglm-phone-9b) return client.run(instruction) # 并行执行 with ThreadPoolExecutor(max_workers3) 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_sourcemirror_blog_end)提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。