洛阳市网站建设_网站建设公司_图标设计_seo优化
2026/1/19 4:06:07 网站建设 项目流程

亲测Open-AutoGLM:一句话让AI替你操作安卓手机

摘要:本教程教你在本地环境部署智谱 AutoGLM-Phone-9B 多模态大模型,实现隐私安全、低成本的手机 AI 助理。从原理到部署、从操作到优化,一文搞定!


1. 什么是 Open-AutoGLM?

1.1 项目简介

Open-AutoGLM是由智谱 AI 开源的手机端 AI Agent 框架,基于视觉语言模型(VLM)构建,能够通过自然语言指令自动操控安卓设备。用户只需输入如“打开小红书搜索美食”这样的语句,系统即可理解屏幕内容、解析任务意图,并通过 ADB 自动完成点击、滑动、输入等操作。

该框架的核心优势在于:

  • 多模态感知:结合图像与 UI 结构化信息理解界面
  • 自动化执行:无需手动干预,全流程闭环控制
  • 灵活接入:支持 USB 和 WiFi 连接,便于远程调试
  • 安全机制:敏感操作可设置人工确认或接管

它适用于自动化测试、智能助理、无障碍辅助等多种场景。

1.2 部署模式对比

对比项云端 API 模式本地部署模式
数据隐私截图上传至服务器数据完全保留在本地
运行成本按调用次数/Token 收费一次性部署,后续零费用
网络依赖必须联网可离线运行
响应延迟受网络影响较大本地推理更稳定快速

对于注重隐私和长期使用的用户,本地部署是更优选择。

1.3 适用人群

  • 开发者:探索 AI Agent 的工作流程与工程实现
  • 极客玩家:体验多模态大模型在真实设备上的交互能力
  • 自动化爱好者:构建个性化脚本替代重复操作
  • 研究者:用于人机交互、任务规划等方向的技术验证

2. 核心原理解析

2.1 AI Agent 工作循环

Open-AutoGLM 遵循经典的感知-思考-行动(Perception-Thinking-Action)循环架构:

┌─────────────────────────────────────────────────────┐ │ Agent 执行循环 │ ├─────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 感 知 │ ──→ │ 思 考 │ ──→ │ 行 动 │ │ │ │ │ │ │ │ │ │ │ │ 截取屏幕 │ │ 分析状态 │ │ 执行操作 │ │ │ │ 解析UI树 │ │ 规划路径 │ │ (ADB) │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ ↑ │ │ │ └──────────────────────────────────┘ │ │ 循环执行 │ └─────────────────────────────────────────────────────┘

每一轮迭代中:

  1. 感知层获取当前手机屏幕截图和 UI 层级结构;
  2. 推理层结合任务描述进行多模态理解,输出下一步动作;
  3. 执行层将动作转化为 ADB 命令发送给设备;
  4. 回到第一步继续观察结果,直到任务完成。

2.2 三层架构详解

感知层(Perception Layer)
感知方式实现方式输出格式
视觉感知adb shell screencap -p > screen.pngPNG 图像
结构化感知adb shell uiautomator dumpXML 元素树
应用状态感知adb shell dumpsys activity activities当前 Activity 名

这些信息共同构成对手机界面的完整理解,帮助模型判断按钮位置、文本含义及上下文状态。

推理层(Reasoning Layer)

AutoGLM-Phone 使用一个9B 参数的视觉语言模型(VLM),其输入包括:

  • 系统提示词(定义角色与行为规范)
  • 用户任务指令(如“搜索周杰伦的歌”)
  • 当前屏幕截图(Base64 编码)

模型输出遵循特定格式:

<think>我需要先找到音乐App图标并点击</think> <answer>{"action": "Tap", "element": [500, 800]}</answer>

其中<think>包含推理过程,<answer>包含结构化操作指令。

执行层(Execution Layer)

所有操作最终通过 ADB 命令执行:

操作类型ADB 命令示例说明
Tapadb shell input tap 500 800点击坐标
Swipeadb shell input swipe 500 1000 500 200从上往下滑动
Typeadb shell am broadcast -a ADB_INPUT_TEXT --es msg "hello"输入文本(需ADB Keyboard)
Launch Appadb shell am start -n com.ss.android.ugc.aweme/.main.MainActivity启动抖音
Backadb shell input keyevent KEYCODE_BACK返回键

3. 环境准备(超详细)

3.1 系统要求

组件推荐配置
操作系统Windows / macOS / Linux
Python3.10 或以上版本
内存≥16GB(量化后),≥32GB(原始模型)
存储空间≥20GB 可用空间
安卓设备Android 7.0+
ADB 工具已安装并配置环境变量

3.2 安装 Python 与依赖管理

建议使用虚拟环境隔离依赖:

# 创建虚拟环境 python -m venv autoglm-env source autoglm-env/bin/activate # Linux/macOS # 或 autoglm-env\Scripts\activate # Windows # 升级 pip pip install --upgrade pip

3.3 安装 ADB 工具

Windows
  1. 下载 Android SDK Platform Tools
  2. 解压后添加路径至系统PATH环境变量
  3. 验证安装:
adb version
macOS

使用 Homebrew 安装:

brew install android-platform-tools adb version
Linux
sudo apt update && sudo apt install adb

3.4 配置安卓手机

  1. 开启开发者模式
    设置 → 关于手机 → 连续点击“版本号”7次

  2. 启用 USB 调试
    设置 → 开发者选项 → 开启“USB 调试”

  3. 连接设备并授权

    • 使用数据线连接电脑
    • 手机弹出授权对话框时勾选“始终允许”
    • 执行命令验证:
      adb devices
      正常输出应类似:
      List of devices attached ABCD1234567890 device

3.5 安装 ADB Keyboard

用于支持中文输入:

  1. 下载 ADBKeyboard.apk
  2. 安装:
    adb install ADBKeyboard.apk
  3. 在手机设置中启用该输入法
  4. 切换默认输入法为 ADB Keyboard

验证是否生效:

adb shell ime list -a | grep ADB # 应输出 com.android.adbkeyboard/.AdbIME

3.6 克隆项目并安装依赖

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

4. 模型下载与本地部署

4.1 下载模型文件

推荐使用 Hugging Face CLI 或 ModelScope 加速下载。

方法一:Hugging Face(国际源)
pip install huggingface_hub[cli] # 设置镜像加速(国内用户) export HF_ENDPOINT=https://hf-mirror.com huggingface-cli download \ --resume-download zai-org/AutoGLM-Phone-9B \ --local-dir ./models/AutoGLM-Phone-9B
方法二:ModelScope(国内推荐)
pip install modelscope python -c " from modelscope import snapshot_download; snapshot_download('ZhipuAI/AutoGLM-Phone-9B', local_dir='./models/AutoGLM-Phone-9B') "

模型大小约 20GB,请确保磁盘空间充足。

4.2 启动本地服务

python main.py --local --model ./models/AutoGLM-Phone-9B "打开微信"

参数说明:

  • --local:启用本地 MLX 推理(Apple Silicon)或 PyTorch(其他平台)
  • --model:指定模型路径
  • 最后字符串为初始任务指令

首次运行会加载模型,耗时约 30 秒(视硬件而定)。

4.3 4-bit 量化优化(低内存设备适用)

若内存不足(如 16GB Mac),建议进行 4-bit 量化以降低显存占用。

量化步骤
# 安装转换工具 pip install "git+https://github.com/Blaizzy/mlx-vlm.git@main" # 执行量化 python -m mlx_vlm.convert \ --hf-path ./models/AutoGLM-Phone-9B \ -q \ --q-bits 4 \ --mlx-path ./autoglm-9b-4bit
使用量化模型
python main.py --local --model ./autoglm-9b-4bit "打开B站搜索Python教程"
指标FP16 原始模型4-bit 量化模型
模型体积~20 GB~6.5 GB
内存占用≥32 GB16 GB 可运行
推理速度较慢提升约 3 倍
准确率损失基准<2%

5. 实战操作指南

5.1 基础使用方式

单次任务模式
python main.py --local --model ./models/AutoGLM-Phone-9B "打开抖音搜索用户名为dycwo11nt61d的博主并关注"
交互式模式
python main.py --local --model ./models/AutoGLM-Phone-9B > 打开美团外卖点一份黄焖鸡米饭 > 发送消息给妈妈说我晚上回家吃饭 > 退出

5.2 常用参数说明

参数作用说明示例值
--local使用本地模型推理--local
--model指定模型路径--model ./autoglm-9b-4bit
--device-id指定 ADB 设备 ID 或 IP:Port--device-id 192.168.1.100:5555
--lang设置语言(cn/en)--lang cn
--list-devices列出已连接设备--list-devices
--max-steps设置最大执行步数--max-steps 50

5.3 典型应用场景示例

社交沟通
python main.py --local --model ./autoglm-9b-4bit "打开微信给张三发消息:会议改到下午四点"
电商购物
python main.py --local --model ./autoglm-9b-4bit "打开淘宝搜索蓝牙耳机按销量排序"
视频娱乐
python main.py --local --model ./autoglm-9b-4bit "打开B站搜索二次元动漫推荐"
音乐播放
python main.py --local --model ./autoglm-9b-4bit "打开网易云音乐搜索周杰伦的《晴天》并播放"
外卖点餐
python main.py --local --model ./autoglm-9b-4bit "打开饿了么点一份宫保鸡丁盖饭"

5.4 WiFi 远程连接(免数据线)

启用无线调试
  1. 手机与电脑处于同一局域网
  2. 开启“无线调试”功能(开发者选项内)
  3. 记录显示的 IP 地址和端口号(通常为 5555)
连接设备
# 第一次需用 USB 连接启动 TCP/IP 模式 adb tcpip 5555 # 断开 USB,使用 IP 连接 adb connect 192.168.1.100:5555 # 验证连接 adb devices
执行远程任务
python main.py --local --model ./autoglm-9b-4bit \ --device-id 192.168.1.100:5555 \ "打开抖音刷新视频"

6. 性能优化策略

6.1 内置性能优化机制

图像降采样

为减少视觉编码负担,系统自动将截图长边压缩至 1024px 以内:

原始分辨率压缩后尺寸像素减少比例
2400×10801024×46082%
1920×10801024×57672%

显著提升推理速度且不影响识别精度。

KV Cache 量化

在推理过程中启用kv_bits=8,将注意力缓存从 FP16 转为 INT8:

  • 显存占用下降约 30%
  • 推理延迟略有改善
显存清理

每轮推理后调用:

mx.clear_cache() # MLX 清理 gc.collect() # Python 垃圾回收

防止长时间运行导致内存泄漏。

6.2 手动优化建议

  1. 关闭后台应用:释放更多内存资源
  2. 使用有线连接:避免 WiFi 传输延迟
  3. 降低屏幕亮度:减小截图文件体积
  4. 定期重启进程:若出现卡顿,终止后重新启动

6.3 性能实测参考(M1 Max, 32GB)

阶段平均耗时
模型加载~30 秒
截图获取0.5–1 秒
单步推理13–18 秒
完整任务2–5 分钟

示例任务:“打开网易云音乐搜索《一滴泪的时间》并播放”,共 6 步,总耗时约 2 分 18 秒。


7. API 与进阶用法

7.1 Python API 调用

from phone_agent import PhoneAgent from phone_agent.model import ModelConfig from phone_agent.agent import AgentConfig # 模型配置 model_config = ModelConfig( model_name="./autoglm-9b-4bit", is_local=True, max_tokens=3000, temperature=0.1, ) # Agent 配置 agent_config = AgentConfig( max_steps=50, verbose=True, lang="cn", ) # 初始化代理 agent = PhoneAgent(model_config=model_config, agent_config=agent_config) # 执行任务 result = agent.run("打开抖音刷3个视频") print(f"任务结果: {result}")

7.2 自定义回调函数

处理敏感操作或需人工介入的场景:

def on_confirmation(message: str) -> bool: print(f"[警告] 即将执行敏感操作: {message}") return input("确认继续?(y/n): ").lower() == "y" def on_takeover(message: str): print(f"[接管] 需要人工操作: {message}") input("完成后请按回车继续...") agent = PhoneAgent( confirmation_callback=on_confirmation, takeover_callback=on_takeover, )

可用于支付确认、验证码登录等场景。

7.3 批量任务执行

tasks = [ "打开微信给李四发消息:今天不加班", "打开支付宝查看本月账单", "打开高德地图导航回家", ] for task in tasks: result = agent.run(task) print(f"✅ 完成任务: {task}") agent.reset() # 重置状态

7.4 配置参数一览

ModelConfig 主要参数
参数类型默认值说明
model_namestr-模型路径
is_localboolFalse是否本地推理
max_tokensint3000最大输出长度
temperaturefloat0.1生成随机性控制
AgentConfig 主要参数
参数类型默认值说明
max_stepsint100单任务最大执行步数
device_idstrNoneADB 设备标识
langstrcn语言设置
verboseboolTrue是否打印详细日志

8. 常见问题 FAQ

Q1:adb devices无设备显示

可能原因

  • 数据线仅支持充电
  • 未开启 USB 调试
  • 未在手机上授权电脑连接

解决方法

adb kill-server adb start-server adb devices

重启 ADB 服务常可解决问题。

Q2: 模型下载中断

使用断点续传:

huggingface-cli download --resume-download zai-org/AutoGLM-Phone-9B --local-dir ./models/AutoGLM-Phone-9B

或切换国内镜像:

export HF_ENDPOINT=https://hf-mirror.com

Q3: 内存不足导致崩溃

解决方案

  • 使用 4-bit 量化模型
  • 关闭其他内存密集型应用
  • 重启系统释放内存

Q4: 文字输入失败

检查 ADB Keyboard 是否正确安装并设为默认输入法:

adb shell ime list -a | grep ADB

若未列出,请重新安装 APK 并手动启用。

Q5: 截图为黑屏

部分应用(如银行、支付类)禁止截屏,属正常系统保护机制。此时模型会自动请求人工接管。

Q6: 运行变慢或卡顿

尝试以下操作:

  • 终止程序并重新启动
  • 改用 USB 连接
  • 降低手机屏幕分辨率(非必须)

Q7: WiFi 连接失败

确保:

  • 手机与电脑在同一网络
  • 已开启“无线调试”
  • 防火墙未阻止 5555 端口

Q8: 中文乱码问题(Windows/Linux)

设置编码环境变量:

# Windows set PYTHONIOENCODING=utf-8 # Linux/macOS export PYTHONIOENCODING=utf-8

获取更多AI镜像

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

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

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

立即咨询