news 2026/3/9 13:33:12

超详细配置:在M1 Mac上部署AutoGLM-Phone全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
超详细配置:在M1 Mac上部署AutoGLM-Phone全流程

超详细配置:在M1 Mac上部署AutoGLM-Phone全流程

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


1. 什么是 Open-AutoGLM?

1.1 项目简介

Open-AutoGLM是智谱 AI 开源的手机端 AI Agent 框架,基于视觉语言模型(VLM)构建,能够通过自然语言指令自动操控安卓设备。该系统结合 ADB(Android Debug Bridge)、多模态感知与智能规划能力,实现“一句话完成复杂任务”的自动化体验。

典型应用场景包括:

  • “打开小红书搜索美食探店”
  • “在抖音关注指定账号并点赞最新视频”
  • “使用美团点一份外卖并发送地址给朋友”
  • “进入微信聊天窗口发送预设消息”

整个流程无需手动干预,AI 自动理解屏幕内容、解析 UI 元素、生成操作路径并执行点击、滑动、输入等动作。

1.2 为什么选择本地部署?

对比项云端 API 模式本地 MLX 模式
隐私安全截图上传至远程服务器所有数据保留在本机
运行成本按 Token 计费仅消耗电力
网络依赖必须联网支持离线运行
响应延迟受网络波动影响推理稳定,延迟可控

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

1.3 适用人群

  • 开发者:研究 AI Agent 架构与多模态推理机制
  • 极客玩家:探索 Apple Silicon 上的大模型部署
  • 隐私敏感者:拒绝将手机界面上传至第三方服务
  • 自动化爱好者:构建个性化手机工作流

2. 核心原理解析

2.1 AI Agent 工作循环

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

┌─────────────────────────────────────────────────────────────┐ │ Agent 工作循环 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 感 知 │ ──→ │ 思 考 │ ──→ │ 行 动 │ │ │ │ │ │ │ │ │ │ │ │ 截图 │ │ 理解状态 │ │ 点击 │ │ │ │ UI解析 │ │ 规划步骤 │ │ 滑动 │ │ │ │ App状态 │ │ 生成指令 │ │ 输入 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ ↑ │ │ │ └──────────────────────────────────┘ │ │ 循环执行 │ └─────────────────────────────────────────────────────────────┘

每轮迭代中:

  1. 获取当前手机屏幕图像与结构化 UI 信息;
  2. 将任务描述与多模态输入送入 VLM 模型进行推理;
  3. 解析输出的操作指令并通过 ADB 执行;
  4. 判断是否完成任务或需要人工接管。

2.2 三层系统架构

感知层(Perception Layer)

负责采集手机当前状态,主要包括三类数据源:

数据类型技术手段输出格式
视觉感知adb shell screencap -pPNG 图像
结构化感知adb shell uiautomator dumpXML 元素树
应用状态adb shell dumpsys activity activities当前 Activity 名称

这些信息共同构成对手机界面的完整理解基础。

推理层(Reasoning Layer)

采用AutoGLM-Phone-9B视觉语言模型,其输入为:

[系统提示] + [用户指令] + [截图 Base64 编码]

模型输出遵循特定格式:

<think>我需要先找到微信图标...</think> <answer>{"action": "Tap", "element": [500, 800]}</answer>

其中<think>包含推理过程,<answer>包含可执行 JSON 指令。

执行层(Execution Layer)

根据模型输出调用对应 ADB 命令:

操作类型ADB 命令示例
Tapadb shell input tap x y
Swipeadb shell input swipe x1 y1 x2 y2 duration
Typeam broadcast -a ADB_INPUT_TEXT --es msg "hello"
Launch Appadb shell am start -n com.tencent.mm/.ui.LauncherUI
Back / Homeadb shell input keyevent KEYCODE_BACK/HOME

所有操作均通过 ADB 实现无侵入式控制。

2.3 MLX 框架优势

MLX是苹果专为 Apple Silicon 设计的深度学习框架,具备以下特性:

  • 统一内存架构:CPU 与 GPU 共享物理内存,避免频繁拷贝
  • 延迟编译优化:动态编译计算图,提升执行效率
  • Metal 加速支持:充分利用 M 系列芯片的 GPU 能力

得益于 MLX,我们可以在 M1 Mac 上高效运行 9B 参数级别的多模态模型,而无需依赖云服务。


3. 环境准备(超详细)

3.1 系统要求

组件最低要求推荐配置
操作系统macOS 13.3+macOS 14 Sonoma
芯片M1M1 Max / M2 Pro 及以上
内存16GB32GB
存储空间20GB 可用50GB SSD
Python3.10+3.11

建议使用带有独立显存的高端机型以获得更好性能。

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 'eval "$(pyenv init -)"' >> ~/.zshrc source ~/.zshrc # 安装并设置 Python 3.11 pyenv install 3.11.9 pyenv global 3.11.9

验证安装:

python --version # 应输出 Python 3.11.9

3.3 安装 ADB 工具

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

# 使用 Homebrew 安装 brew install android-platform-tools # 验证版本 adb version

确保输出类似Android Debug Bridge version 1.x.x

3.4 配置安卓手机

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

不同品牌路径略有差异,华为在“关于手机”,小米在“我的设备”。

步骤 2:启用 USB 调试
  1. 返回设置 → 系统 → 开发者选项
  2. 开启USB 调试
  3. 可选:关闭“监控 ADB 安装”以减少弹窗
步骤 3:连接授权
  1. 使用数据线连接手机与 Mac
  2. 手机端弹出授权对话框时勾选“始终允许”
  3. 在终端验证:
adb devices

正常应显示:

List of devices attached ABCDEF1234567890 device

3.5 安装 ADB Keyboard

用于支持中文文本输入。

  1. 下载 APK 文件:

    curl -L -O https://github.com/senzhk/ADBKeyBoard/releases/download/v1.7/ADBKeyboard.apk
  2. 安装到设备:

    adb install ADBKeyboard.apk
  3. 在手机上启用:

    • 设置 → 语言与输入法 → 虚拟键盘 → 启用 ADB Keyboard
  4. 验证:

    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 量化后
模型大小~20 GB~6.5 GB
内存需求≥32GB16GB 可运行
推理速度基准提升约 3 倍
精度损失<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 ./models/AutoGLM-Phone-9B \ "打开抖音搜索博主dycwo11nt61d并关注"
交互式模式
python main.py --local --model ./models/AutoGLM-Phone-9B # 进入交互环境后输入: > 打开小红书搜索咖啡探店 > 发送消息给李四说晚上聚餐改到七点 > 退出

5.2 常用参数说明

参数作用示例值
--local启用本地 MLX 推理--local
--model指定模型路径./models/AutoGLM-Phone-9B
--device-id指定 ADB 设备 ID 或 IP192.168.1.100:5555
--lang设置语言cn/en
--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 "打开饿了么点一份黄焖鸡米饭送到公司" # 视频娱乐 python main.py --local --model ./autoglm-9b-4bit "打开B站搜索AI教学视频播放第一个"

5.4 WiFi 远程调试

摆脱 USB 线束缚,实现无线控制。

步骤 1:开启无线调试
  1. 手机与 Mac 处于同一局域网
  2. 进入开发者选项 → 无线调试
  3. 记录 IP 地址与端口号(通常为 5555)
步骤 2:建立连接
# 第一次需用 USB 连接启动 TCP/IP 模式 adb tcpip 5555 # 断开 USB,使用 IP 连接 adb connect 192.168.1.100:5555 # 验证 adb devices
步骤 3:运行任务
python main.py \ --local \ --model ./autoglm-9b-4bit \ --device-id 192.168.1.100:5555 \ "打开抖音刷新首页"

5.5 支持的操作类型

操作类型描述
Tap单击坐标或元素
Swipe滑动手势
Type输入文本
Launch启动应用
Back返回键
Home回到桌面
Long Press长按
Double Tap双击
Wait等待页面加载完成
Take_over请求人工介入(如验证码)

6. 性能优化详解

6.1 内置性能优化策略

图像降采样

原始高分辨率截图会显著拖慢推理速度。系统自动将图像长边压缩至 1024px 以内:

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

大幅降低视觉编码器负担。

KV Cache 量化

启用kv_bits=8将注意力缓存从 FP16 降至 INT8:

  • 显存占用减少约 30%
  • 推理速度小幅提升
  • 几乎无精度损失
显存主动回收

每步推理结束后调用:

mx.clear_cache() gc.collect()

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

6.2 手动优化建议

  1. 关闭后台应用:释放更多内存供 MLX 使用
  2. 优先使用 USB 连接:传输更稳定,延迟更低
  3. 降低屏幕亮度:减少截图文件体积
  4. 定期重启进程:若发现响应变慢,Ctrl+C 后重新启动

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

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

示例任务:“打开网易云音乐搜索《晴天》并播放”共 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 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() # 清除上下文

7.4 配置参数速查表

ModelConfig

参数类型默认值说明
model_namestr-模型路径
is_localboolFalse是否本地推理
max_tokensint3000最大输出长度
temperaturefloat0.1生成随机性控制

AgentConfig

参数类型默认值说明
max_stepsint100最大执行步数
device_idstrNoneADB 设备标识
langstrcn语言(cn/en)
verboseboolTrue是否打印详细日志

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.com

Q3: 内存不足导致崩溃(Killed / MemoryError)

解决方案:

  1. 使用 4-bit 量化模型(见第 4.3 节)
  2. 关闭其他大型应用程序
  3. 重启 Mac 后重试

Q4: 文本输入无效

检查:

  1. ADB Keyboard 是否已安装
  2. 是否已在系统输入法中启用
  3. 验证命令:
    adb shell ime list -a | grep ADB

Q5: 截图为黑屏

部分应用(如银行、支付类)禁止截图,属系统级保护。此时模型会自动触发take_over请求人工操作。

Q6: 运行逐渐变慢

终止当前进程并重启:

# Ctrl+C 中断 python main.py --local --model ./autoglm-9b-4bit "新任务"

Q7: WiFi 连接失败

排查:

  1. 手机与 Mac 是否在同一 WiFi 网络
  2. 是否开启了“无线调试”
  3. 防火墙是否放行 5555 端口

Q8: Windows/Linux 编码错误

设置环境变量解决乱码:

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

获取更多AI镜像

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/4 13:30:16

相似度>0.9就是同一地址?MGeo阈值设定建议

相似度>0.9就是同一地址&#xff1f;MGeo阈值设定建议 在地理信息处理、物流调度与城市计算等实际场景中&#xff0c;地址数据的标准化和匹配是关键前置任务。现实中的地址表述存在大量变体&#xff1a;如“北京市朝阳区建国路1号”与“北京朝阳建国路1号”&#xff0c;虽然…

作者头像 李华
网站建设 2026/3/4 7:56:17

Qwen3-VL-2B开源部署:MoE架构与密集型性能对比案例

Qwen3-VL-2B开源部署&#xff1a;MoE架构与密集型性能对比案例 1. 技术背景与选型动机 随着多模态大模型在视觉理解、语言生成和跨模态推理能力上的持续演进&#xff0c;Qwen系列最新推出的 Qwen3-VL-2B-Instruct 成为当前轻量级视觉-语言模型中的重要突破。该模型由阿里云开…

作者头像 李华
网站建设 2026/3/3 8:55:59

合同文档智能处理:用MinerU实现OCR与结构化提取

合同文档智能处理&#xff1a;用MinerU实现OCR与结构化提取 1. 引言&#xff1a;合同文档处理的挑战与智能化转型 在企业日常运营中&#xff0c;合同管理是一项高频且关键的任务。无论是采购、销售、租赁还是合作框架协议&#xff0c;合同文本往往包含大量结构化和非结构化信…

作者头像 李华
网站建设 2026/3/4 10:47:02

Umi-OCR初始化失败问题终极解决方案

Umi-OCR初始化失败问题终极解决方案 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitHub_Trending/um/Umi-OCR …

作者头像 李华
网站建设 2026/3/5 10:48:20

Czkawka重复文件清理:5步彻底解决Windows存储空间不足

Czkawka重复文件清理&#xff1a;5步彻底解决Windows存储空间不足 【免费下载链接】czkawka 一款跨平台的重复文件查找工具&#xff0c;可用于清理硬盘中的重复文件、相似图片、零字节文件等。它以高效、易用为特点&#xff0c;帮助用户释放存储空间。 项目地址: https://git…

作者头像 李华
网站建设 2026/3/6 22:09:55

轻松构建PDF智能流水线|基于PDF-Extract-Kit的二次开发实践

轻松构建PDF智能流水线&#xff5c;基于PDF-Extract-Kit的二次开发实践 1. 引言&#xff1a;PDF处理的痛点与智能化需求 在现代企业级应用和科研场景中&#xff0c;PDF文档已成为信息传递的核心载体。然而&#xff0c;传统PDF处理方式面临诸多挑战&#xff1a;非结构化内容难…

作者头像 李华