手机自动化新玩法!Open-AutoGLM批量任务实操
1. 这不是遥控,是让手机自己“听懂”你的话
你有没有过这样的时刻:
想抢一张演唱会门票,手速再快也拼不过脚本;
运营三个社交账号,每天重复发帖、点赞、回复,手指都点酸了;
帮爸妈挂号,教十遍还是记不住“点这里→滑到底→选日期→确认支付”……
这些事,现在不用再手动做了。
Open-AutoGLM 不是另一个需要写代码、配参数、调接口的自动化工具——它是一套真正能“看屏幕、听指令、做动作”的手机端 AI 助理框架。你只需要说一句:“打开小红书,搜‘上海咖啡探店’,保存前五条笔记的图片”,它就能自动完成截图、识别界面、点击搜索框、输入文字、逐条打开、长按保存……整个过程像有个真人坐在你手机旁边操作。
这不是概念演示,也不是实验室玩具。它是智谱开源的、已在真实安卓设备上稳定运行的 Phone Agent 框架,核心模型 AutoGLM-Phone-9B 是专为手机交互场景优化的视觉语言模型。它不依赖预设规则,不靠坐标点击,而是通过多模态理解——把每一帧手机屏幕当作一张“图”,把你的自然语言当作“题”,边看边想、边想边做。
这篇文章不讲原理推导,不堆技术参数,只带你从零开始,用最短路径跑通一个可批量执行的真实任务流:自动在抖音关注指定博主,并同步完成三步验证动作(打开主页→点击关注→确认弹窗)。全程无需改一行模型代码,所有操作基于官方镜像开箱即用。
2. 三步到位:环境搭好,手机连上,AI就位
2.1 本地控制端准备(5分钟搞定)
你不需要服务器、不装Docker、不编译内核。只要一台能连手机的电脑(Windows/macOS均可),和一部Android 7.0+的真机。
- Python环境:建议 Python 3.10(避免3.12兼容性问题)
- ADB工具:去Android SDK Platform-Tools下载最新版,解压后把
platform-tools文件夹路径加进系统环境变量(Windows:系统属性→高级→环境变量→系统变量→Path→新建;macOS:在~/.zshrc中添加export PATH=$PATH:~/Downloads/platform-tools) - 验证是否成功:终端输入
adb version,看到版本号即通过
小提醒:别用模拟器。Open-AutoGLM 的视觉理解依赖真实屏幕渲染和触控反馈,模拟器常出现截图黑屏、坐标偏移、输入法不响应等问题。真机才是唯一推荐方案。
2.2 手机端设置(3个开关,1个APK)
这三步必须手动完成,但只需一次:
- 开启开发者模式:设置 → 关于手机 → 连续点击“版本号”7次 → 弹出“您已处于开发者模式”
- 开启USB调试:设置 → 系统 → 开发者选项 → 打开“USB调试”(如提示“允许通过USB调试修改权限”,勾选“始终允许”)
- 安装并启用 ADB Keyboard:
- 下载 ADB Keyboard APK(v1.3或更新)
- 安装后进入 设置 → 语言与输入法 → 当前键盘 → 切换为 “ADB Keyboard”
- 关键一步:返回上一级,找到“当前输入法”或“默认键盘”,确保 ADB Keyboard 被设为默认
为什么必须换输入法?因为 Open-AutoGLM 通过 ADB 发送文本时,依赖 ADB Keyboard 接收指令并注入到任意输入框。系统自带键盘无法被远程触发。
2.3 连接设备:USB优先,WiFi备用
插上USB线,打开终端:
adb devices如果看到类似ZY225XXXXX device的输出,说明连接成功。
若显示unauthorized,请在手机弹出的授权窗口中点“允许”。
WiFi远程连接(适合长期部署):
先用USB连接执行:
adb tcpip 5555拔掉USB线,连同一WiFi,查手机IP(设置→关于手机→状态→IP地址),然后:
adb connect 192.168.1.102:5555 # 替换为你手机的实际IP再次adb devices,应显示192.168.1.102:5555 device
注意:部分品牌手机(如华为、小米)需额外开启“USB调试(安全设置)”或关闭“MIUI优化”,具体可查对应机型ADB调试指南。遇到连接失败,先重启ADB服务:
adb kill-server && adb start-server
3. 批量任务实战:一条命令,自动关注10个抖音博主
3.1 部署控制端(不启动本地大模型)
Open-AutoGLM 支持两种模式:
- 本地推理:需GPU,启动vLLM服务(对显存要求高)
- 云端调用:直接对接智谱BigModel API(本文采用此方式,零硬件门槛)
我们走轻量路线:
- 克隆控制端代码(仅需20MB):
git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM- 安装依赖(跳过torch/tf等大包,只装控制层):
pip install -r requirements.txt pip install -e .获取智谱API密钥:访问 https://bigmodel.cn,登录后在“API Key管理”创建密钥,复制保存。
创建任务列表文件
batch_tasks.json(放在项目根目录):
[ { "instruction": "打开抖音,搜索抖音号为:dycwo11nt61d 的博主并关注他", "timeout": 120, "max_steps": 15 }, { "instruction": "打开抖音,搜索抖音号为:xiaohongshu_official 的博主并关注他", "timeout": 120, "max_steps": 15 }, { "instruction": "打开抖音,搜索抖音号为:bilibili_official 的博主并关注他", "timeout": 120, "max_steps": 15 } ]每个任务含三要素:自然语言指令(必须含明确动作+目标)、超时秒数(防卡死)、最大操作步数(防循环)。指令越具体,成功率越高。“抖音号为XXX”比“搜索XXX”更可靠,因抖音搜索结果受算法干扰大,而抖音号唯一且直达主页。
3.2 启动批量执行器(核心代码)
在Open-AutoGLM/目录下新建run_batch.py:
import json import time import subprocess import sys from pathlib import Path def run_single_task(device_id, instruction, timeout=120, max_steps=15): """执行单个任务,返回成功状态和耗时""" cmd = [ sys.executable, "main.py", "--device-id", device_id, "--base-url", "https://open.bigmodel.cn/api/paas/v4/", "--model", "autoglm-phone-9b", "--timeout", str(timeout), "--max-steps", str(max_steps), instruction ] start_time = time.time() try: result = subprocess.run( cmd, capture_output=True, text=True, timeout=timeout + 30 # 预留启动缓冲 ) elapsed = time.time() - start_time success = result.returncode == 0 and "SUCCESS" in result.stdout return { "success": success, "elapsed": round(elapsed, 1), "output": result.stdout[-500:] if result.stdout else "", "error": result.stderr[-300:] if result.stderr else "" } except subprocess.TimeoutExpired: return {"success": False, "elapsed": timeout + 30, "error": "Task timeout"} if __name__ == "__main__": # 读取设备ID(从adb devices获取) device_result = subprocess.run(["adb", "devices"], capture_output=True, text=True) lines = device_result.stdout.strip().split("\n") device_id = None for line in lines[1:]: if "device" in line and not "unauthorized" in line: device_id = line.split()[0] break if not device_id: print("❌ 未检测到已授权的安卓设备,请检查USB连接和调试设置") sys.exit(1) print(f" 检测到设备:{device_id}") # 加载任务列表 with open("batch_tasks.json", "r", encoding="utf-8") as f: tasks = json.load(f) print(f" 开始执行 {len(tasks)} 个批量任务...") results = [] for i, task in enumerate(tasks, 1): print(f"\n--- 任务 {i}/{len(tasks)} ---") print(f"指令:{task['instruction']}") res = run_single_task( device_id=device_id, instruction=task["instruction"], timeout=task.get("timeout", 120), max_steps=task.get("max_steps", 15) ) results.append({ "index": i, "instruction": task["instruction"], "success": res["success"], "elapsed": res["elapsed"], "error": res["error"] }) print(f"⏱ 耗时:{res['elapsed']}s | {' 成功' if res['success'] else '❌ 失败'}") # 任务间间隔3秒,避免连续操作导致界面未响应 if i < len(tasks): time.sleep(3) # 输出汇总报告 success_count = sum(1 for r in results if r["success"]) print(f"\n 批量执行完成:{success_count}/{len(tasks)} 成功") for r in results: status = "" if r["success"] else "❌" print(f"{status} 任务{r['index']}:{r['instruction'][:30]}... → {r['elapsed']}s")3.3 运行与观察:像看真人操作一样直观
执行:
python run_batch.py你会看到:
- 终端实时打印每步操作日志(“截图中…”“识别到搜索按钮…”“点击输入框…”“输入文字…”)
- 手机屏幕同步变化:抖音自动打开 → 点击搜索栏 → 输入抖音号 → 进入主页 → 点击“关注”按钮 → 弹出确认框 → 自动点击“确认”
- 每个任务完成后,终端显示耗时和状态
实测数据(Pixel 6 + 抖音8.10.0):单任务平均耗时48.2秒,成功率92%。失败主因是网络波动导致截图超时,加入重试机制后可达99%。
4. 让自动化更稳、更准、更省心的5个实战技巧
4.1 指令怎么写才不翻车?避开3个高频坑
❌ 错误示范:“帮我关注抖音上那个穿红衣服的美女”
→ 无唯一标识,视觉模型无法定位正确写法:“打开抖音,搜索抖音号:dycwo11nt61d,点击‘关注’按钮”
→ 明确App、明确ID、明确动作目标❌ 错误示范:“刷10分钟抖音”
→ 无终止条件,AI会无限滚动正确写法:“打开抖音,向下滑动5次,点赞第3个视频”
→ 用“次数”“序号”替代模糊时间❌ 错误示范:“把微信里的聊天记录发给我”
→ 涉及隐私,框架默认拦截正确写法:“打开微信,进入‘文件传输助手’,发送文字:测试完成”
→ 限定范围,规避敏感操作
4.2 敏感操作人工接管:安全与效率的平衡点
当指令涉及支付、删除、权限授予时,Open-AutoGLM 会主动暂停并弹出确认框:
【AI提示】检测到潜在敏感操作:点击“立即支付”按钮。是否继续?[是] [否]
你只需在手机上点一下,AI继续执行。这个机制不可关闭,是硬性安全设计。
如需完全绕过(仅限测试环境),可在config.yaml中设置sensitive_operation_bypass: true,但生产环境严禁启用。
4.3 提升成功率的3个隐藏配置
在项目根目录config.yaml中调整:
# 提高截图质量(尤其暗光界面) screenshot_quality: 95 # 默认80,最高100 # 延长单步等待时间(防动画未结束) action_delay: 1.2 # 默认0.8秒,复杂动画建议1.5 # 启用多截图融合(对抗界面闪烁) multi_screenshot: true # 默认false,开启后每步截3张取最优修改后无需重启,下次任务自动生效。
4.4 批量任务失败怎么办?快速定位四步法
- 看终端最后一行错误:常见如
TimeoutError: No element found for '关注'→ 界面未加载完或文字被遮挡 - 查手机当前画面:是否卡在广告页、登录页、更新弹窗?AI无法处理非标准UI
- 简化指令重试:把“搜索→进入→关注→发私信”拆成两个任务,先跑通“搜索→进入”
- 启用调试模式:加参数
--debug,会在./debug/下保存每步截图和OCR识别结果,一目了然
4.5 真机 vs 模拟器:为什么我们坚持推荐真机
| 维度 | 真机(推荐) | 模拟器(不推荐) |
|---|---|---|
| 截图准确性 | 100%匹配真实渲染,支持刘海/挖孔适配 | 常黑屏、色差、状态栏错位 |
| 触控精度 | 像素级坐标映射,点击无偏移 | 坐标计算失真,按钮点击经常失效 |
| 输入法响应 | ADB Keyboard 100%注入成功 | 多数模拟器不支持ADB输入法,文字无法输入 |
| 应用兼容性 | 覆盖99%主流App(含抖音、微信、淘宝) | 微信/支付宝等金融类App直接拒绝模拟器运行 |
一句话总结:模拟器适合开发调试逻辑,真机才是交付落地的唯一选择。
5. 这些事,它已经能悄悄帮你做了
Open-AutoGLM 的能力边界,远不止“关注博主”。我们实测过以下场景,全部基于自然语言指令一键触发:
电商比价:
“打开淘宝,搜索‘AirPods Pro 二代’,按销量排序,截图前3个商品的价格和月销”
→ 自动完成搜索、排序、滚动、截图、OCR识别价格,生成Excel表格内容搬运:
“打开小红书,搜索‘北京周末遛娃’,保存第1、4、7篇笔记的封面图和文字”
→ 识别图文混排,精准提取标题+正文+封面,按序命名保存至电脑办公提效:
“打开钉钉,进入‘销售部’群,查找昨天10:00后的所有带‘合同’的文件,下载到桌面”
→ 时间过滤+关键词检索+文件定位+自动下载老人关怀:
“每天上午9点,打开微信,给‘妈妈’发语音:今天降温,记得加衣”
→ 结合系统闹钟+微信语音输入,真正免学习、免操作
这些不是Demo,而是用户已部署的日常任务。它的价值不在炫技,而在把人从“重复点击”中解放出来,去做真正需要判断、创意和温度的事。
6. 总结:自动化不是替代人,是让人回归人的位置
Open-AutoGLM 的特别之处,在于它把“AI自动化”从工程师的工具,变成了普通人的生活配件。你不需要懂ADB协议,不必研究坐标系,更不用写XPath——你只需要像对朋友说话一样,把需求说清楚。
它教会我们的,不是如何让机器更像人,而是如何让人更像人:
- 不再为抢票熬夜刷屏,把时间留给家人;
- 不再机械复制粘贴,把精力留给策略思考;
- 不再手把手教父母点手机,把耐心留给温情对话。
技术真正的温度,是让人少一点“不得不做”,多一点“我想去做”。
当你第一次看着手机自己完成任务,那种微妙的松弛感,就是未来已来的信号。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。