和田地区网站建设_网站建设公司_ASP.NET_seo优化
2026/3/2 14:11:11 网站建设 项目流程

AutoGLM-Phone代码实例:list_devices获取设备ID方法详解

Open-AutoGLM 是智谱开源的一款面向手机端的 AI Agent 框架,旨在通过多模态理解与自动化操作能力,让大模型真正“动手”完成用户指令。其核心项目 AutoGLM-Phone 构建了一个能“看懂屏幕、执行操作”的智能助理系统,为开发者提供了从自然语言到设备控制的完整链路。

1. AutoGLM-Phone 是什么?让AI真正操控你的手机

你有没有想过,只需说一句“帮我打开小红书搜美食”,手机就能自动完成打开App、输入关键词、点击搜索这一系列动作?这不再是科幻场景,而是 AutoGLM-Phone 正在实现的能力。

AutoGLM-Phone 是一个基于视觉语言模型(VLM)的 AI 手机智能助理框架。它不仅能“看到”手机屏幕上的内容,还能理解用户的自然语言指令,并通过 ADB(Android Debug Bridge)自动执行点击、滑动、输入等操作。整个过程无需人工干预,就像有一个“数字分身”在替你使用手机。

它的核心技术架构分为三层:

  • 感知层:通过截图获取当前屏幕画面,结合视觉语言模型分析界面元素(如按钮、输入框、标题等),实现对 UI 的语义理解。
  • 决策层:根据用户指令和当前界面状态,规划出下一步操作路径,比如“先点击搜索图标,再输入文字”。
  • 执行层:利用 ADB 发送底层命令,完成实际的设备控制,包括点击坐标、输入文本、滑动屏幕等。

更贴心的是,系统内置了敏感操作确认机制。当涉及支付、删除或登录等高风险行为时,会暂停并提示用户确认,确保安全可控。同时支持人工接管,尤其适用于验证码输入等需要人类判断的环节。

此外,AutoGLM-Phone 支持远程调试模式,可以通过 WiFi 或局域网连接设备,极大提升了开发和测试的灵活性。无论是本地真机还是云手机,都能轻松接入。

2. 环境准备:搭建本地控制端的基础条件

要让 AutoGLM-Phone 跑起来,首先得在本地电脑上配置好控制环境。这个过程并不复杂,但每一步都至关重要。

2.1 系统与软件要求

你需要准备以下几样东西:

  • 操作系统:Windows 或 macOS 均可,Linux 用户也可适配。
  • Python版本:建议使用 Python 3.10 或更高版本,避免依赖冲突。
  • 安卓设备:Android 7.0 及以上系统的手机或模拟器。
  • ADB工具:这是连接和控制安卓设备的核心组件。

2.2 安装并配置 ADB

ADB 是 Android SDK 的一部分,你可以单独下载 Platform Tools 包来获取它。

Windows 配置步骤:
  1. 下载 Android Platform Tools 并解压。
  2. 使用Win + R输入sysdm.cpl,打开“系统属性”。
  3. 进入“高级”选项卡 → “环境变量”。
  4. 在“系统变量”中找到Path,点击编辑,添加 ADB 解压后的完整路径(例如C:\platform-tools)。
  5. 打开命令行,输入adb version,如果显示版本号说明安装成功。
macOS 配置方法:

如果你使用 Mac,可以在终端中临时添加路径:

export PATH=${PATH}:~/Downloads/platform-tools

为了永久生效,可以将这条命令写入 shell 配置文件(如.zshrc.bash_profile)。

验证方式同样是运行adb version,看到输出即表示配置完成。

3. 手机设置:开启调试权限与输入法

光有电脑端还不行,手机也得“听话”。以下是必须开启的几项设置。

3.1 开启开发者模式

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

3.2 启用 USB 调试

返回设置主界面,进入“开发者选项”,找到并勾选“USB 调试”。部分厂商可能还会弹出授权提示,记得允许电脑调试。

3.3 安装 ADB Keyboard(关键!)

这是一个特殊的虚拟键盘,能让 AI 通过 ADB 直接向输入框发送文字,而不需要手动打字。

  • 下载 ADB Keyboard APK 并安装。
  • 进入“语言与输入法”设置,将默认输入法切换为ADB Keyboard

这一步非常关键,否则后续无法实现自动输入文本。

4. 部署 Open-AutoGLM 控制端代码

现在我们开始部署本地控制程序。

4.1 克隆仓库并安装依赖

打开终端或命令行工具,执行以下命令:

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

其中-e .表示以可编辑模式安装包,便于后续修改源码。

4.2 检查设备连接状态

确保手机通过 USB 连接到电脑,然后运行:

adb devices

正常情况下你会看到类似这样的输出:

List of devices attached 1234567890ABCDEF device

这里的1234567890ABCDEF就是你的设备 ID,也就是后面要用到的关键参数。

5. 设备连接方式详解:USB 与 WiFi 远程双模式

AutoGLM-Phone 支持两种连接方式:USB 和 WiFi,各有适用场景。

5.1 USB 连接(推荐初学者)

最稳定的方式就是用数据线直连。只要 ADB 驱动正常,基本不会掉线。

adb devices

确认设备出现在列表中即可。

5.2 WiFi 远程连接(适合无线调试)

如果你想摆脱数据线束缚,可以用 WiFi 连接。前提是设备和电脑在同一局域网下。

第一步,先用 USB 连接手机,并开启 TCP/IP 模式:

adb tcpip 5555

第二步,拔掉 USB 线,使用手机 IP 地址连接:

adb connect 192.168.x.x:5555

替换192.168.x.x为你的手机真实 IP(可在 WLAN 设置中查看)。

连接成功后,再次运行adb devices,会看到设备以 IP 形式列出。

这种方式特别适合长时间运行任务或远程调试服务器上的云手机。

6. 核心API解析:list_devices 获取设备信息实战

在实际开发中,我们往往需要动态获取当前连接的所有设备信息,而不是手动记下 ID。这时就要用到phone_agent.adb模块中的核心函数 ——list_devices()

6.1 API 使用示例

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}")

输出结果可能是:

1234567890ABCDEF - usb 192.168.1.100:5555 - wireless

每个设备对象包含两个重要属性:

  • device_id:设备唯一标识符,用于后续操作指定目标。
  • connection_type:连接类型,分为usbwireless,方便区分连接方式。

6.2 动态获取设备IP的小技巧

有时候我们需要知道某台 USB 设备的 IP 地址,以便转为无线连接。可以通过以下方式实现:

# 先启用 TCP/IP 模式 success, message = conn.enable_tcpip(5555) if success: ip = conn.get_device_ip() print(f"设备 IP: {ip}") else: print("无法获取IP,请检查网络")

enable_tcpip(port)会尝试在设备上启动 ADB 的 TCP 服务,get_device_ip()则通过 shell 命令读取当前网络接口的 IP 地址。

6.3 实际应用场景举例

假设你在做自动化测试平台,需要支持多设备并发控制。你可以这样设计逻辑:

devices = list_devices() if not devices: print("没有检测到任何设备") else: for dev in devices: if "emulator" not in dev.device_id: # 排除模拟器 run_task_on_device(dev.device_id)

或者,在 Web 控制台中展示所有可用设备列表,让用户选择操作目标。

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

一切准备就绪,现在可以启动 AI 代理,让它接管手机了。

7.1 命令行方式快速体验

在项目根目录运行:

python main.py \ --device-id <你的设备ID或IP:5555> \ --base-url http://<云服务器IP>:<映射端口>/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"

参数说明:

  • --device-id:来自adb devices输出的设备 ID。
  • --base-url:指向运行 vLLM 的云服务地址,需确保端口开放。
  • --model:指定使用的模型名称。
  • 最后的字符串:自然语言指令,越清晰越好。

7.2 Python API 方式集成进项目

如果你想把功能嵌入自己的系统,可以直接调用 API:

from phone_agent.agent import PhoneAgent agent = PhoneAgent( device_id="192.168.1.100:5555", base_url="http://your-server-ip:8800/v1", model="autoglm-phone-9b" ) result = agent.run("请打开微信,进入设置,查看账号信息") print(result)

这种方式更适合构建长期运行的服务或批量处理任务。

8. 常见问题与排查建议

尽管流程看似简单,但在实际操作中仍可能遇到一些坑。以下是高频问题及解决方案。

8.1 ADB 连接失败:“unauthorized” 或 “offline”

原因:未授权调试权限。

解决办法:

  • 断开重连 USB。
  • 手机屏幕上是否弹出“允许USB调试?”对话框?务必点击“允许”。
  • 检查 RSA 密钥是否被拒绝,可清除~/.android/adbkey重新生成。

8.2 WiFi 连接后断开频繁

原因:网络不稳定或设备休眠。

建议:

  • 关闭手机自动锁屏功能。
  • 将设备加入“电池不优化”白名单。
  • 优先使用 5GHz WiFi 提升稳定性。

8.3 模型无响应或输出乱码

原因:vLLM 服务未正确启动或参数不匹配。

检查点:

  • 是否设置了足够的max_model_len(建议 ≥ 8192)?
  • 显存是否充足?9B 模型至少需要 24GB GPU 显存。
  • --served-model-name是否与请求中的model字段一致?

8.4 输入中文失败

原因:ADB Keyboard 未设为默认输入法。

确认:

  • 进入“语言与输入法”设置,检查当前输入法是否为 ADB Keyboard。
  • 可尝试手动切换一次,再重启应用。

9. 总结

AutoGLM-Phone 不只是一个技术玩具,它是通向“AI 操作系统代理”的重要一步。通过list_devices这样的简洁 API,我们可以轻松实现设备发现、状态监控和多机调度,为构建更复杂的自动化系统打下基础。

本文带你走完了从环境搭建、设备连接到 API 调用的完整流程,重点讲解了如何使用list_devices()动态获取设备信息,并结合实际场景展示了其用途。无论你是想做一个自动刷短视频的脚本,还是打造企业级移动自动化平台,这套框架都提供了强大的底层支持。

记住,真正的智能不只是“思考”,更是“行动”。而 AutoGLM-Phone,正在教会 AI 如何真正使用手机。


获取更多AI镜像

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询