想象一下,你只需对手机说一句“打开小红书,帮我搜一下周末去哪玩”,它就能像一位看不见的助手,精准地点开App、进入搜索框、输入关键词、浏览结果,最后将最吸引人的攻略呈现在你面前。这听起来像是科幻电影里的场景,但今天,基于 AutoGLM-Phone-9B 这一开源项目,这一切已经成为了触手可及的现实。本文将深入解析这个能“看懂”手机屏幕、并替你“动手”操作的智能体框架,手把手带你从零开始部署与使用,揭开手机自动化助理的神秘面纱。
“
摘要: AutoGLM-Phone-9B是一个基于多模态大模型的手机智能助手框架,它通过视觉语言模型理解手机屏幕内容,并结合智能规划能力,将自然语言指令(如“打开淘宝搜索耳机”)自动转化为一系列点击、滑动等操作。该系统依托ADB控制设备,支持超过50款主流中文应用,并内置敏感操作确认与人工接管机制,为手机自动化操作提供了安全、高效的研究与开发平台。
第一章:项目全景——手机里的“数字员工”是什么?
Phone Agent,或者说“手机智能体”,其核心目标是将人类从重复、繁琐的手机操作中解放出来。它并不是一个简单的“宏”或“脚本”,而是一个具备感知、思考、执行能力的智能系统。
它的工作原理可以概括为一个精密的“感知-决策-执行”循环:
-
多模态感知:系统通过ADB(Android Debug Bridge) 实时获取手机屏幕截图。这张截图被送入一个强大的视觉语言模型(Vision-Language Model)。这个模型不仅能看到图像,更能像人类一样“理解”屏幕上有什么:哪里是按钮、哪里是输入框、当前正在运行哪个应用。 -
智能规划与决策:接收到用户的自然语言指令(例如,“帮我订一份附近评分最高的披萨”)后,系统会结合对当前屏幕的理解,进行任务分解和路径规划。它会推理出完成任务所需的步骤序列,比如: 解锁屏幕 -> 打开外卖App -> 点击搜索框 -> 输入“披萨” -> 按评分排序 -> 选择第一家店 -> 下单。 -
自动化执行:规划好的动作序列(点击 [x, y]坐标、输入文本、滑动屏幕等)会通过ADB指令精确地发送到手机设备上执行,从而驱动应用完成整个任务流程。
这个框架的价值不仅在于自动化,更在于其泛化能力。传统的自动化脚本需要为每一个App、每一个界面单独编写,而基于大模型的Phone Agent通过学习,能够适应不同应用的UI布局,处理前所未见的新任务,展现了作为“通用GUI智能体”的潜力。
“
⚠️ 重要提示: 本项目(包括模型与代码)严格限定于研究与教育用途。任何将其用于非法数据获取、系统干扰或其他违法活动的行为都是被严格禁止的。使用前请务必仔细阅读项目的使用条款。
第二章:如何开始?—— 环境部署完全指南
纸上得来终觉浅,绝知此事要躬行。要让Phone Agent真正运转起来,你需要准备好“舞台”(运行环境)和“演员”(模型服务)。别担心,整个过程虽然步骤清晰,但只要你跟着指南一步步来,就能顺利完成。
第一步:搭建基础舞台(Python与ADB)
1. Python环境
这是运行所有代码的基础。建议使用 Python 3.10 或更高版本。
2. 安装并配置ADB
ADB是连接电脑和安卓设备的桥梁。
- •
下载:从Android开发者官网下载平台工具并解压。 - •
配置环境变量:将解压目录的路径(例如 ~/Downloads/platform-tools)添加到系统的PATH变量中。这样你就可以在终端任何位置使用adb命令了。 - •
Windows用户可以参考详细的第三方配置教程。
3. 准备安卓设备
你需要一台Android 7.0以上的手机或模拟器,并开启两个关键开关:
- •
开发者模式:进入“设置 > 关于手机 > 版本号”,连续点击7-10次,直到看到提示。 - •
USB调试:进入新出现的“开发者选项”,找到并开启“USB调试”。 - •
连接测试:用USB数据线连接手机和电脑,在终端输入 adb devices。如果看到设备序列号后面跟着device字样,恭喜你,连接成功!
4. 安装ADB Keyboard(实现文本输入)
为了让Agent能在手机上输入文字,需要安装一个特殊的输入法。
- •
下载ADBKeyboard.apk并安装到手机。 - •
在手机的“设置 > 系统 > 语言和输入法 > 虚拟键盘”中,启用 ADB Keyboard。
第二步:请出核心“演员”(部署模型服务)
Phone Agent的“大脑”是 AutoGLM-Phone-9B 模型。你可以从以下地址下载:
- •
🤗 Hugging Face:zai-org/AutoGLM-Phone-9B - •
🤖 ModelScope:ZhipuAI/AutoGLM-Phone-9B
接下来,我们需要在一个高性能的推理引擎上加载并运行这个模型,将其变成一个可以通过API调用的服务。官方推荐使用 vLLM。
1. 安装项目依赖与推理引擎
# 克隆项目并安装基础依赖
git clone https://github.com/zai-org/Open-AutoGLM
cd Open-AutoGLM
pip install -r requirements.txt
pip install -e .
# 安装vLLM(请根据你的CUDA版本选择合适的安装命令)
pip install vllm
2. 启动模型服务
运行以下命令启动一个OpenAI API兼容的服务端。请严格遵循给定的参数,这对多模态模型的高效运行至关重要。
python3 -m vllm.entrypoints.openai.api_server \
--served-model-name autoglm-phone-9b \
--allowed-local-media-path / \
--mm-encoder-tp-mode data \
--mm_processor_cache_type shm \
--mm_processor_kwargs "{\"max_pixels\":5000000}" \
--max-model-len 25480 \
--chat-template-content-format string \
--limit-mm-per-prompt "{\"image\":10}" \
--model zai-org/AutoGLM-Phone-9B \
--port 8000
关键参数解读:
- •
--max-model-len 25480:将模型上下文长度设置为25480个token,以处理长序列任务。 - •
--mm_processor_kwargs “{\“max_pixels\“:5000000}”:限制每张图像处理的最大像素为500万像素,平衡速度与精度。 - •
--limit-mm-per-prompt “{\“image\“:10}”:限制每个提示词中最多包含10张图像。
3. 验证服务
启动成功后,模型API服务将在 http://localhost:8000/v1 上运行。你可以通过curl命令简单测试,或直接进入下一步。
“
技术备注:该模型架构与 GLM-4.1V-9B-Thinking 完全相同。如需更深入的部署细节,可参考 GLM-V 项目仓库。
第三章:上手实践——让你的手机“动”起来
模型服务在后台跑起来了,现在让我们通过两种方式与Phone Agent互动:简洁的命令行和灵活的Python API。
方式一:使用命令行(快速体验)
在项目根目录下,你可以使用 main.py 脚本。
# 1. 交互式对话模式:启动后会持续等待你输入指令
python main.py --base-url http://localhost:8000/v1 --model “autoglm-phone-9b”
# 2. 单次任务模式:直接执行一条指令
python main.py --base-url http://localhost:8000/v1 “打开美团搜索附近的火锅店”
# 3. 查看所有支持的应用
python main.py --list-apps
方式二:使用Python API(集成开发)
这种方式让你能够将Phone Agent的能力无缝嵌入到自己的应用程序或工作流中。
from phone_agent import PhoneAgent
from phone_agent.model import ModelConfig
# 第一步:配置模型连接
model_config = ModelConfig(
base_url=“http://localhost:8000/v1”, # 你的模型服务地址
model_name=“autoglm-phone-9b”, # 模型名称
)
# 第二步:创建智能体实例
agent = PhoneAgent(model_config=model_config)
# 第三步:下达任务!
result = agent.run(“打开淘宝搜索无线耳机”)
print(f“任务执行结果:{result}”)
执行上述代码后,你会看到你的手机自动亮屏、解锁(如果未设密码)、找到淘宝图标、点击打开、进入搜索页、输入“无线耳机”……整个过程流畅自然,如同一个隐形的手指在操作。
开启Verbose模式,窥探AI的思考过程
如果你想了解Agent每一步是如何决策的,可以在创建时启用详细日志:
from phone_agent.agent import AgentConfig
agent_config = AgentConfig(verbose=True)
agent = PhoneAgent(model_config=model_config, agent_config=agent_config)
启用后,控制台会输出类似下面的信息,让你清晰看到AI的“思维链”:
💭 思考过程:
—————————————————
当前在系统桌面,需要先启动小红书应用
—————————————————
🎯 执行动作:
{ “action”: “Launch”, “app”: “小红书” }
第四章:高级技能与深度配置
技能一:摆脱线缆——远程无线调试
你不需要一直用USB线连着手机。通过WiFi进行远程ADB连接,让控制更加灵活。
在手机上开启无线调试:
-
确保手机和电脑在同一WiFi网络下。 -
进入“开发者选项”,找到“无线调试”并开启。 -
记下屏幕上显示的IP地址和端口(例如 192.168.1.100:5555)。
在电脑上连接:
adb connect 192.168.1.100:5555
adb devices # 验证连接,应看到该设备
在任务中指定远程设备:
python main.py --device-id 192.168.1.100:5555 --base-url http://localhost:8000/v1 “打开抖音刷视频”
技能二:定制化你的Agent
Phone Agent提供了丰富的配置选项,以适应不同场景。
1. 通过环境变量配置
export PHONE_AGENT_BASE_URL=“http://你的服务器IP:8000/v1”
export PHONE_AGENT_MODEL=“autoglm-phone-9b”
export PHONE_AGENT_MAX_STEPS=50 # 限制单个任务最多执行50步,防止死循环
2. 精细调整模型参数
model_config = ModelConfig(
base_url=“http://localhost:8000/v1”,
model_name=“autoglm-phone-9b”,
max_tokens=3000, # 模型单次响应最大生成3000个token
temperature=0.1, # 较低的采样温度(0.1)使输出更确定、更稳定
frequency_penalty=0.2, # 频率惩罚系数0.2,降低重复用词的概率
)
3. 处理敏感操作:自定义回调函数
这是保障安全的关键机制。当Agent遇到支付、输入密码等敏感页面时,可以触发你的自定义函数。
def my_confirmation(message: str) -> bool:
“”“敏感操作确认回调,例如点击‘支付’按钮”“”
answer = input(f“⚠️ 即将执行敏感操作:{message},是否继续?(y/n): “)
return answer.lower() == ‘y’
def my_takeover(message: str) -> None:
“”“人工接管回调,例如遇到图形验证码”“”
print(f“🤖 Agent请求人工接管:{message}”)
input(“👤 请手动完成后,按回车键让Agent继续…”)
# 将回调函数注入Agent
agent = PhoneAgent(
model_config=model_config,
confirmation_callback=my_confirmation,
takeover_callback=my_takeover
)
第五章:能力边界与应用生态
了解一个工具能做什么、不能做什么,是高效使用它的前提。
支持哪些操作?
Phone Agent能执行以下9类核心原子操作,覆盖了绝大部分交互场景:
支持哪些应用?
项目已预先支持超过50款国内主流应用,涵盖社交通讯、电商购物、生活服务、内容娱乐等八大类别。你可以随时通过 python main.py --list-apps 命令查看完整列表。
第六章:常见问题与解决方案 (FAQ)
在实际部署和使用过程中,你可能会遇到一些“拦路虎”。以下是经过验证的解决方案。
Q1: 执行 adb devices 后,列表为空,找不到我的设备。
- •
检查USB线:确保使用的是具备数据传输功能的USB线,而非仅能充电的线。 - •
重启ADB服务:在终端依次执行: adb kill-server adb start-server adb devices - •
检查手机授权:首次连接时,手机会弹出“允许USB调试吗?”的对话框,请点击“确定”。
Q2: Agent无法在手机上输入文字。
- •
确认安装与启用:确保已正确安装并启用了 ADB Keyboard输入法。 - •
Agent会自动切换:无需手动切换,当需要输入时,Agent会通过ADB指令自动将输入法切换到ADB Keyboard。
Q3: 截图失败,获取到的屏幕图像是黑屏或空白。
- •
安全机制触发:这通常发生在银行、支付类应用或某些系统的密码输入界面。安卓系统出于安全考虑禁止截图。Phone Agent会检测到这种情况,并自动触发 Take_over回调,请求人工介入。
Q4: 远程ADB连接经常断开。
- •
网络稳定性:检查WiFi信号强度,确保设备与电脑在同一局域网且网络稳定。 - •
端口重启用:部分手机重启后会自动关闭TCP/IP调试。需要重新用USB连接一次,执行 adb tcpip 5555后,再断开USB进行无线连接。
第七章:背后的研究与开源精神
AutoGLM-Phone-9B并非空中楼阁,它建立在坚实的学术研究之上,并秉承着开源与开放科学的精神。如果你在研究中使用了该项目,请考虑引用以下论文:
@article{liu2024autoglm,
title={Autoglm: Autonomous foundation agents for guis},
author={Liu, Xiao and Qin, Bo and Liang, Dongzhu and Dong, Guang and Lai, Hanyu and Zhang, Hanchen and Zhao, Hanlin and Iong, Iat Long and Sun, Jiadai and Wang, Jiaqi and others},
journal={arXiv preprint arXiv:2411.00820},
year={2024}
}
@article{xu2025mobilerl,
title={MobileRL: Online Agentic Reinforcement Learning for Mobile GUI Agents},
author={Xu, Yifan and Liu, Xiao and Liu, Xinghan and Fu, Jiaqi and Zhang, Hanchen and Jing, Bohao and Zhang, Shudan and Wang, Yuting and Zhao, Wenyi and Dong, Yuxiao},
journal={arXiv preprint arXiv:2509.18119},
year={2025}
}
通过本文,我们系统地拆解了AutoGLM-Phone-9B项目从理念、部署到实战应用的全过程。它向我们展示了大模型与具身智能结合的一个激动人心的方向:让AI不仅能说会道,还能“眼观六路,手操屏幕”。无论是作为自动化测试的工具、辅助残障人士的利器,还是作为通用智能体研究的前沿平台,这个项目都为我们打开了一扇充满可能性的大门。现在,环境已经就绪,代码触手可及,是时候启动你的模型,向你的手机发出第一个指令了。

