Open-AutoGLM

2025-12-10

ai

如果你想要改变世界,先改变你自己。——圣雄甘地

Open-AutoGLM 与 Phone Agent:把“会用手机”的 AI 真正带到你的桌面

在移动端的真实世界里,很多任务都需要“看懂屏幕 + 点按滑动 + 输入搜索 + 等待跳转”。Open-AutoGLM 的 Phone Agent 正是为此而生:它基于多模态视觉语言模型(VLM)理解手机屏幕内容,通过 ADB 远程操控设备,自动完成从意图解析到动作执行的完整流程。你只需用自然语言提出需求,例如“打开美团搜索附近的火锅店”,Agent 即会理解当前界面、规划步骤、执行操作、并在敏感场景请求确认或人工接管,保障安全与可控。


项目核心能力一览

  • 多模态屏幕理解:视觉语言模型对当前手机界面进行感知(图像 + 文本),精准识别元素与上下文。
  • 自动化操作规划:根据意图生成可执行的动作序列(启动应用、点击、输入、滑动、返回、等待等)。
  • ADB 设备控制:本地或远程(WiFi/TCP/IP)连接设备,执行高可靠的系统级操作。
  • 安全机制:内置敏感操作确认、登录/验证码等场景的“人工接管”流程,保证安全与合规。
  • 中文/英文双语:中文默认系统提示词(System Prompt),可一键切换英文(适用于英文内容界面)。
  • 应用生态:支持 50+ 主流中文 App(微信、淘宝、美团、抖音、爱奇艺、12306、滴滴…),适合真实生活与工作场景。

环境与设备准备

  1. Python 环境
  • 推荐 Python 3.10+

  • 安装依赖:

    1
    2
    pip install -r requirements.txt 
    pip install -e .
  1. ADB(Android Debug Bridge)
  • 下载官方平台工具并加入 PATH:platform-tools
    • macOS 示例:

      1
      export PATH=${PATH}:~/Downloads/platform-tools
    • Windows 可参考第三方教程(例如 CSDN)配置环境变量

  1. Android 7.0+ 设备或模拟器
  • 启用“开发者模式”和“USB 调试”
  • 使用数据线连接,确认 adb devices 能看到设备
  • 注意权限与输入法设置(ADB Keyboard 需安装并在系统输入法中启用)
  1. ADB Keyboard(用于文本输入)

启动模型服务(vLLM 方案)

Open-AutoGLM 提供 OpenAI 兼容的 REST 接口。以下示例使用 vLLM 启动本地服务,严格按照提供的启动参数配置:

1
2
3
4
5
6
7
8
9
10
11
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
  • 成功后本地服务地址为 http://localhost:8000/v1
  • 若在远程服务器部署,使用服务器 IP 访问
  • 也可使用 SGlang 等推理引擎,参考 requirements.txt 的 For Model Deployment 章节

快速体验:命令行与 Python API

你可以直接用 CLI 发起指令,也可以在 Python 中创建 Phone Agent 执行任务。

命令行使用

1
2
3
4
5
6
7
8
9
10
11
# 交互模式运行
python main.py --base-url http://localhost:8000/v1 --model "autoglm-phone-9b"

# 指定任务(中文)
python main.py --base-url http://localhost:8000/v1 "打开美团搜索附近的火锅店"

# 指定英文 System Prompt(英文界面)
python main.py --lang en --base-url http://localhost:8000/v1 "Open Chrome browser"

# 查看支持的应用列表
python main.py --list-apps

Python API 使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from phone_agent import PhoneAgent
from phone_agent.model import ModelConfig

# 配置模型(OpenAI 兼容端点)
model_config = ModelConfig(
base_url="http://localhost:8000/v1",
model_name="autoglm-phone-9b",
)

# 创建 Agent
agent = PhoneAgent(model_config=model_config)

# 执行任务(中文示例)
result = agent.run("打开淘宝搜索无线耳机")
print(result)

远程 ADB 调试(无线/TCP/IP)

无需 USB,Phone Agent 支持在同一网络环境下通过 WiFi/TCP/IP 连接设备,适合远程联调与多设备测试。

手机端开启无线调试

  • 确保手机与电脑在同一 WiFi
  • 开启“开发者选项”中的无线调试(系统设置路径因机型而异)

电脑端连接设备

1
2
3
4
5
6
# 替换为手机显示的IP与端口(通常为 5555)
adb connect 192.168.1.100:5555

# 验证连接
adb devices
# 应显示:192.168.1.100:5555 device

Python API 远程连接示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from phone_agent.adb import ADBConnection, list_devices

conn = ADBConnection()

# 连接远程设备
success, message = conn.connect("192.168.1.100:5555")
print(f"连接状态: {message}")

# 查看当前已连接的设备
devices = list_devices()
for device in devices:
print(f"{device.device_id} - {device.connection_type.value}")

# 在 USB 设备上启用 TCP/IP
success, message = conn.enable_tcpip(5555)
ip = conn.get_device_ip()
print(f"设备 IP: {ip}")

# 断开远程设备
conn.disconnect("192.168.1.100:5555")

多设备与指定执行

1
2
3
4
5
# 指定设备执行任务
python main.py --device-id 192.168.1.100:5555 \
--base-url http://localhost:8000/v1 \
--model "autoglm-phone-9b" \
"打开抖音刷视频"

Prompt 与配置:做“懂你”的手机管家

System Prompt 切换

  • 中文(默认):--lang cn,配置文件 phone_agent/config/prompts_zh.py
  • 英文:--lang en,配置文件 phone_agent/config/prompts_en.py

你可以直接修改对应配置文件,增强特定领域能力,或禁用某些应用(通过注入 app 名称)。

环境变量

变量 描述 默认值
PHONE_AGENT_BASE_URL 模型 API 地址 http://localhost:8000/v1
PHONE_AGENT_MODEL 模型名称 autoglm-phone-9b
PHONE_AGENT_MAX_STEPS 每个任务最大步数 100
PHONE_AGENT_DEVICE_ID ADB 设备 ID 自动检测
PHONE_AGENT_LANG 语言(cnen cn

模型配置(Python)

1
2
3
4
5
6
7
8
9
10
from phone_agent.model import ModelConfig

config = ModelConfig(
base_url="http://localhost:8000/v1",
api_key="EMPTY", # 如需要,可以设置密钥
model_name="autoglm-phone-9b",
max_tokens=3000, # 输出上限
temperature=0.1, # 采样温度(更稳健)
frequency_penalty=0.2, # 频率惩罚
)

Agent 配置(Python)

1
2
3
4
5
6
7
8
from phone_agent.agent import AgentConfig

config = AgentConfig(
max_steps=100, # 每个任务最大步数
device_id=None, # ADB 设备 ID(None 为自动检测)
lang="cn", # cn(中文)或 en(英文)
verbose=True, # 打印思考过程与动作执行
)

调试与可观测性:让过程“看见”

开启 verbose=True 后,Agent 会打印每一步的“思考过程”和“执行动作”,示意如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
==================================================
💭 思考过程:
--------------------------------------------------
当前在系统桌面,需要先启动小红书应用
--------------------------------------------------
🎯 执行动作:
{
"_metadata": "do",
"action": "Launch",
"app": "小红书"
}
==================================================

...(下一步)

==================================================
💭 思考过程:
--------------------------------------------------
小红书已打开,现在需要点击搜索框
--------------------------------------------------
🎯 执行动作:
{
"_metadata": "do",
"action": "Tap",
"element": [500, 100]
}
==================================================

🎉 ================================================
✅ 任务完成: 已成功搜索美食攻略
==================================================

这非常适合教学演示、场景复盘与错误排查。


可执行动作与应用支持

  • 动作类型:Launch(启动应用)、Tap(点击坐标)、Type(文本输入)、Swipe(滑动)、BackHomeLong PressDouble TapWait(等待页面加载)、Take_over(人工接管)
  • 支持应用(部分):微信、QQ、微博、淘宝、京东、拼多多、美团、饿了么、肯德基、携程、12306、滴滴出行、bilibili、抖音、爱奇艺、网易云音乐、QQ音乐、喜马拉雅、大众点评、高德地图、百度地图、小红书、知乎、豆瓣…
    完整列表:python main.py --list-apps

回调机制:安全与人工接管

你可以自定义敏感操作确认与人工接管逻辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
def my_confirmation(message: str) -> bool:
"""敏感操作确认"""
return input(f"确认执行 {message}?(y/n): ").lower() == "y"

def my_takeover(message: str) -> None:
"""人工接管"""
print(f"请手动完成: {message}")
input("完成后按回车继续...")

agent = PhoneAgent(
confirmation_callback=my_confirmation,
takeover_callback=my_takeover,
)

二次开发与项目结构

  • 开发依赖:

    1
    pip install -e ".[dev]"
  • 运行测试:

    1
    pytest tests/
  • 目录结构(节选):

    1
    2
    3
    4
    5
    6
    phone_agent/
    ├── agent.py # PhoneAgent 主类
    ├── adb/ # ADB 工具(连接/截图/输入/设备控制)
    ├── actions/ # 操作执行器
    ├── config/ # 应用映射与中/英文 Prompt
    └── model/ # OpenAI 兼容模型客户端

常见问题速览

  • 设备未找到:重启 ADB 服务(adb kill-server && adb start-server && adb devices
  • 文本输入不工作:确认 ADB Keyboard 安装并启用为当前输入法
  • 截图黑屏:可能是敏感页面(支付/密码/银行),Agent 会请求人工接管
  • Windows 编码异常(UnicodeEncodeError gbk):运行前设置 PYTHONIOENCODING=utf-8
  • 非 TTY 环境交互模式报错:改用非交互模式直接指定任务,或在 TTY 终端运行

引用与学术参考

如果该项目对你有帮助,请引用以下论文:

1
2
3
4
5
6
7
8
9
10
11
12
@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}
}

结语:让 AI“用手机”,从此不再是演示

Open-AutoGLM 的 Phone Agent 把“屏幕理解 + 动作执行 + 安全机制”合到一条可靠的工程链路里,既适合研究与教学,也能落地到真实的移动应用场景。无论你是做智能助手、自动化测试、RPA 方案,还是个人效率工具,它都能成为让手机端自动化“真的可用”的基础设施。

动手试试吧:安装 ADB,启动模型服务,连接一台设备,用自然语言给个任务。看着它“思考-执行-完成”,你就会明白——这不仅是一个 Demo,而是下一代人机交互的开始。