零基础入门Open-AutoGLM:Mac上5分钟部署AI手机助理,小白也能轻松上手
摘要:本教程教你在 Mac (Apple Silicon) 上部署智谱 AutoGLM-Phone-9B 多模态大模型,实现完全本地化、隐私安全、零成本的手机 AI 助理。从原理到部署、从操作到优化,一文搞定!
1. 什么是 Open-AutoGLM?
1.1 项目简介
Open-AutoGLM是智谱 AI 开源的手机端 AI Agent 框架,全称为 AutoGLM-Phone。它能让你的 Mac 成为一台“超级大脑”,通过 USB 或 WiFi 远程控制安卓设备,自动完成各类日常任务。
只需一句自然语言指令,例如:
- “打开小红书搜索美食推荐”
- “在抖音关注用户 dycwo11nt61d”
- “打开微信给妈妈发消息说我今晚不回家吃饭”
系统即可自动解析意图、理解当前界面状态,并规划出完整的操作路径,最终通过 ADB 实现点击、滑动、输入等动作,真正实现“动口不动手”。
该框架基于视觉语言模型(VLM),结合多模态感知与智能决策能力,构建了一个闭环的“感知-思考-执行”系统,适用于自动化测试、个人助理、无障碍辅助等多种场景。
1.2 为什么选择本地部署?
| 对比项 | 云端 API 模式 | 本地 MLX 模式 |
|---|---|---|
| 隐私安全 | 截图上传云端 | 数据永不出本机 |
| 运行成本 | 按 Token 收费 | 电费即成本 |
| 网络依赖 | 断网不可用 | 完全离线可用 |
| 响应延迟 | 网络延迟波动 | 本地计算稳定 |
将模型运行在本地 Mac 上,不仅能避免敏感截图外泄,还能享受更低延迟和更稳定的交互体验,尤其适合对隐私有高要求的用户。
1.3 适合谁使用?
- 开发者:学习 AI Agent 架构设计与多模态应用开发
- 极客玩家:探索 Apple Silicon 上的大模型部署技巧
- 隐私敏感用户:拒绝数据上传,追求端侧智能
- 技术爱好者:动手实践 ADB 自动化 + VLM 推理全流程
2. 核心原理解析
2.1 AI Agent 工作循环
Open-AutoGLM 遵循经典的Perception-Thinking-Action(感知-思考-行动)循环机制:
┌─────────────────────────────────────────────────────────────┐ │ Agent 工作循环 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 感 知 │ ──→ │ 思 考 │ ──→ │ 行 动 │ │ │ │ │ │ │ │ │ │ │ │ 截图 │ │ 理解状态 │ │ 点击 │ │ │ │ UI解析 │ │ 规划步骤 │ │ 滑动 │ │ │ │ App状态 │ │ 生成指令 │ │ 输入 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ ↑ │ │ │ └──────────────────────────────────┘ │ │ 循环执行 │ └─────────────────────────────────────────────────────────────┘每一步都由模型驱动:先获取屏幕图像和结构信息 → 输入模型进行推理 → 输出 JSON 格式的操作指令 → 执行 ADB 命令完成动作。
2.2 三层架构详解
感知层(Perception Layer)
负责采集手机当前状态,主要包括三种方式:
| 感知类型 | 技术实现 | 数据格式 |
|---|---|---|
| 视觉感知 | adb shell screencap -p | PNG 图像 |
| 结构化感知 | adb shell uiautomator dump | XML 元素树 |
| 状态感知 | adb shell dumpsys activity | App/Activity 信息 |
这些数据共同构成模型的输入上下文,帮助其准确理解当前所处页面。
推理层(Reasoning Layer)
核心是AutoGLM-Phone-9B,一个专为移动端任务设计的视觉语言模型(VLM)。其输入包含:
- 系统提示词(System Prompt)
- 用户任务描述
- 当前手机截图(Base64 编码)
模型输出遵循特定格式:
<think>我需要先找到微信图标并点击</think> <answer>{"action": "Tap", "element": [500, 800]}</answer>其中<think>包含推理过程,<answer>包含可执行的操作指令。
执行层(Execution Layer)
根据模型输出调用对应的 ADB 命令完成实际操作:
| 操作类型 | ADB 命令 | 说明 |
|---|---|---|
| Tap | adb shell input tap x y | 点击坐标 |
| Swipe | adb shell input swipe x1 y1 x2 y2 | 滑动 |
| Type | adb shell am broadcast -a ADB_INPUT_TEXT | 输入文字 |
| Launch | adb shell am start -n package/activity | 启动应用 |
| Back | adb shell input keyevent KEYCODE_BACK | 返回上一页 |
此外,系统还内置了人工接管机制,在遇到验证码、支付确认等敏感操作时会暂停并提示用户介入。
2.3 MLX 框架优势
MLX是苹果为 Apple Silicon(M1/M2/M3/M4)定制的深度学习框架,具备以下优势:
- 统一内存架构:CPU 与 GPU 共享内存,减少数据拷贝开销
- 延迟编译优化:仅编译实际执行路径,提升效率
- 原生 Metal 加速:充分利用 GPU 并行计算能力
得益于 MLX,我们可以在 Mac 上高效运行 9B 参数级别的多模态模型,而无需依赖云服务或高性能显卡。
3. 环境准备(超详细)
3.1 系统要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 系统版本 | macOS 13.3+ | macOS 14+ (Sonoma) |
| 芯片 | M1 | M1 Max / M2 Pro 及以上 |
| 内存 | 16GB (量化后) | 32GB+ |
| 硬盘 | 20GB 可用空间 | 50GB+ SSD |
| Python | 3.10+ | 3.11 |
建议使用搭载 M1 及以上芯片的 Mac 设备以获得最佳性能。
3.2 安装 Python 环境
推荐使用pyenv管理 Python 版本。
# 安装 Homebrew(如未安装) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # 安装 pyenv brew install pyenv # 配置 zsh 环境变量 echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc source ~/.zshrc # 安装 Python 3.11 pyenv install 3.11.9 pyenv global 3.11.9 # 验证 python --version # 应输出 Python 3.11.93.3 安装 ADB 工具
ADB 是连接 Mac 与安卓设备的核心工具。
# 使用 Homebrew 安装 brew install android-platform-tools # 验证安装 adb version3.4 配置安卓手机
步骤 1:开启开发者模式
- 打开设置 → 关于手机
- 连续点击版本号7 次
- 提示“您已进入开发者模式”
不同品牌路径略有差异,请根据机型调整。
步骤 2:开启 USB 调试
- 返回设置 → 系统 → 开发者选项
- 开启USB 调试
- 可选:关闭“监控 ADB 安装应用”以防弹窗干扰
步骤 3:连接授权
- 使用数据线连接手机与 Mac
- 手机弹出授权对话框,勾选“始终允许”并确认
- 终端验证:
adb devices # 输出应类似: # List of devices attached # ABCD1234567890 device3.5 安装 ADB Keyboard
用于支持中文文本输入。
下载 APK 文件:
curl -L -O https://github.com/senzhk/ADBKeyBoard/releases/download/v1.7/ADBKeyboard.apk安装至设备:
adb install ADBKeyboard.apk在手机中启用:
- 设置 → 语言和输入法 → 虚拟键盘 → 启用 ADB Keyboard
- 切换默认输入法为 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 # 安装 MLX 相关依赖 pip install mlx "git+https://github.com/Blaizzy/mlx-vlm.git@main" torch torchvision transformers # 安装项目依赖 pip install -r requirements.txt pip install -e . # 验证安装成功 python -c "import mlx; import phone_agent; print('✅ 安装成功!')"4. 模型下载与部署
4.1 下载模型
方法 A:HuggingFace CLI(推荐)
# 安装 HuggingFace CLI pip install -U "huggingface_hub[cli]" # 设置国内镜像加速(可选) export HF_ENDPOINT=https://hf-mirror.com # 下载模型(约 20GB) huggingface-cli download --resume-download zai-org/AutoGLM-Phone-9B --local-dir ./models/AutoGLM-Phone-9B方法 B:ModelScope(国内更快)
pip install modelscope python -c " from modelscope import snapshot_download; snapshot_download('ZhipuAI/AutoGLM-Phone-9B', local_dir='./models/AutoGLM-Phone-9B') "4.2 启动运行
python main.py --local --model ./models/AutoGLM-Phone-9B "打开微信"首次加载模型约需 30 秒,之后即可开始交互。
4.3 4-bit 量化(内存优化版)
若设备内存 ≤16GB,建议使用 4-bit 量化降低资源占用。
| 指标 | FP16 原始模型 | 4-bit 量化 |
|---|---|---|
| 模型大小 | ~20GB | ~6.5GB |
| 内存需求 | ≥32GB | ≥16GB |
| 推理速度 | 基准 | 提升约 3x |
| 精度损失 | 无 | <2% |
执行量化:
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教程"5. 实战操作指南
5.1 基础运行模式
交互式模式
python main.py --local --model ./autoglm-9b-4bit # 输入任务: > 打开小红书搜索咖啡探店 > 发送微信消息给李四说:会议推迟到下午三点 > 退出单次任务模式
python main.py --local --model ./autoglm-9b-4bit "打开抖音刷5个视频"5.2 常用参数说明
| 参数 | 说明 | 示例 |
|---|---|---|
--local | 使用本地 MLX 推理 | --local |
--model | 模型路径 | --model ./autoglm-9b-4bit |
--device-id | 指定设备 ID | --device-id 192.168.1.100:5555 |
--lang | 语言设置 | --lang cn |
--list-devices | 列出已连接设备 | --list-devices |
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 "打开美团外卖点一份黄焖鸡米饭加辣" # 视频娱乐 python main.py --local --model ./autoglm-9b-4bit "打开B站搜索二次元动漫推荐" # 音乐播放 python main.py --local --model ./autoglm-9b-4bit "打开网易云音乐搜索周杰伦的《晴天》并播放"5.4 WiFi 远程调试
摆脱数据线束缚,实现无线控制。
- 手机开启“无线调试”功能(开发者选项内)
- 记录 IP 地址与端口号(通常为 5555)
连接命令:
# 连接远程设备 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×1080 | 1024×460 | 82% |
| 1920×1080 | 1024×576 | 72% |
大幅降低视觉编码器负担,同时保留关键 UI 信息。
KV Cache 量化
启用kv_bits=8将注意力缓存从 FP16 转为 INT8:
- 显存占用下降约 30%
- 推理速度小幅提升
- 几乎无精度损失
显存强制回收
每步推理后自动执行:
mx.clear_cache() gc.collect()防止内存泄漏导致长时间运行卡顿。
6.2 手动优化建议
- 关闭后台应用:释放更多内存供模型使用
- 优先使用 USB 连接:传输更稳定,延迟更低
- 降低屏幕亮度:减小截图文件体积
- 定期重启进程:若出现响应变慢,可终止后重试
6.3 实测性能表现(M1 Max, 32GB)
| 阶段 | 耗时 |
|---|---|
| 模型加载 | ~30 秒 |
| 单步推理 | 13–18 秒 |
| 截图获取 | 0.5–1 秒 |
完整任务耗时示例:“打开网易云音乐搜索《一滴泪的时间》并播放”
- 总步骤: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("打开抖音刷新鲜事") print(f"任务结果: {result}")7.2 自定义回调函数
处理敏感操作或需人工干预的场景:
def my_confirmation(message: str) -> bool: print(f"⚠️ 检测到敏感操作: {message}") return input("是否继续?(y/n): ").lower() == "y" def my_takeover(message: str) -> None: print(f"✋ 需要人工操作: {message}") input("完成后按回车继续...") agent = PhoneAgent( confirmation_callback=my_confirmation, takeover_callback=my_takeover, )7.3 批量任务执行
tasks = [ "打开微信给张三发消息:会议改到下午4点", "打开支付宝查看余额", "打开美团查看最近订单", ] for task in tasks: result = agent.run(task) print(f"✅ 完成: {task}") agent.reset() # 重置状态8. 常见问题 FAQ
Q1: 设备未识别(adb devices 为空)
解决方法:
adb kill-server adb start-server adb devices常见原因:
- 使用了纯充电线(非数据线)
- 未在手机上授权调试权限
- 开发者选项未正确开启
Q2: 模型下载中断
使用断点续传:
huggingface-cli download --resume-download zai-org/AutoGLM-Phone-9B --local-dir ./models/AutoGLM-Phone-9B或切换国内镜像:
export HF_ENDPOINT=https://hf-mirror.comQ3: 内存不足(Killed / MemoryError)
解决方案:
- 使用 4-bit 量化模型
- 关闭其他应用程序
- 重启 Mac 后再尝试
Q4: 文字输入失败
检查:
- 是否已安装 ADB Keyboard
- 是否已在系统中启用
- 验证命令:
adb shell ime list -a | grep ADB
Q5: 截图为黑屏
某些应用(如银行、支付类)禁止截图,属于系统级限制。此时模型会自动请求人工接管。
Q6: 运行逐渐变慢
建议终止程序并重新启动:
Ctrl+C python main.py --local --model ./autoglm-9b-4bit "你的任务"Q7: WiFi 连接失败
排查:
- 确保手机与电脑在同一局域网
- 手机已开启“无线调试”
- 防火墙未阻止 5555 端口
Q8: 中文乱码问题(Windows/Linux)
设置环境变量:
# Windows set PYTHONIOENCODING=utf-8 # Linux/macOS export PYTHONIOENCODING=utf-8获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。