防城港市网站建设_网站建设公司_Linux_seo优化
2026/1/21 5:52:20 网站建设 项目流程

Open-AutoGLM代码实例:Python调用API控制安卓设备实战

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

你有没有想过,让AI像真人一样操作你的手机?不是简单的自动化脚本,而是能“看懂”屏幕、理解语义、自主决策的智能助手。现在,这已经不再是科幻。

Open-AutoGLM 是由智谱AI开源的一款面向移动端的AI代理(Agent)框架,它基于强大的视觉语言模型(VLM),结合 ADB(Android Debug Bridge)技术,实现了真正意义上的“自然语言操控手机”。用户只需输入一句话,比如“打开小红书搜索美食探店推荐”,系统就能自动解析意图、识别当前界面元素、规划点击路径,并一步步完成整个操作流程。

这个项目的核心是AutoGLM-Phone,一个构建在多模态大模型之上的手机智能助理系统。它不仅能“读图”,还能“行动”。通过将视觉感知与动作规划相结合,它把复杂的交互任务变成了可执行的指令流。更关键的是,它是完全开源的,开发者可以本地部署、远程调试,甚至二次开发出属于自己的“数字分身”。

2. 核心原理:AI如何“看”和“动”

2.1 多模态理解:让AI读懂屏幕

传统自动化工具依赖控件ID或坐标点,一旦界面变化就失效。而 Open-AutoGLM 使用的是基于图像的视觉理解方式。

每当你下达一条指令,系统会:

  1. 通过 ADB 实时截取手机当前屏幕画面;
  2. 将截图 + 自然语言指令一起送入云端的视觉语言模型(如autoglm-phone-9b);
  3. 模型分析图像内容,识别按钮、输入框、列表项等 UI 元素;
  4. 结合上下文理解用户意图,输出下一步应执行的动作(如“点击位于屏幕下方的‘发现’图标”)。

这种方式不依赖应用内部结构,即使没有源码也能工作,适应性极强。

2.2 动作执行:从决策到点击

模型输出的动作会被解析为具体的 ADB 命令。例如:

  • “点击搜索框” →adb shell input tap x y
  • “输入文字” →adb shell am broadcast -a ADB_INPUT_TEXT --es msg "美食"
  • “滑动页面” →adb shell input swipe x1 y1 x2 y2

这些命令通过 ADB 发送到设备,实现精准操控。整个过程形成一个闭环:观察 → 理解 → 决策 → 执行 → 再观察,直到任务完成。

2.3 安全机制与人工介入

考虑到隐私和误操作风险,系统内置了多重保护:

  • 敏感操作确认:涉及支付、删除、授权等高危动作时,会暂停并提示用户确认;
  • 验证码/登录接管:遇到图形验证码或账号登录场景,自动交还控制权给用户;
  • 远程调试支持:可通过 WiFi 连接设备,无需物理接触即可开发测试。

这种“人在环路”的设计,既保证了自动化效率,又不失安全性。

3. 本地环境搭建:连接你的真机

要让 Open-AutoGLM 跑起来,你需要准备一台电脑作为控制端,一部安卓手机作为被控设备,并确保两者能通过 ADB 通信。

3.1 硬件与软件要求

项目要求
控制端操作系统Windows 或 macOS
Python 版本推荐 3.10+
安卓设备Android 7.0 及以上版本
ADB 工具必须安装并配置环境变量

3.2 配置 ADB 环境

Windows 用户
  1. 下载 Android SDK Platform Tools 并解压。
  2. Win + R输入sysdm.cpl,打开“系统属性”。
  3. 进入“高级”→“环境变量”。
  4. 在“系统变量”中找到Path,点击“编辑”→“新建”,添加 ADB 解压目录路径(如C:\platform-tools)。
  5. 打开命令行,输入:
    adb version
    若显示版本号,则说明配置成功。
macOS 用户

在终端中执行以下命令(假设 platform-tools 解压在 Downloads 目录):

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

你可以将这行命令写入.zshrc.bash_profile文件,避免每次重启终端都要重新设置。

3.3 手机端设置

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

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

  3. 安装 ADB Keyboard(用于文本输入)

    • 下载 ADB Keyboard APK 并安装。
    • 进入“语言与输入法”设置 → 将默认输入法切换为ADB Keyboard
    • 这样 AI 才能通过 ADB 向输入框发送文字。

4. 部署 Open-AutoGLM 控制端

一切准备就绪后,开始部署本地控制代码。

4.1 克隆项目仓库

git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM

4.2 安装依赖

pip install -r requirements.txt pip install -e .

注意:部分依赖可能需要编译,请确保你的系统已安装wheelsetuptools和 C++ 构建工具(Windows 用户建议安装 Microsoft C++ Build Tools)。

5. 设备连接方式详解

Open-AutoGLM 支持两种连接方式:USB 和 WiFi。推荐先用 USB 调通,再尝试无线连接。

5.1 USB 连接(稳定首选)

  1. 使用数据线将手机连接电脑。

  2. 手机会弹出“允许USB调试?”提示,勾选“始终允许”并点击确定。

  3. 在终端运行:

    adb devices

    输出应类似:

    List of devices attached 1234567890ABCDEF device

    出现device状态即表示连接成功。

5.2 WiFi 远程连接(灵活开发)

适用于远程调试或无数据线场景。

  1. 先用 USB 连接设备,启动 ADB TCP/IP 模式:
    adb tcpip 5555
  2. 断开 USB 数据线。
  3. 获取手机 IP 地址(可在“设置”→“WLAN”中查看)。
  4. 使用 IP 连接设备:
    adb connect 192.168.x.x:5555
    成功后会返回:
    connected to 192.168.x.x:5555

此后即可通过网络进行所有 ADB 操作。

6. 启动 AI 代理:让AI接管手机

6.1 命令行快速体验

在项目根目录下运行:

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

参数说明:

参数说明
--device-id通过adb devices获取的设备ID,若为WiFi连接则填写IP:5555
--base-url云端 vLLM 服务的地址,格式为http://<IP>:<端口>/v1
--model指定使用的模型名称,需与服务端加载的一致
最后的字符串用户输入的自然语言指令

执行后,你会看到 AI 开始自动操作手机:解锁、打开应用、搜索、点击关注……全程无需手动干预。

6.2 Python API 编程调用

除了命令行,你还可以将其集成进自己的 Python 脚本中,实现更复杂的逻辑控制。

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}") # (可选)为USB设备启用TCP/IP模式 success, message = conn.enable_tcpip(5555) if success: ip = conn.get_device_ip() print(f"设备 IP: {ip}") # 断开连接 conn.disconnect("192.168.1.100:5555")

这段代码展示了如何用 Python 动态管理设备连接,非常适合嵌入到自动化测试平台或远程运维系统中。

7. 常见问题与排查建议

7.1 ADB 连接失败

  • 现象adb devices显示unauthorized
    解决:检查手机是否弹出授权对话框,确认电脑指纹并点击“允许”。

  • 现象adb connect失败或超时
    解决:确保手机与电脑在同一局域网;关闭防火墙或杀毒软件;尝试重启 ADB 服务:

    adb kill-server adb start-server

7.2 模型无响应或乱码

  • 检查点
    • 确认 vLLM 服务正常运行且监听正确端口;
    • 检查--base-url是否拼写错误(注意/v1后缀);
    • 查看服务端日志是否有 OOM(显存不足)报错;
    • 确保max-model-len设置足够大(建议 ≥ 4096)以容纳长上下文。

7.3 文字输入失败

  • 原因:未正确设置 ADB Keyboard 为默认输入法。
  • 验证方法:在终端执行:
    adb shell am broadcast -a ADB_INPUT_TEXT --es msg "Hello"
    观察当前焦点输入框是否出现“Hello”字样。

7.4 屏幕识别不准

  • 优化建议
    • 提高截图分辨率(修改源码中的截图尺寸);
    • 避免反光或遮挡屏幕;
    • 对于复杂界面,可尝试拆分指令,分步执行。

8. 总结

Open-AutoGLM 不只是一个技术玩具,它代表了一种全新的交互范式——用自然语言直接操控设备。无论是批量处理重复操作、辅助老年人使用手机,还是构建全自动的移动测试机器人,它的潜力都远超传统自动化方案。

本文带你完成了从环境配置、设备连接到实际调用的完整流程。你现在完全可以:

  • 用一行命令让 AI 帮你刷短视频;
  • 写个脚本自动收集竞品 App 的首页信息;
  • 搭建一个远程“AI客服”,帮家人解决手机使用问题。

更重要的是,这一切都建立在开源、可控、可定制的基础上。你可以自由扩展功能,接入更多模型,甚至训练专属的垂直领域代理。

未来已来,只是分布不均。而现在,你已经拿到了通往未来的钥匙。


获取更多AI镜像

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

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

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

立即咨询