极客新玩具:用AI接管你的安卓设备(附代码)
摘要:本文带你亲手部署智谱开源的 Open-AutoGLM 手机 AI Agent 框架,无需云端依赖、不上传截图、完全本地运行。从零开始连接真机、配置输入法、下载模型、执行指令,全程可复现。你将亲眼看到——一句“打开小红书搜美食”,AI 自动点亮屏幕、解锁、启动App、点击搜索框、输入文字、按下回车。这不是概念演示,是今天就能跑通的极客实践。
1. 这不是遥控器,是你的手机“数字分身”
1.1 它到底能做什么?
Open-AutoGLM 不是另一个“语音助手”,它是一套真正理解手机界面、能自主决策并动手操作的 AI 助理。它的能力边界,由你的一句话定义:
- “帮我在美团点一份黄焖鸡米饭,备注不要香菜”
→ AI 自动打开美团、定位店铺、选择套餐、填写备注、提交订单 - “打开微信,找到‘产品组’群,把刚截的图发过去”
→ AI 切换到微信、搜索群名、进入聊天页、调出相册、选图发送 - “在B站搜索‘大模型部署教程’,只看播放量超50万的视频”
→ AI 启动B站、输入关键词、筛选排序、点击目标视频
关键在于:它不靠预设脚本,而是实时看图、读UI、想步骤、再动手。每一次操作,都基于对当前屏幕状态的真实理解。
1.2 和普通自动化工具的本质区别
| 工具类型 | 依赖方式 | 灵活性 | 隐私性 | 学习成本 |
|---|---|---|---|---|
| Tasker / Automate | 基于坐标/ID硬编码 | 极低(界面一变就失效) | 高(纯本地) | 高(需写逻辑) |
| Appium / UI Automator | 基于元素XPath/ID | 中(需适配不同App结构) | 中(需调试权限) | 高(需写代码) |
| Open-AutoGLM | 基于视觉+语言理解 | 极高(一句话适配所有App) | 极高(截图不出设备) | 极低(只需说人话) |
它把“写自动化脚本”的活,交给了大模型。你不用再研究按钮在哪、怎么找元素,只要告诉它“要什么”,剩下的交给AI。
1.3 为什么现在就能玩?三个现实优势
- 真·本地运行:模型跑在你的Mac或Windows电脑上,手机截图全程不离设备,隐私零泄露
- 真·免配置启动:不需要GPU服务器、不依赖云API、不填密钥,一条命令直接开干
- 真·真机可用:不是模拟器Demo,是USB直连你手里的小米、华为、OPPO、三星,实打实操控
这不是未来科技,是你今晚插根数据线就能上手的极客玩具。
2. 三步打通“人话→手机动作”的全链路
2.1 整体工作流:感知-思考-行动闭环
Open-AutoGLM 的每一次任务执行,都严格遵循这个循环:
┌─────────────────────────────────────────────────────────────┐ │ AI 接管手机全流程 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ 感知层 │ │ 思考层 │ │ │ │ • 截图当前屏幕 │ ──→ │ • 看懂按钮/文字 │ │ │ │ • 解析UI元素树 │ │ • 理解App状态 │ │ │ │ • 获取Activity名 │ │ • 规划下一步动作 │ │ │ └──────────────────┘ └──────────────────┘ │ │ ↓ ↓ │ │ ┌───────────────────────────────────────────────────────┐ │ │ │ 执行层 │ │ │ │ • Tap (x,y) —— 点击坐标 │ │ │ │ • Type("美食") —— 输入文字 │ │ │ │ • Launch("com.xiaohongshu.app") —— 启动App │ │ │ │ • Swipe(500,1000,500,300) —— 向上滑动 │ │ │ └───────────────────────────────────────────────────────┘ │ │ ↑ │ │ └──────────────────────────────────────────────┘ │ 循环直到任务完成(或人工介入) │ └─────────────────────────────────────────────────────────────┘整个过程全自动,但你始终拥有控制权——当遇到支付密码、短信验证码等敏感场景,AI会主动暂停,等你手动输入后继续。
2.2 核心组件拆解:每个模块都为你而简
视觉感知模块
每次操作前,AI先“看”一眼手机屏幕:
adb shell screencap -p→ 获取PNG截图(约1MB/张)adb shell uiautomator dump→ 获取XML界面树(含所有按钮文本、坐标、层级)- 两者结合,让AI既知道“屏幕上有什么”,也清楚“每个东西在哪”
多模态推理引擎
AutoGLM-Phone-9B 模型同时接收:
- 文本指令(如:“打开抖音搜AI教程”)
- 截图图像(当前界面长什么样)
- UI结构数据(哪些是可点击按钮、输入框在哪)
→ 输出带思考过程的JSON指令:
<think>用户要搜AI教程,当前在抖音首页,顶部有搜索框,ID为'com.ss.android.ugc.aweme:id/a6d'</think> <answer>{"action": "Tap", "element_id": "com.ss.android.ugc.aweme:id/a6d"}</answer>ADB执行中枢
把模型输出的JSON,翻译成真实ADB命令:
{"action": "Tap", "element_id": "xxx"}→adb shell input tap 520 180{"action": "Type", "text": "AI教程"}→adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'AI教程'{"action": "Launch", "package": "com.ss.android.ugc.aweme"}→adb shell am start -n com.ss.android.ugc.aweme/.main.MainActivity
整套链路,没有黑盒,每一步你都能在终端里看到、验证、甚至手动复现。
3. 本地部署实战:从零开始,30分钟搞定
3.1 环境准备:只要三样东西
| 项目 | 要求 | 验证方式 |
|---|---|---|
| 你的电脑 | Windows 10+/macOS 13+/Linux Ubuntu 20.04+ | python --version≥ 3.10 |
| 安卓手机 | Android 7.0+(真机优先,模拟器次选) | 设置→关于手机→版本号连点7次开启开发者模式 |
| 数据线 | 支持数据传输的USB-C/USB-A线(纯充电线不行) | adb devices能识别出设备 |
提示:Mac用户推荐用Homebrew安装ADB;Windows用户直接下载platform-tools,解压后加到系统PATH。
3.2 手机端设置:四步到位
开启开发者选项
设置 → 关于手机 → 连续点击“版本号”7次 → 弹出“您已处于开发者模式”开启USB调试
设置 → 系统 → 开发者选项 → 打开“USB调试”和“USB安装”安装ADB Keyboard(关键!)
下载 ADBKeyboard.apkadb install ADBKeyboard.apk设置 → 语言和输入法 → 管理键盘 → 启用“ADB Keyboard”
首次连接授权
用数据线连接手机和电脑 → 手机弹出“允许USB调试?”→ 勾选“始终允许”→ 点确定
终端执行:adb devices # 正常输出应为: # List of devices attached # 1234567890abcdef device
3.3 一键部署控制端
# 1. 克隆官方仓库(国内用户建议用镜像加速) git clone https://github.com/zai-org/Open-AutoGLM.git cd Open-AutoGLM # 2. 创建虚拟环境(推荐,避免依赖冲突) python -m venv venv source venv/bin/activate # macOS/Linux # venv\Scripts\activate # Windows # 3. 安装核心依赖(自动适配CPU/GPU) pip install -r requirements.txt pip install -e . # 4. 验证安装成功 python -c "from phone_agent.adb import list_devices; print(list_devices())" # 应输出已连接设备列表注意:如果报错
No module named 'torch',请先单独安装:pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
4. 第一次接管:用一句话启动你的AI助理
4.1 最简启动命令(USB直连)
确保手机已通过USB连接且被adb devices识别,执行:
python main.py \ --device-id $(adb devices | sed -n '2p' | awk '{print $1}') \ --local \ --model ./models/AutoGLM-Phone-9B \ "打开小红书搜索美食"--device-id:自动获取第一个连接设备ID--local:启用本地MLX推理(无需云服务)--model:指向你已下载的模型路径(见下一节)- 最后字符串:你的自然语言指令
你会看到终端逐行输出:
[INFO] 截图已保存: screenshots/20240520_142211.png [INFO] UI结构已解析: elements.xml [INFO] 模型正在思考... <think>当前在桌面,小红书图标在第三行第二列,需要点击启动</think> <answer>{"action": "Tap", "element": [420, 1280]}</answer> [INFO] 执行: adb shell input tap 420 1280 [INFO] 等待应用启动...几秒后,手机自动亮屏、解锁(如需)、打开小红书、点击搜索框、输入“美食”、按下搜索键——全程无需你碰手机。
4.2 模型下载指南(国内用户友好版)
模型约20GB,推荐用国内镜像加速:
# 方法1:使用ModelScope(最快,推荐) pip install modelscope python -c " from modelscope import snapshot_download snapshot_download('ZhipuAI/AutoGLM-Phone-9B', local_dir='./models/AutoGLM-Phone-9B') " # 方法2:HuggingFace镜像(备选) export HF_ENDPOINT=https://hf-mirror.com huggingface-cli download --resume-download zai-org/AutoGLM-Phone-9B --local-dir ./models/AutoGLM-Phone-9B小技巧:若磁盘空间紧张,可直接下载4-bit量化版(约6.5GB),加载更快:
huggingface-cli download --resume-download zai-org/AutoGLM-Phone-9B-4bit --local-dir ./models/AutoGLM-Phone-9B-4bit
4.3 WiFi无线控制(摆脱数据线束缚)
- 手机开启“无线调试”(设置→开发者选项→无线调试→开启)
- 电脑与手机连同一WiFi,执行:
# 先用USB临时开启TCP/IP adb tcpip 5555 # 断开USB,用WiFi连接(IP地址在手机无线调试页面可见) adb connect 192.168.1.100:5555 adb devices # 应显示 192.168.1.100:5555 device - 启动命令替换
--device-id:python main.py \ --device-id 192.168.1.100:5555 \ --local \ --model ./models/AutoGLM-Phone-9B \ "打开B站刷3个视频"
5. 实战任务库:复制粘贴,立刻生效
5.1 社交通讯类(高频刚需)
# 给指定联系人发固定消息 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 "打开微信,在‘项目组’群里发:今日站会取消"5.2 电商外卖类(解放双手)
# 美团点单(自动定位、选店、加购、提交) 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 "打开菜鸟,查快递单号SF123456789CN"5.3 内容创作类(极客生产力)
# 小红书图文生成(自动填充文案+发布) python main.py --local --model ./models/AutoGLM-Phone-9B "打开小红书,新建笔记,标题:Mac本地部署AI助理实录,正文:今天成功用Open-AutoGLM接管了我的安卓手机..." # B站投稿(自动填标题、标签、封面) python main.py --local --model ./models/AutoGLM-Phone-9B "打开B站,发布新视频,标题:手把手教你用AI控制手机,标签:AI,自动化,极客" # 网易云歌单整理(自动创建+添加歌曲) python main.py --local --model ./models/AutoGLM-Phone-9B "打开网易云音乐,创建歌单‘AI学习曲库’,添加周杰伦的晴天、夜曲"5.4 故障自愈:当AI卡住时,你该做什么
场景1:遇到登录页/验证码
AI会输出:<takeover>请手动输入手机号验证码</takeover>
→ 你输入验证码 → 回车 → AI继续执行场景2:截图失败(黑屏)
常见于银行/支付App,AI会提示:<takeover>检测到安全限制,需人工操作</takeover>
→ 你手动完成支付 → 回车 → AI继续场景3:长时间无响应
按Ctrl+C中断,重新运行命令即可,无需重启模型场景4:点击位置偏移
在命令后加--calibrate参数,AI会自动校准屏幕坐标系:python main.py --local --model ./models/AutoGLM-Phone-9B --calibrate "打开微信"
6. 进阶玩法:让AI更懂你
6.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-4bit", is_local=True, max_tokens=2000, ) # 配置Agent行为 agent_config = AgentConfig( max_steps=30, # 最多执行30步 verbose=True, # 显示详细日志 lang="cn", # 中文指令 device_id="192.168.1.100:5555", # WiFi设备 ) # 创建并运行 agent = PhoneAgent(model_config=model_config, agent_config=agent_config) result = agent.run("打开抖音,关注博主dycwo11nt61d") print("任务结果:", result)6.2 自定义敏感操作拦截
def my_payment_guard(message: str) -> bool: """支付类操作强制二次确认""" if "支付" in message or "付款" in message or "余额" in message: print(f" 检测到高风险操作:{message}") return input("确认执行?(y/N): ").lower() == "y" return True # 其他操作默认放行 agent = PhoneAgent( confirmation_callback=my_payment_guard, )6.3 批量任务处理:解放重复劳动
tasks = [ "打开微信,给王五发:周末聚餐地点改到三里屯", "打开高德地图,搜索‘最近的咖啡馆’", "打开Keep,开始30分钟燃脂训练", ] for i, task in enumerate(tasks, 1): print(f"\n--- 执行第{i}个任务:{task} ---") result = agent.run(task) print(f" 完成:{result.get('status', 'unknown')}") agent.reset() # 重置状态,准备下一个任务7. 常见问题速查(亲测有效)
Q1:adb devices显示unauthorized
→ 手机上未点“允许USB调试”,拔插数据线重试;或在开发者选项中关闭再开启USB调试
Q2:执行时报错No module named 'mlx'
→ 你用的是Windows/macOS ARM芯片?请先安装:
pip install mlx "git+https://github.com/Blaizzy/mlx-vlm.git@main"Q3:中文输入不了,显示方块或乱码
→ 确认已安装ADB Keyboard,并在手机“语言和输入法”中设为默认输入法
→ 终端验证:adb shell ime list -s | grep adb应输出com.android.adbkeyboard/.AdbIME
Q4:模型加载慢/内存不足
→ 使用4-bit量化模型(见4.2节)
→ 关闭浏览器、IDE等内存大户
→ Mac用户:活动监视器→强制退出“WindowServer”进程(可释放数GB显存)
Q5:WiFi连接后adb devices显示offline
→ 手机端开启“无线调试”后,需在电脑端先执行:
adb kill-server adb start-server adb connect 192.168.1.100:5555Q6:任务执行到一半卡住不动
→ 检查手机是否息屏/锁屏 → AI无法操作黑屏界面,请保持屏幕常亮
→ 或按Ctrl+C中断后,加--timeout 60参数延长等待时间
8. 总结:这不只是一个工具,而是一种新交互范式
Open-AutoGLM 的价值,远不止于“自动点手机”。它代表了一种更自然的人机协作方式:
- 你不再学机器的语言(XPath、坐标、ADB命令),而是让机器学你的语言(“帮我订杯咖啡”)
- 你不再维护脆弱的脚本(App更新就失效),而是交付一个能自主适应的智能体(看图识UI,动态规划)
- 你不再妥协隐私与便利(云端API要传截图),而是在本地获得完整控制权(所有数据,永不离机)
作为极客,我们追求的从来不是“能用”,而是“够酷、够自由、够透明”。Open-AutoGLM 把这三个词,变成了终端里一行行可读、可改、可验证的代码。
现在,你的安卓手机已经准备好被接管。
插上数据线,打开终端,输入第一句指令——
真正的数字分身时代,从这一行命令开始。
--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。