永州市网站建设_网站建设公司_全栈开发者_seo优化
2026/1/18 4:20:02 网站建设 项目流程

无需编程!用自然语言控制手机的AI神器来了

1. 什么是 Open-AutoGLM?

1.1 项目简介

Open-AutoGLM是智谱 AI 开源的一款面向安卓设备的 AI Agent 框架,名为 AutoGLM-Phone。它通过视觉语言模型(VLM)理解手机屏幕内容,并结合 ADB 实现自动化操作。用户只需输入自然语言指令,如“打开小红书搜索美食”,系统即可自动解析意图、识别界面元素并执行点击、滑动、输入等操作。

该框架的核心价值在于:无需编写代码、无需 Root 手机、无需复杂配置,即可让 AI 完全接管手机完成日常任务。无论是点外卖、发消息、刷视频还是查订单,一句话就能搞定。

其典型应用场景包括:

  • “帮我给李老师发微信说今天请假”
  • “打开抖音关注 ID 为 dycwo11nt61d 的博主”
  • “在美团搜附近评分最高的川菜馆”
  • “启动网易云音乐播放周杰伦的《晴天》”

这一切的背后,是多模态感知、语义理解与动作规划的深度融合。

1.2 本地部署 vs 云端调用对比

对比项云端 API 模式本地部署模式(Open-AutoGLM)
隐私安全截图上传至远程服务器数据全程保留在本地,不外泄
运行成本按 Token 或请求计费一次性部署后仅消耗电费
网络依赖必须联网支持离线运行
响应延迟受网络波动影响本地推理更稳定
可定制性接口固定,扩展受限可修改源码、集成自定义逻辑

对于注重隐私和长期使用的用户,本地部署具有显著优势。

1.3 适用人群

  • 普通用户:希望解放双手,提升手机操作效率
  • 开发者:研究 AI Agent 架构与多模态应用落地
  • 极客玩家:探索大模型 + 移动端的创新玩法
  • 自动化测试工程师:构建智能 UI 自动化测试工具

2. 核心原理解析

2.1 AI Agent 工作循环

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

┌─────────────────────────────────────────────────────┐ │ Agent 执行流程 │ ├─────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 感 知 │ → │ 思 考 │ → │ 行 动 │ │ │ │ (Screenshot/ | (LLM Reasoning) | (ADB Command) | │ │ UI Tree) │ │ │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ ↑ │ │ │ └─────────────────────────────────┘ │ │ 循环执行 │ └─────────────────────────────────────────────────────┘

每一轮迭代中:

  1. 感知阶段:获取当前屏幕截图与 UI 结构树;
  2. 思考阶段:将任务描述、历史状态与当前画面输入 VLM,生成下一步操作决策;
  3. 执行阶段:将结构化指令转换为 ADB 命令发送到设备。

整个过程持续进行,直到任务完成或达到最大步数限制。

2.2 三层架构详解

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

其中,XML 元素树提供了按钮文本、坐标、可点击性等关键信息,辅助模型精准定位目标控件。

推理层(Reasoning Layer)

AutoGLM-Phone 使用一个基于 GLM 架构的多模态大模型(9B 参数),支持图像与文本联合输入。其输出遵循特定格式:

<think>我需要先找到微信图标并点击</think> <answer>{"action": "Tap", "element": [500, 800]}</answer>
  • <think>标签内为推理过程,用于调试与可解释性分析;
  • <answer>标签内为结构化 JSON 指令,由执行引擎解析。

这种设计使得模型具备“思维链”能力,能处理复杂多跳任务。

执行层(Execution Layer)
操作类型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返回键

所有操作均通过 ADB 协议下发,兼容绝大多数安卓设备。

2.3 敏感操作防护机制

为防止误操作造成损失,系统内置双重保护策略:

  1. 敏感词检测:当指令涉及“支付”、“转账”、“删除”等关键词时,自动暂停并提示确认;
  2. 人工接管接口:遇到验证码、生物识别等无法自动处理的场景,触发Take_over指令,等待用户手动完成后再继续。

此外,可通过自定义回调函数实现更精细的权限控制。


3. 环境准备(超详细)

3.1 系统要求

组件最低要求推荐配置
操作系统Windows / macOS / LinuxmacOS Sonoma (Apple Silicon)
Python3.10+3.11
内存16GB32GB+
存储20GB 可用空间50GB SSD
设备Android 7.0+ 手机或模拟器支持 USB 调试的真机

Apple Silicon Mac 用户可利用 MLX 框架实现高效本地推理。

3.2 安装 ADB 工具

ADB 是连接电脑与安卓设备的核心工具。

Windows 安装步骤:

  1. 下载 Android Platform Tools
  2. 解压后将文件夹路径添加至系统环境变量Path
  3. 验证安装:
adb version # 正常输出版本号即表示成功

macOS 安装方法:

brew install android-platform-tools adb version

3.3 配置安卓手机

步骤一:开启开发者选项
  1. 进入设置 → 关于手机
  2. 连续点击“版本号”7次
  3. 提示“您已进入开发者模式”

不同品牌路径略有差异,如小米在“我的设备”,华为在“系统信息”。

步骤二:启用 USB 调试
  1. 返回设置 → 系统 → 开发者选项
  2. 开启USB 调试
  3. 若有“USB 安装”选项也建议开启
步骤三:连接授权
  1. 使用数据线连接手机与电脑
  2. 手机弹出“允许 USB 调试?”对话框,勾选“始终允许”并确认
  3. 在终端检查设备是否识别:
adb devices # 输出应类似: # List of devices attached # ABCD1234567890 device

3.4 安装 ADB Keyboard

ADB Keyboard 是实现远程文字输入的关键组件。

  1. 下载 APK 文件:ADBKeyboard.apk
  2. 安装:
adb install ADBKeyboard.apk
  1. 设置为默认输入法:
    • 手机进入设置 → 语言与输入法 → 虚拟键盘
    • 启用ADB Keyboard
  2. 验证安装:
adb shell ime list -a | grep ADB # 应输出:com.android.adbkeyboard/.AdbIME

4. 部署控制端代码

4.1 克隆项目仓库

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

4.2 创建虚拟环境并安装依赖

推荐使用pyenv + venvconda管理环境。

# 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/macOS # 或 venv\Scripts\activate # Windows # 升级 pip pip install --upgrade pip # 安装核心依赖 pip install -r requirements.txt pip install -e .

若使用 Apple Silicon Mac 并希望本地运行模型,还需安装 MLX 相关包:

pip install mlx "git+https://github.com/Blaizzy/mlx-vlm.git@main"

4.3 验证安装完整性

python -c "import phone_agent; print('依赖安装成功!')"

无报错即表示环境配置完成。


5. 实战操作指南

5.1 启动 AI 代理(命令行模式)

本地模型运行(推荐隐私优先场景)
python main.py \ --local \ --model ./models/AutoGLM-Phone-9B \ --device-id <你的设备ID> \ "打开抖音搜索ID为dycwo11nt61d的博主并关注"

参数说明:

  • --local:启用本地推理(使用 MLX)
  • --model:模型路径(需提前下载)
  • --device-id:通过adb devices获取
  • 最后字符串:自然语言指令
远程模型调用(适合高性能服务器部署)
python main.py \ --device-id 192.168.1.100:5555 \ --base-url http://<server_ip>:8800/v1 \ --model "autoglm-phone-9b" \ "帮我点一份黄焖鸡米饭"

此时推理在远程服务器完成,本地仅负责 ADB 控制。

5.2 WiFi 无线连接设备

摆脱数据线束缚,实现远程操控。

  1. 先用 USB 连接设备并开启 TCP/IP 模式:
adb tcpip 5555
  1. 断开 USB,通过 IP 连接:
adb connect 192.168.x.x:5555
  1. 验证连接状态:
adb devices

此后所有 ADB 命令都将通过网络传输。

5.3 支持的操作指令集

操作类型描述
Tap点击指定坐标或元素
Swipe屏幕滑动(上下/左右)
Type输入文本
Launch启动指定应用
Back返回上一页
Home回到桌面
Long Press长按操作
Double Tap双击
Wait等待页面加载完成
Take_over请求人工介入(如验证码)

这些动作由模型根据上下文自主选择组合。

5.4 实际任务示例

社交沟通类
python main.py --local --model ./models/AutoGLM-Phone-9B "打开微信给妈妈发消息说我今晚不回家吃饭"
电商购物类
python main.py --local --model ./models/AutoGLM-Phone-9B "打开淘宝搜索蓝牙耳机按销量排序"
娱乐休闲类
python main.py --local --model ./models/AutoGLM-Phone-9B "打开B站搜索Python入门教程并播放第一个视频"
外卖点餐类
python main.py --local --model ./models/AutoGLM-Phone-9B "打开饿了么搜索附近的沙县小吃"

6. 性能优化策略

6.1 图像预处理优化

高分辨率屏幕截图会显著增加推理耗时。系统默认对图像进行智能降采样:

  • 若长边超过 1024 像素,则等比缩放至 1024
  • 保留宽高比,避免畸变
  • 同时提取 XML UI 树作为结构化补充

此举可减少约 70%-80% 的图像像素量,大幅提升处理速度。

6.2 KV Cache 量化加速

在 MLX 推理过程中启用 KV Cache 8-bit 量化:

generate_args = { "kv_bits": 8 }

效果:

  • 显存占用降低约 30%
  • 推理延迟小幅下降
  • 几乎无精度损失

适用于内存紧张的设备。

6.3 显存管理优化

每轮推理结束后强制清理缓存:

import mlx.core as mx import gc mx.clear_cache() gc.collect()

防止长时间运行导致内存泄漏或性能衰减。

6.4 推荐优化实践

  1. 优先使用 USB 连接:传输更稳定,截图更快
  2. 关闭后台无关应用:释放更多系统资源
  3. 采用 4-bit 量化模型:适合 16GB 内存设备
  4. 定期重启服务:避免累积性能下降

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="./models/AutoGLM-Phone-9B", 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("打开网易云音乐搜索周杰伦的晴天并播放") 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) -> None: 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() # 重置状态

8. 常见问题排查

Q1: adb devices 无设备显示

可能原因:

  • 数据线为纯充电线(不支持数据传输)
  • 未开启 USB 调试
  • 未在手机端授权调试权限

解决方法:

adb kill-server adb start-server adb devices

Q2: 模型加载失败或中断

解决方案:

  • 使用--resume-download参数断点续传
  • 切换国内镜像源加速下载:
export HF_ENDPOINT=https://hf-mirror.com huggingface-cli download --resume-download zai-org/AutoGLM-Phone-9B --local-dir ./models/AutoGLM-Phone-9B

Q3: 内存不足(Killed 或 MemoryError)

建议措施:

  • 使用 4-bit 量化模型(体积缩小 65%)
  • 关闭其他大型应用程序
  • 重启系统释放内存

Q4: 文字输入无效

检查项:

  • 是否已安装 ADB Keyboard
  • 是否已在系统设置中启用
  • 是否设为当前输入法

验证命令:

adb shell ime list -a | grep ADB

Q5: 截图黑屏或失败

部分应用(如银行、支付类)出于安全考虑禁止截屏。此时模型会自动发出Take_over请求,需用户手动操作。

Q6: 运行卡顿或变慢

建议终止进程后重新启动:

# Ctrl+C 中断 python main.py --local --model ./models/AutoGLM-Phone-9B "你的新任务"

Q7: WiFi 连接失败

排查要点:

  • 手机与电脑在同一局域网
  • 手机已开启“无线调试”
  • 防火墙未阻止 5555 端口
  • IP 地址正确且可达

Q8: 编码错误(乱码)

在启动前设置编码环境变量:

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

获取更多AI镜像

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

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

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

立即咨询