Open-AutoGLM实战:自动登录+搜索+关注全流程

1. 这不是遥控器,是能“看懂”手机的AI助手

你有没有过这样的经历:想关注一个博主,得先解锁手机、找到App、点开搜索框、输入一长串ID、在结果里翻找、点进主页、再点关注——整个过程要十几秒,手指还得精准操作。如果同时要操作多台设备?或者正在开会没法碰手机?又或者只是单纯厌倦了重复点击?

Open-AutoGLM 不是另一个自动化脚本工具。它是一套真正理解手机界面的 AI 代理框架。它不靠坐标硬编码,不依赖固定控件ID,而是像人一样“看”屏幕、“读”文字、“想”下一步该做什么。当你输入“打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!”,它会:

  • 先识别当前是否在桌面,决定是否启动抖音
  • 进入抖音后,准确找到顶部搜索图标并点击
  • 在搜索框中逐字输入那一串看似随机实则唯一的ID
  • 从搜索结果中判断哪个是目标账号(不是靠位置,而是理解头像、昵称、认证标识等视觉语义)
  • 点击进入主页后,识别“关注”按钮的文字或图标状态,并完成点击

整个过程无需你写一行UI定位代码,也不用提前截图训练模型。它靠的是视觉语言模型对界面的实时理解,加上基于意图的智能动作规划。

这篇文章就带你完整走一遍真实可用的端到端流程:从零配置本地控制端,连接真机,部署云端模型服务,再到执行一条含登录、搜索、关注三重动作的复杂指令。所有步骤均已在 Android 12 真机 + Windows 11 + vLLM 服务环境下实测通过,不跳步、不省略、不假设你已装好一切。


2. 环境准备:三步搭起控制中枢

2.1 你的电脑需要什么

这不是一个“pip install 就完事”的工具。它需要你把本地电脑变成一台能远程指挥手机的控制中心。核心就三样:

  • Python 3.10 或更高版本:建议用 pyenv 或 conda 管理环境,避免污染系统 Python
  • ADB 工具链:Android Debug Bridge,它是所有操作的物理通道
  • 一台可调试的安卓手机:Android 7.0 及以上,推荐 Android 10+(高版本对无障碍权限更友好)

注意:不要用模拟器跑生产任务。模拟器的渲染延迟、截图失真、输入响应不一致,会导致 AI 对界面的理解频繁出错。本文全程以小米12(Android 12)真机为例。

2.2 ADB 配置:让电脑“认出”你的手机

Windows 用户请按顺序操作:

  1. 下载 platform-tools(选 Windows 版)
  2. 解压到一个无中文、无空格的路径,例如 C:\adb
  3. Win + R 输入 sysdm.cpl → “高级” → “环境变量” → 在“系统变量”中找到 Path → “编辑” → “新建” → 粘贴 C:\adb
  4. 打开新命令行窗口,输入 adb version,看到类似 Android Debug Bridge version 1.0.41 即成功

macOS 用户只需在终端运行:

# 假设你把 platform-tools 放在 ~/Downloads/platform-tools
echo 'export PATH=$PATH:~/Downloads/platform-tools' >> ~/.zshrc
source ~/.zshrc
adb version

2.3 手机端设置:打开“被控制”的大门

这一步最容易卡住,务必逐项确认:

  1. 开启开发者模式
    设置 → 关于手机 → 连续点击“版本号”7次 → 输入锁屏密码 → 出现“您现在处于开发者模式”

  2. 开启USB调试
    设置 → 额外设置 → 开发者选项 → 向下滚动 → 打开“USB调试”开关
    (若找不到“额外设置”,请在设置顶部搜索“开发者选项”)

  3. 安装并启用 ADB Keyboard(关键!)

    • 下载 ADB Keyboard APK(v1.1 或更新)
    • 用 USB 连接手机,在电脑命令行运行 adb install adbkeyboard.apk
    • 手机设置 → 语言与输入法 → 当前键盘 → 切换为 ADB Keyboard
    • 为什么必须? Open-AutoGLM 依赖它实现纯命令行文本输入,绕过系统软键盘的兼容性问题和弹窗干扰

完成这三步后,用 USB 线连接手机与电脑,在命令行运行:

adb devices

如果看到一串字母数字组合(如 8a9b2c1d device),说明连接成功。如果显示 unauthorized,请在手机上弹出的授权对话框中点“允许”。


3. 控制端部署:让本地代码“说话”

3.1 克隆并安装 Open-AutoGLM

打开终端(Windows 用 PowerShell 或 CMD,macOS 用 Terminal),执行:

git clone https://github.com/zai-org/Open-AutoGLM
cd Open-AutoGLM
pip install -r requirements.txt
pip install -e .

提示:pip install -e . 是关键。它以“开发模式”安装包,让你后续修改源码(比如 phone_agent/agent.py)能立即生效,无需反复重装。

3.2 验证 ADB 连通性(不跳过!)

Open-AutoGLM 目录下,运行一个最简测试:

python -c "from phone_agent.adb import list_devices; print(list_devices())"

你应该看到类似输出:

[<Device(device_id='8a9b2c1d', connection_type=<ConnectionType.USB: 1>)>]

如果报错 No module named 'adb',说明 requirements.txt 中的 adb-shell 未正确安装,请手动运行 pip install adb-shell

3.3 远程连接支持(WiFi 模式备选)

USB 连接稳定但不够灵活。如果你希望手机离电脑一米远也能工作,可以启用 WiFi 调试:

# 第一步:用 USB 连接时启用 TCP/IP 模式
adb tcpip 5555

# 第二步:拔掉 USB,确保手机和电脑在同一 WiFi 下
# 查看手机 IP(设置 → WLAN → 点击当前网络 → 查看 IP 地址,通常是 192.168.x.x)
adb connect 192.168.1.100:5555

# 第三步:验证
adb devices  # 应显示 192.168.1.100:5555    device

注意:部分品牌手机(如华为、小米)默认关闭 WiFi ADB,需在“开发者选项”中额外开启“无线调试”或“通过 WiFi 调试”。


4. 模型服务部署:给AI装上“眼睛”和“大脑”

Open-AutoGLM 的核心能力不在本地代码,而在它调用的视觉语言模型。你需要先启动一个能处理图像+文本的模型服务。

4.1 选择模型与部署方式

官方提供两个主力模型:

模型 适用场景 推荐部署方式
zai-org/AutoGLM-Phone-9B 中文手机任务首选(小红书、抖音、淘宝等) vLLM(显存 ≥ 12GB)
zai-org/AutoGLM-Phone-9B-Multilingual 需处理英文 App 或混合界面 vLLM 或 SGlang

本文使用 AutoGLM-Phone-9B,部署在一台带 RTX 3090 的服务器上(公网IP:203.123.45.67,映射端口 8800)。

4.2 启动 vLLM 服务(关键参数详解)

在服务器上运行以下命令(注意替换路径和参数):

python3 -m vllm.entrypoints.openai.api_server \
  --served-model-name autoglm-phone-9b \
  --model zai-org/AutoGLM-Phone-9B \
  --port 8800 \
  --max-model-len 25480 \
  --chat-template-content-format string \
  --limit-mm-per-prompt '{"image":10}' \
  --mm-encoder-tp-mode data \
  --mm_processor_cache_type shm \
  --mm_processor_kwargs '{"max_pixels":5000000}' \
  --allowed-local-media-path /

这些参数不是摆设,每一项都影响实际效果

  • --max-model-len 25480:必须 ≥ 24576,否则模型无法接收高分辨率截图(手机屏幕截图常达 1080×2400=2592000 像素,经压缩后仍需大上下文)
  • --mm_processor_kwargs '{"max_pixels":5000000}':将截图最大像素设为 500 万,平衡清晰度与显存占用(1080p 屏幕截图约 259 万像素,足够)
  • --allowed-local-media-path /:允许模型读取本地任意路径的截图文件(控制端会生成临时截图并传路径)
  • --mm_processor_cache_type shm:启用共享内存缓存,大幅提升多图连续推理速度

服务启动后,访问 http://203.123.45.67:8800/v1/models,应返回 JSON 包含 "id":"autoglm-phone-9b",即部署成功。


5. 实战演练:一条指令完成登录→搜索→关注

我们以“打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!”为例。这个任务包含三个典型难点:

  • 登录态判断:若抖音未登录,需先触发登录流程(弹窗、账号选择、密码输入)
  • ID 精准匹配:抖音号是字母数字混排,易与昵称、简介混淆,需视觉语义理解
  • 关注按钮识别:不同账号状态(已关注/未关注/互关)按钮文案不同,需动态识别

5.1 命令行一键执行

在本地 Open-AutoGLM 目录下,运行:

python main.py \
  --device-id 8a9b2c1d \
  --base-url http://203.123.45.67:8800/v1 \
  --model "autoglm-phone-9b" \
  "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"

你会看到什么

  • 终端实时打印每一步动作:[INFO] 截图已保存至 /tmp/screen_123456.png
  • → 正在识别桌面图标... 找到抖音图标
  • → 点击抖音图标
  • → 等待抖音加载... 检测到首页底部导航栏
  • → 点击搜索图标
  • → 输入文本:dycwo11nt61d
  • → 检测搜索结果列表... 定位第1项(头像+昵称+抖音号匹配度92%)
  • → 点击进入主页
  • → 检测到“关注”按钮(文案为“+ 关注”)
  • → 点击关注
  • 任务完成。总耗时:42.7 秒

5.2 关键动作拆解:AI 如何“思考”每一步

步骤 AI 的输入(截图+文本) AI 的决策依据 为什么可靠
启动抖音 桌面截图 + “打开抖音”指令 识别图标形状、颜色、文字标签(“抖音”汉字或音符logo) 视觉模型对常见App图标泛化能力强,不依赖坐标
点击搜索 抖音首页截图 + “搜索”意图 定位顶部搜索栏区域(结合颜色、圆角、放大镜图标) 多模态对齐:文字“搜索”与视觉元素强关联
输入ID 搜索框聚焦状态截图 + 字符串 dycwo11nt61d 调用 ADB Keyboard 逐字符发送,非粘贴(规避输入法拦截) 避免中文输入法切换导致的乱码或延迟
识别目标账号 搜索结果页截图 + “抖音号为 dycwo11nt61d” 同时比对头像相似度、昵称语义、抖音号字段(小字显示)、认证标识 不只看位置,而是理解“抖音号”在界面中的视觉呈现形式
点击关注 主页截图 + “关注”动作 识别按钮文案(“+ 关注”/“已关注”/“互相关注”)、背景色、可点击区域 动态状态判断,非静态模板匹配

小技巧:首次运行若失败,可在命令末尾加 --debug 参数,它会保存每一步的截图到 ./debug/ 目录,方便你人工复盘 AI “看错了哪一块”。

5.3 Python API 封装:嵌入你自己的业务流

如果你需要批量执行、或集成到 Web 后台,用 API 更灵活:

from phone_agent import PhoneAgent
from phone_agent.model import ModelConfig

# 配置指向你的云服务
model_config = ModelConfig(
    base_url="http://203.123.45.67:8800/v1",
    model_name="autoglm-phone-9b",
)

# 创建代理(自动管理ADB连接)
agent = PhoneAgent(
    model_config=model_config,
    device_id="8a9b2c1d",  # 你的设备ID
)

# 执行任务,返回结构化结果
result = agent.run(
    instruction="打开小红书搜索‘北京咖啡探店’并收藏第一条笔记",
    timeout=120,  # 最长等待2分钟
)

print(f"任务状态:{result.status}")  # success / failed
print(f"执行步骤:{len(result.steps)} 步")
print(f"耗时:{result.duration:.1f} 秒")

result.steps 是一个列表,每项包含 action(click/input/swipe)、description(AI 自述动作)、screenshot_path(对应截图路径),可直接用于审计或教学。


6. 故障排查:90%的问题都出在这五个地方

6.1 ADB 连接失败:device not foundunauthorized

  • 检查手机是否弹出“允许USB调试”弹窗(部分手机仅弹一次,拒绝后需在开发者选项里手动撤销授权)
  • 尝试更换 USB 线(很多线只充电不传数据)
  • 在电脑设备管理器中查看是否有“Android ADB Interface”黄色感叹号,有则右键更新驱动

6.2 模型返回乱码或空响应

  • 检查 vLLM 启动日志,确认 --model 路径是否正确(zai-org/AutoGLM-Phone-9B 需提前 huggingface-cli download 或设置 HF_TOKEN)
  • 确认 --max-model-len 是否 ≥ 24576,否则大图被截断导致信息丢失
  • 检查 --mm_processor_kwargsmax_pixels 是否过小(低于 2000000 会导致 1080p 截图严重模糊)

6.3 AI 总是点错位置:比如点到通知栏而非App图标

  • 运行 adb shell wm size,确认手机分辨率是否被缩放(如“强制使用 1080p”)。应保持原始分辨率
  • 在手机设置中关闭“深色模式”和“字体缩放”,避免 UI 元素尺寸异常
  • 使用 --debug 模式,查看 AI 生成的截图标注框是否覆盖正确区域

6.4 输入文字失败:搜索框没反应或输入乱码

  • 100% 确认 ADB Keyboard 已在手机“语言与输入法”中设为默认
  • 在手机设置中关闭“智能预测”“自动纠错”等输入法辅助功能
  • 尝试在命令中加 --input-method adb(强制使用ADB输入,而非模拟触摸)

6.5 登录流程卡死:AI 识别不出账号密码框

  • 这是正常现象。Open-AutoGLM 内置安全机制:当检测到密码输入框、短信验证码等敏感操作时,会自动暂停并等待人工接管
  • 此时终端会提示 检测到敏感操作,请手动完成登录后按回车继续
  • 你只需在手机上手动输密码、填验证码,然后回到终端按回车,AI 会从下一步继续

7. 总结:它能做什么,以及它不能做什么

7.1 你能立刻用它解决的实际问题

  • 电商运营:每天自动刷100个商品页,截图价格/销量/评价,生成竞品日报
  • 内容分发:一条指令同步发布图文到小红书、微博、知乎,自动适配各平台标题长度与话题标签
  • APP 测试:输入“注册新账号并完成新手引导”,AI 自动走完全部路径,截图关键节点供 QA 复核
  • 无障碍辅助:为视障用户朗读屏幕内容,并将语音指令转为点击操作(需接入 TTS)

7.2 它的现实边界(坦诚告诉你)

  • 不支持游戏内操作:Unity/Unreal 渲染的界面无标准控件,AI 无法理解“血条”“技能图标”的语义
  • 不处理动态验证码图片:虽然能识别数字,但对抗扭曲、噪点、滑块的验证码仍需人工
  • 不保证100%成功率:复杂多层弹窗(如某些金融App的层层风险提示)可能超出当前规划深度
  • 不替代专业自动化框架:对于毫秒级精度要求的自动化(如抢红包),ADB 延迟仍是瓶颈

但它代表了一个清晰的方向:自动化正从“写死坐标”的脚本时代,迈向“理解意图”的智能体时代。你不再教机器“点哪里”,而是告诉它“我要什么”。

下一次,当你面对一个重复的手机操作任务时,别急着伸手——先问问自己:这句话,能不能直接说给 Open-AutoGLM 听?


获取更多AI镜像

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

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐