news 2026/4/23 12:50:56

Open-AutoGLM教程:list_devices API返回值解析说明

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Open-AutoGLM教程:list_devices API返回值解析说明

Open-AutoGLM教程:list_devices API返回值解析说明

Open-AutoGLM – 智谱开源的手机端AI Agent框架

AutoGLM-Phone 是一个基于视觉语言模型的 AI 手机智能助理框架。它能以多模态方式理解屏幕内容,并通过 ADB 自动操控设备。用户只需用自然语言下指令,如“打开小红书搜美食”,模型即可解析意图、理解界面并自动规划、执行操作流程,无需手动点击。

1. 背景与使用场景

你有没有想过,让AI帮你操作手机?不是简单的语音助手,而是真正“看得懂”屏幕、“想得清楚”下一步、“点得准”每一个按钮的智能体。这就是Open-AutoGLM的目标——由智谱AI开源的手机端AI Agent框架,结合视觉语言模型与自动化控制能力,实现真正的“手机代驾”。

而在这个系统中,list_devices是一个关键的API接口,用于获取当前通过ADB连接的所有安卓设备信息。无论是本地调试还是远程控制,正确理解这个API的返回值,是确保后续操作顺利进行的第一步。

本文将带你深入解析list_devices的返回结构、字段含义以及在实际开发中的典型用法,帮助你快速上手 Open-AutoGLM 的设备管理模块。

2. 环境准备与项目部署

2.1 硬件与软件要求

在开始之前,请确认你的开发环境满足以下条件:

  • 操作系统:Windows 或 macOS(Linux也可支持)
  • Python版本:建议使用 Python 3.10 或更高版本
  • 安卓设备:Android 7.0 及以上系统的真机或模拟器
  • ADB工具:Android Debug Bridge,用于与设备通信
ADB 安装与配置

如果你还没有安装 ADB,可以从 Android SDK Platform Tools 下载对应平台的压缩包。

Windows 配置步骤

  1. 解压下载的platform-tools文件夹。
  2. Win + R输入sysdm.cpl,进入“系统属性” → “高级” → “环境变量”。
  3. 在“系统变量”中找到Path,点击编辑,添加解压后的platform-tools目录路径。
  4. 打开命令行输入adb version,若显示版本号则表示配置成功。

macOS 快速配置方法

# 假设 platform-tools 解压在 Downloads 目录下 export PATH=${PATH}:~/Downloads/platform-tools

你可以将这行命令写入.zshrc.bash_profile实现永久生效。

2.2 手机端设置

为了让电脑能够控制手机,需要开启以下权限:

  1. 开启开发者模式
    进入“设置” → “关于手机” → 连续点击“版本号”5~7次,直到提示已开启开发者选项。

  2. 启用USB调试
    返回设置主界面 → “开发者选项” → 开启“USB调试”。

  3. 安装 ADB Keyboard(可选但推荐)

    • 下载并安装 ADB Keyboard 的 APK。
    • 在“语言与输入法”中,将默认输入法切换为 ADB Keyboard。
    • 这样可以在无物理键盘的情况下实现文本输入自动化。

3. 部署 Open-AutoGLM 控制端

3.1 克隆项目并安装依赖

在本地电脑上执行以下命令,拉取 Open-AutoGLM 的源码并安装所需依赖:

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

注意-e .表示以可编辑模式安装,便于后续修改代码和调试。

3.2 连接设备方式

Open-AutoGLM 支持两种设备连接方式:USB 和 WiFi(远程ADB),适用于不同场景。

USB 连接

最稳定的方式,适合本地调试。

adb devices

正常输出应类似:

List of devices attached ABCDEF1234567890 device

其中ABCDEF1234567890就是你的设备ID。

WiFi 远程连接

适合远程调试或无线操作场景,需先通过USB激活TCP/IP模式。

# 第一步:使用USB连接后,开启5555端口监听 adb tcpip 5555 # 第二步:断开USB,通过IP连接(确保在同一局域网) adb connect 192.168.1.100:5555

连接成功后,再次运行adb devices应能看到该设备出现在列表中。

4. list_devices API 使用详解

4.1 API 功能简介

list_devices()是 Open-AutoGLM 提供的一个核心函数,位于phone_agent.adb模块中,用于动态获取当前所有已连接的安卓设备及其连接状态。

它不依赖外部命令,而是封装了对 ADB 的调用逻辑,返回结构化的设备对象列表,便于程序化处理。

4.2 导入与调用方式

from phone_agent.adb import list_devices devices = list_devices() for device in devices: print(f"设备ID: {device.device_id}") print(f"连接类型: {device.connection_type.value}") print(f"状态: {device.status}") print("---")

4.3 返回值结构解析

list_devices()返回的是一个包含Device对象的列表,每个对象具有以下属性:

属性名类型说明
device_idstr设备唯一标识符,如ABCDEF1234567890192.168.1.100:5555
connection_typeConnectionType 枚举连接方式:USBTCP
statusstr当前状态,通常为"device"(已连接)、"offline""unauthorized"
ConnectionType 枚举值说明
from enum import Enum class ConnectionType(Enum): USB = "usb" TCP = "tcp"
  • USB:表示通过数据线连接
  • TCP:表示通过网络(WiFi)连接

这意味着你可以根据connection_type判断设备是否为远程连接,从而决定是否需要特殊处理延迟或稳定性问题。

4.4 实际应用场景示例

场景一:自动选择可用设备

当多个设备同时连接时,可以编写逻辑自动筛选出状态正常的设备:

from phone_agent.adb import list_devices def get_first_healthy_device(): devices = list_devices() for dev in devices: if dev.status == "device": # 状态正常 return dev return None device = get_first_healthy_device() if device: print(f"选中设备: {device.device_id} ({device.connection_type.value})") else: print("没有可用设备")
场景二:区分本地与远程设备

有些操作(如频繁截图)对网络延迟敏感,可通过判断连接类型优化策略:

for dev in list_devices(): if dev.connection_type == ConnectionType.TCP: print(f"[警告] {dev.device_id} 为远程连接,可能影响响应速度") else: print(f"[提示] {dev.device_id} 为本地USB连接,推荐用于高频率任务")
场景三:结合 ADBConnection 类进行高级控制

除了list_devices(),还可以配合ADBConnection类实现更复杂的设备管理:

from phone_agent.adb import ADBConnection, list_devices conn = ADBConnection() # 查看当前连接设备 devices = list_devices() if not devices: print("未检测到任何设备") else: target = devices[0].device_id print(f"尝试连接: {target}") success, msg = conn.connect(target) if success: ip = conn.get_device_ip() print(f"设备内网IP: {ip}") # 启用TCP/IP模式以便后续无线连接 conn.enable_tcpip(5555) else: print(f"连接失败: {msg}") conn.disconnect(target)

这段代码展示了如何从设备发现 → 建立连接 → 获取信息 → 断开连接的完整流程。

5. 常见问题与排查建议

5.1 设备未出现在 list_devices 结果中

可能原因及解决方案:

  • 未授权调试:首次连接时手机会弹出“允许USB调试?”对话框,请点击“允许”。若误点了“拒绝”,可在“开发者选项”中清除授权记录重新连接。
  • 驱动问题(Windows):部分国产手机需安装官方USB驱动才能被识别。建议使用小米、华为、OPPO等品牌的官方助手工具辅助安装。
  • ADB服务异常:尝试重启ADB服务:
    adb kill-server adb start-server

5.2 list_devices 返回空列表但 adb devices 有输出

这种情况通常是由于 Python 环境中的adb调用路径与命令行不一致导致。

解决方法

  • 确保你在 Python 中使用的 ADB 与命令行是同一个。
  • 显式指定 ADB 路径(如果项目支持):
    import os os.environ["ANDROID_HOME"] = "/Users/yourname/Library/Android/sdk" os.environ["PATH"] += ":$ANDROID_HOME/platform-tools"

5.3 远程连接频繁掉线

WiFi连接不稳定是常见问题,尤其在网络信号差或跨路由器环境下。

建议

  • 使用5GHz频段WiFi提升稳定性
  • 减少并发操作频率,避免大量截图请求堆积
  • 关键任务优先使用USB连接

5.4 敏感操作的安全提醒

Open-AutoGLM 内置了敏感操作拦截机制,例如涉及支付、删除应用等行为不会自动执行,而是等待人工确认。这是为了防止误操作带来的风险。

你也可以在配置文件中自定义哪些动作需要人工介入,提升安全性。

6. 总结

list_devices虽然只是一个简单的API,但它在整个 Open-AutoGLM 框架中扮演着“设备探针”的角色。只有准确识别和管理连接的设备,后续的屏幕感知、意图理解、动作执行才有可能顺利进行。

通过本文,你应该已经掌握了:

  • 如何配置 ADB 环境并连接安卓设备
  • Open-AutoGLM 的基本部署流程
  • list_devices()的返回结构与字段含义
  • 如何在实际项目中使用该API进行设备筛选与状态判断
  • 常见连接问题的排查思路

下一步,你可以尝试结合自然语言指令,让AI代理真正“接管”你的手机,完成搜索、关注、点赞等一系列复杂操作。


获取更多AI镜像

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

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

从江瑶浴品牌竞争力深度研究报告

从江瑶浴,作为国家级非物质文化遗产,承载着瑶族千年养生智慧,正经历一场从深山秘方到现代消费品的深刻转型。随着“健康中国”战略的深入推进及消费者对传统自然疗法需求的激增,从江瑶浴市场在2025年呈现出蓬勃发展与激烈竞争并存…

作者头像 李华
网站建设 2026/4/23 11:35:10

cv_unet_image-matting输出质量下降?输入图像分辨率影响因素分析

cv_unet_image-matting输出质量下降?输入图像分辨率影响因素分析 1. 问题背景与现象描述 最近在使用 cv_unet_image-matting 进行图像抠图时,不少用户反馈:同样的参数设置下,不同图片的抠图效果差异明显。尤其是部分高清图或低分…

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

python之lession6

一、python代码的元素 1.变量 2.函数 3.类 4.模块 二、基本数据类型 int类型,float类型,bool类型,str字符串类型 三、运算符要注意的是 /表示的是浮点的除法 //表示的是整数的除法 **表示的是幂指数的计算 四、关于运算符 五、条件语句 if…

作者头像 李华
网站建设 2026/4/19 12:06:47

你还在用.NET 8?.NET 9的5个不可忽视的新功能已泄露

第一章:.NET 9新特性全景概览 .NET 9 作为微软最新发布的开发平台版本,带来了多项性能优化、语言增强和运行时改进,进一步强化了跨平台开发体验与云原生应用支持能力。本章将重点介绍其核心升级内容,帮助开发者快速掌握关键变化。…

作者头像 李华
网站建设 2026/4/17 12:41:59

verl如何快速上手?HuggingFace集成保姆级教程

verl如何快速上手?HuggingFace集成保姆级教程 verl 是一个灵活、高效且可用于生产环境的强化学习(RL)训练框架,专为大型语言模型(LLMs)的后训练设计。它由字节跳动火山引擎团队开源,是 HybridF…

作者头像 李华