AI语音指令控制手机全流程,Open-AutoGLM实操记录

本文是一份真实、可复现的 Open-AutoGLM 部署与使用手记。不讲空泛原理,只聚焦“从零开始,让AI真正听懂你的话,并替你点开抖音、搜博主、点关注”这一完整闭环。所有步骤均经本人 Windows 电脑 + 真机(Android 13)实测验证,问题、坑点、绕过方案全部如实记录。

1. 这不是概念演示,是能落地的语音指令闭环

你有没有过这样的时刻:

  • 手里端着咖啡,想查个快递但懒得解锁手机;
  • 开车刚停稳,想立刻给家人发条“已到家”,又怕分心操作;
  • 深夜躺床上,突然想起要预约明天的挂号,却不想开灯摸手机……

这些场景,过去靠语音助手只能“说说而已”——它能听清“打开微信”,但无法真正点击搜索框、输入名字、再点进头像页点关注。而 Open-AutoGLM 改变了这一点。它不是语音转文字+固定命令的伪智能,而是:
听懂你的自然语言(“打开抖音搜抖音号为:dycwo11nt61d 的博主并关注他!”)
看懂当前屏幕长什么样(自动截图分析界面元素)
自己动手完成每一步(启动App→点搜索栏→粘贴ID→点搜索→点头像→点关注)
遇到密码/验证码主动喊你接管(不瞎操作,安全可控)

这不是未来科技,这是今天就能在你手机上跑起来的开源项目。下面,我带你一步步走通这条“语音→理解→执行”的全链路。

2. 环境准备:三步到位,拒绝玄学报错

别被“多模态”“视觉语言模型”吓住——实际部署比你想象中轻量。整个过程只需三类准备,我按真实踩坑顺序列清楚:

2.1 你的本地电脑(Windows/macOS均可)

  • Python 3.10+(强烈建议用 3.10.12,3.11 在某些ADB库上有兼容问题)
  • Git(用于克隆代码)
  • ADB 工具包(必须!不是装个Android Studio就行,要单独下载platform-tools)

关键避坑点

  • ADB 必须加入系统环境变量 PATH,否则 adb devices 会提示“命令未找到”。
  • Windows 用户:解压 platform-tools 后,在「系统属性 → 高级 → 环境变量 → 系统变量 → Path」里新增该文件夹路径。
  • macOS 用户:终端执行 export PATH=$PATH:~/Downloads/platform-tools(把路径换成你的真实解压位置),并写入 ~/.zshrc 永久生效。
    验证成功标志:终端输入 adb version,返回类似 Android Debug Bridge version 1.0.41 即可。

2.2 你的安卓真机(重点!模拟器慎选)

  • Android 7.0+(实测 Android 11/12/13 均稳定)
  • 务必开启开发者选项:设置 → 关于手机 → 连续点击“版本号”7次
  • 务必开启USB调试:设置 → 开发者选项 → 打开“USB调试”
  • 必须安装 ADB Keyboard(解决中文输入核心难题):
    • 下载地址:https://github.com/senzhk/ADBKeyBoard/releases
    • 安装后,进入「设置 → 语言与输入法 → 当前输入法」,手动切换为 ADB Keyboard

注意:很多教程漏掉这一步,结果AI输出了“输入dycwo11nt61d”,但手机根本打不出中文,卡死在搜索栏。ADB Keyboard 就是这个环节的唯一解。

2.3 云端模型服务(最省事的选择)

Open-AutoGLM 本身是控制端,AI大脑需要独立部署。但好消息是:你不需要自己租GPU、配vLLM、调显存参数。智谱官方提供了公开可用的 API 服务(测试阶段免费),我们直接连它即可。

  • 服务地址:http://autoglm-phone-api.zai.org:8800/v1(截至本文撰写时有效)
  • 模型名:autoglm-phone-9b
  • API Key:EMPTY(留空即可)

小贴士:如果你后续想私有部署,推荐用 vLLM 启动(python -m vllm.entrypoints.openai.api_server --model zai-org/autoglm-phone-9b --port 8800),但首次体验,直连官方API最快。

3. 一键部署控制端:5分钟跑起你的AI手机助理

所有依赖和代码都在一个仓库里,无需手动拼凑。

3.1 克隆并安装

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

# 1. 克隆仓库(国内用户建议加代理或用镜像)
git clone https://github.com/zai-org/Open-AutoGLM
cd Open-AutoGLM

# 2. 创建虚拟环境(推荐,避免污染全局Python)
python -m venv venv
venv\Scripts\activate  # Windows
# source venv/bin/activate  # macOS/Linux

# 3. 安装依赖(注意:requirements.txt里含torch-cu118,如无NVIDIA显卡请先pip uninstall torch,再pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu)
pip install -r requirements.txt
pip install -e .

成功标志:无红色报错,最后一行显示 Successfully installed ...

3.2 连接你的手机(USB or WiFi?选对才不掉线)

USB 连接(新手首选,最稳):
  • 用原装数据线连接手机与电脑
  • 手机弹出“允许USB调试吗?” → 勾选“始终允许”,点确定
  • 终端执行:
    adb devices
    
    正确输出示例:
    List of devices attached
    1234567890abcdef    device
    
    那串字母数字就是你的 device-id,记下来。
WiFi 连接(适合长期使用,免线缆):
  • 先用USB连一次,执行:
    adb tcpip 5555
    
  • 断开USB,确保手机和电脑在同一WiFi下
  • 查看手机IP:设置 → WLAN → 点击当前网络 → IP地址(如 192.168.1.105
  • 终端执行:
    adb connect 192.168.1.105:5555
    
    成功后 adb devices 会显示 192.168.1.105:5555 device

常见失败:

  • unable to connect → 检查手机IP是否正确、防火墙是否拦截5555端口
  • device offline → 重启手机ADB:adb kill-server && adb start-server

4. 第一次语音指令实操:从“打开抖音”到“成功关注”,全程录屏级还原

现在,一切就绪。我们来执行那个经典指令:
“打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!”

4.1 命令行直接运行(最简方式)

Open-AutoGLM 目录下,执行(将 <device-id> 替换为你自己的设备ID):

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

你会看到实时输出,类似这样:

[Step 1] Capturing screenshot... ✓
[Step 1] Current app: System Home
[Step 1] Sending to model... (thinking...)
<think>当前在桌面,需要启动抖音应用</think>
<answer>do(action="Launch", app="抖音")</answer>
[Step 1] Executing: Launch app '抖音'... ✓

[Step 2] Capturing screenshot... ✓
[Step 2] Current app: 抖音
<think>抖音已打开,首页有搜索图标,位于右上角</think>
<answer>do(action="Tap", element=[850, 120])</answer>
[Step 2] Executing: Tap at [850, 120]... ✓

[Step 3] Capturing screenshot... ✓
[Step 3] Current app: 抖音
<think>已进入搜索页,输入框已聚焦,需输入抖音号</think>
<answer>do(action="Type", text="dycwo11nt61d")</answer>
[Step 3] Executing: Type 'dycwo11nt61d'... ✓

[Step 4] Capturing screenshot... ✓
[Step 4] Current app: 抖音
<think>输入完成,键盘已收起,搜索按钮可点击</think>
<answer>do(action="Tap", element=[500, 180])</answer>
[Step 4] Executing: Tap at [500, 180]... ✓

[Step 5] Capturing screenshot... ✓
[Step 5] Current app: 抖音
<think>搜索结果页已加载,第一个结果是目标博主,头像区域坐标约[300,400]</think>
<answer>do(action="Tap", element=[300, 400])</answer>
[Step 5] Executing: Tap at [300, 400]... ✓

[Step 6] Capturing screenshot... ✓
[Step 6] Current app: 抖音
<think>已进入博主主页,关注按钮在右上角,文字为'关注'</think>
<answer>do(action="Tap", element=[880, 150])</answer>
[Step 6] Executing: Tap at [880, 150]... ✓

[Step 7] Capturing screenshot... ✓
[Step 7] Current app: 抖音
<think>关注成功,按钮文字变为'已关注',任务完成</think>
<answer>finish(message="已成功关注抖音号 dycwo11nt61d 的博主")</answer>
 Task completed: 已成功关注抖音号 dycwo11nt61d 的博主

关键观察点

  • 每一步都先截图、再识别当前App、再发给AI;
  • AI的 <think> 是推理过程,<answer> 是具体动作;
  • 所有坐标 [x,y] 都是归一化后的(0-999),自动适配你手机分辨率;
  • 中文输入 dycwo11nt61d 完美执行,靠的就是前面装的 ADB Keyboard;
  • 最后一步 finish() 表明流程终结,没有死循环。

4.2 为什么它能“看懂”屏幕?——揭秘截图与理解机制

你可能好奇:AI怎么知道搜索框在右上角?头像在哪儿?
答案就藏在 phone_agent/adb/screenshot.py 里:

  1. 控制端执行 adb shell screencap -p /sdcard/tmp.png,在手机本地截一张图;
  2. 再执行 adb pull /sdcard/tmp.png ./temp.png,把图拉到你电脑;
  3. 用 Pillow 读取图片,转成 base64 编码;
  4. 连同当前App名(通过 adb shell dumpsys window | grep mCurrentFocus 解析)、任务描述,一起打包成 OpenAI 格式的多模态消息,发给云端模型。

🧠 模型收到的,不是模糊的“找搜索框”,而是:

“这张图里,当前App是抖音,你正在桌面。请规划下一步动作。”
(附:一张1080x2400的高清截图)

这就是真正的“所见即所得”——AI不是猜,是真看见。

5. 进阶技巧:让指令更准、执行更快、覆盖更多场景

基础跑通后,你可以立刻升级体验:

5.1 指令怎么写才好使?——小白友好提示词法则

别再写“帮我弄一下抖音”,试试这三类高成功率句式:

类型 示例 为什么有效
明确动词+对象 “打开小红书,搜索‘北京烤鸭’,点第一篇笔记,保存图片” 动作链清晰,AI易拆解为 Launch→Tap→Swipe→LongPress
带身份标识 “在微信里,给张三发消息:‘明早九点会议室见’” 明确App、联系人、内容,避免歧义(微信里可能有多个“张三”)
防错补充 “打开淘宝,搜‘无线耳机’,如果出现‘登录’页面,请手动输密码” 主动预判敏感场景,触发人工接管,不卡死

实测发现:加“请”字反而降低准确率(模型更习惯指令体),直接用动词开头效果最好。

5.2 一次搞定多个任务:用 Python API 写自动化脚本

main.py 适合单次尝试,但你想每天自动打卡、定时查快递?写个脚本更高效。看这个真实案例(自动查顺丰单号):

from phone_agent.agent import PhoneAgent
from phone_agent.config import AgentConfig
from phone_agent.model.client import ModelClientConfig

# 配置AI模型
model_config = ModelClientConfig(
    base_url="http://autoglm-phone-api.zai.org:8800/v1",
    model_name="autoglm-phone-9b",
    api_key="EMPTY"
)

# 配置Agent行为
agent_config = AgentConfig(
    max_steps=50,
    verbose=True
)

# 创建Agent(指定你的设备ID)
agent = PhoneAgent(
    model_config=model_config,
    agent_config=agent_config,
    device_id="1234567890abcdef"
)

# 执行一连串任务
tasks = [
    "打开顺丰速运App",
    "点击首页的‘查件’按钮",
    "输入运单号:SF123456789CN",
    "点击查询,等待结果页加载完成"
]

for task in tasks:
    print(f"\n 执行任务:{task}")
    result = agent.run(task)
    print(f" 结果:{result}")
    if "error" in result.lower():
        break

效果:脚本自动打开顺丰App→点查件→输单号→点查询→等结果,全程无人值守。

5.3 覆盖更多App:50+应用包名,你只需改一行

默认支持微信、抖音、淘宝等主流App,但你想控制“钉钉”“Keep”“闲鱼”?很简单:
打开 phone_agent/config/apps.py,找到 APP_PACKAGES 字典,添加一行:

"钉钉": "com.alibaba.android.rimet",
"Keep": "com.gotokeep.keep",
"闲鱼": "com.taobao.idlefish"

添加后,指令中直接说“打开钉钉”即可,无需其他配置。

6. 常见问题实战排障:这些问题我全遇到过

6.1 问题:执行到“输入文字”就卡住,手机没反应

解决:

  • 检查 ADB Keyboard 是否已设为默认输入法(设置 → 语言与输入法);
  • 检查手机是否开启了“无障碍服务”(部分安卓版本要求,设置 → 无障碍 → 打开 ADB Keyboard 的开关);
  • 终端手动试一次:adb shell am broadcast -a ADB_INPUT_TEXT --es msg "test",看手机是否弹出“test”。

6.2 问题:截图是纯黑屏,后面所有步骤都失败

解决:

  • 这是正常现象!说明AI正面对支付页、密码页等敏感界面,系统禁止截图;
  • 此时Open-AutoGLM会自动输出 do(action="Take_over", message="请手动完成支付")
  • 你只需按回车,AI暂停,你手动操作完再按回车,它继续下一步。

6.3 问题:点击位置明显偏移,比如想点右上角却点了左下角

解决:

  • 归一化坐标转换依赖屏幕宽高,若 adb shell wm size 返回异常值(如 Override size: 1080x2400 被篡改),会导致计算错误;
  • 重置:adb shell wm size reset
  • 或临时在 phone_agent/adb/screenshot.py 里硬编码你的真机分辨率(width=1080, height=2400)。

6.4 问题:运行 main.py 报错 ModuleNotFoundError: No module named 'phone_agent'

解决:

  • 一定是没执行 pip install -e .(注意末尾的英文句点);
  • 或执行了但没激活虚拟环境;
  • 重新执行:pip install -e .,然后确认 python -c "import phone_agent; print('OK')" 不报错。

7. 总结:一条可复用、可扩展、真正落地的AI手机自动化路径

回顾这次实操,Open-AutoGLM 给我的最大感受是:它把AI Agent从论文概念,拉到了工具箱级别

  • 对普通用户:它是一把“语音万能钥匙”,一句话解放双手,尤其适合中老年家庭成员、行动不便者、多任务场景下的效率提升;
  • 对开发者:它是一个教科书级的工程范本——多模态输入如何组织、ADB控制如何封装、上下文如何精巧管理(图像只留当步,文本全程保留)、安全边界如何划定(敏感操作必确认);
  • 对研究者:它验证了一条可行路径:不依赖UI元素识别(XPath/Accessibility ID),仅靠VLM“看图说话”,就能实现跨App、跨版本的鲁棒控制。

它当然不是终点:目前单步耗时2-3秒,复杂任务仍需耐心;对动画过渡帧、弹窗遮挡等动态场景的鲁棒性还有提升空间;iOS支持尚属空白。但正是这些“不完美”,恰恰指明了下一步创新的方向。

如果你也厌倦了重复点击,渴望一个真正“听话”的手机助手——现在,就是开始的最佳时机。


获取更多AI镜像

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

Logo

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

更多推荐