智谱AI 开源项目

Open-AutoGLM

基于 AutoGLM 视觉语言模型构建的手机端智能助理框架。通过多模态理解屏幕内容,结合智能规划能力,自动化完成各种手机操作任务。只需自然语言描述,AI 自动执行。

✓ 无需 ROOT 权限 🌐 支持远程调试 🔒 敏感操作保护 🤖 开源可商用
80+ 支持应用
14 操作指令
9B 模型参数
Apache-2.0 开源协议
📱
🤖
当前在系统桌面,需要先启动小红书
Launch app="小红书"
小红书已打开,点击搜索框
Tap element=[500, 100]
Type text="美食攻略"
✅ 任务完成

项目概述

Phone Agent 让 AI 成为你的手机操作助手,理解屏幕、规划任务、自动执行

👁️

多模态屏幕理解

基于 9B 参数视觉语言模型,智能识别屏幕上的文字、图标、按钮等所有 UI 元素,准确理解当前界面状态和可操作区域。

🧠

智能任务规划

内置 18 条智能决策规则,自动分解复杂任务为原子操作步骤,处理异常情况(网络问题、页面未加载、操作失败)并智能重试。

ADB 自动化控制

通过标准 ADB 协议实现设备控制,支持点击、滑动、输入、启动应用等 14 种操作,无需 ROOT 权限,安全可靠。

工作原理

从自然语言输入到自动执行的完整闭环

💬
自然语言输入
"打开小红书搜索美食攻略"
📸
屏幕截图
ADB 获取当前屏幕状态
🧠
VLM 分析
理解界面 + 生成思考过程
📋
动作输出
生成具体操作指令
ADB 执行
执行点击/滑动/输入等
🔄 循环执行直至任务完成或达到最大步数 (默认 100 步)

14 种操作指令

覆盖手机操作的方方面面

🚀

Launch

启动应用程序

app="微信"
👆

Tap

点击指定坐标

element=[x,y]
⌨️

Type

输入文本内容

text="搜索词"
👋

Swipe

滑动屏幕

start→end
↩️

Back

返回上一页

keyevent 4
🏠

Home

返回桌面

HOME键
👇

Long Press

长按操作 (3秒)

3000ms
👆👆

Double Tap

双击操作

100ms间隔

Wait

等待页面加载

duration="x"
🤝

Take_over

请求人工接管

登录/验证码
📝

Note

记录页面内容

message="True"
🔗

Call_API

总结/评论内容

instruction

Interact

询问用户选择

多选项场景

finish

任务完成

message="结果"

核心特性

强大功能让手机操作更智能、更安全

🎯

相对坐标系统

使用 0-999 的相对坐标系统,自动转换为实际像素位置,适配任意分辨率屏幕

🔒

敏感操作保护

涉及支付、隐私的操作会触发确认回调,用户可自定义确认逻辑,防止误操作

📡

WiFi 远程调试

支持通过 TCP/IP 远程连接设备,无需 USB 数据线即可控制,方便远程开发测试

⌨️

ADB Keyboard 输入

使用 ADB Keyboard 实现文本输入,自动切换输入法、清除旧文本,支持中英文输入

💭

思考过程可视化

Verbose 模式下展示 AI 的推理过程,输出 <think> 标签中的决策逻辑,便于调试

🔄

智能重试机制

点击/滑动不生效时自动调整位置重试,页面未加载最多等待 3 次,网络问题自动重新加载

🌐

中英双语支持

提供两个模型版本:中文优化版和多语言版,配套中英文 System Prompt,适应不同场景

🧩

OpenAI 兼容 API

模型服务遵循 OpenAI API 格式,可使用 vLLM/SGlang 部署,易于集成现有系统

18 条智能决策规则

内置场景处理逻辑,让 Agent 更加智能可靠

1

应用检查优先

执行任何操作前,先检查当前 app 是否是目标 app,否则先执行 Launch

2

无关页面处理

进入无关页面先执行 Back,不生效则点击左上角返回键或右上角 X 号

3

加载等待策略

页面未加载时最多连续 Wait 三次,否则执行 Back 重新进入

4

网络问题重试

遇到网络问题提示时,自动点击重新加载按钮

5

智能滑动查找

找不到目标信息时,尝试 Swipe 滑动页面查找

6

条件放宽策略

筛选条件无完全匹配时,可适当放宽要求继续任务

7

小红书图文筛选

做小红书总结类任务时,优先筛选图文笔记类型

8

购物车状态处理

购物车有已选商品时,先全选再取消全选,再操作指定商品

9

外卖购物车清空

做外卖任务时,如店铺购物车已有商品,先清空再购买

10

多商品同店购买

点多个外卖时尽量在同一店铺购买,找不到的商品单独说明

11

智能多次搜索

支持关键词变体搜索,如"咸咖啡"→"海盐咖啡","XX群"→"XX"

12

日期选择方向

选择日期时,如滑动方向与目标日期相反,自动调整滑动方向

13

项目栏遍历

多个项目栏时逐个查找,避免在同一项目栏重复查找陷入死循环

14

操作生效检测

执行下一步前检查上一步是否生效,不生效则等待/调整位置/跳过

15

滑动失败处理

滑动不生效时调整起点、增大距离,可能已到顶/底则反向滑动

16

游戏自动战斗

游戏战斗页面自动开启自动战斗,多轮状态相似时检查是否已开启

17

搜索页面回退

无合适搜索结果时返回上一级重新搜索,最多尝试 3 次

18

任务完成检查

结束前仔细检查任务是否完整准确完成,有错选/漏选则纠正

安装指南

按步骤配置环境,快速开始使用

1. 安装 ADB 工具

bash
# macOS 使用 Homebrew
brew install android-platform-tools

# Linux (Ubuntu/Debian)
sudo apt install android-tools-adb

# 或手动下载官方 Platform Tools
# https://developer.android.com/tools/releases/platform-tools
export PATH=${PATH}:~/Downloads/platform-tools

2. 配置 Android 设备

配置步骤
# 1. 启用开发者模式
设置 → 关于手机 → 版本号 → 连续点击 10 次

# 2. 启用 USB 调试
设置 → 开发者选项 → USB 调试 → 启用

# 3. 安装 ADB Keyboard (必须)
# 下载地址: github.com/senzhk/ADBKeyBoard
adb install ADBKeyboard.apk
# 然后在 设置 → 输入法 中启用 ADB Keyboard

1. 克隆项目

bash
git clone https://github.com/zai-org/Open-AutoGLM.git
cd Open-AutoGLM

2. 安装 Python 依赖

bash
# 推荐 Python 3.10+
pip install -r requirements.txt
pip install -e .

# 开发者额外安装
pip install -e ".[dev]"

3. 验证 ADB 连接

bash
# 查看已连接设备
adb devices

# 预期输出:
# List of devices attached
# XXXXXXXX    device

1. 下载模型

模型地址
# 中文优化模型
🤗 huggingface.co/zai-org/AutoGLM-Phone-9B
🤖 modelscope.cn/models/ZhipuAI/AutoGLM-Phone-9B

# 多语言模型 (支持英文)
🤗 huggingface.co/zai-org/AutoGLM-Phone-9B-Multilingual
🤖 modelscope.cn/models/ZhipuAI/AutoGLM-Phone-9B-Multilingual

2. 启动 vLLM 服务

bash
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

命令行参数

bash
# 交互模式
python main.py --base-url http://localhost:8000/v1 --model "autoglm-phone-9b"

# 直接执行任务
python main.py --base-url http://localhost:8000/v1 "打开美团搜索附近的火锅店"

# 英文模式
python main.py --lang en --base-url http://localhost:8000/v1 "Open Chrome browser"

# 指定设备
python main.py --device-id emulator-5554 "打开微信"

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

# 静默模式 (不显示思考过程)
python main.py --quiet "打开支付宝"

环境变量配置

bash
export PHONE_AGENT_BASE_URL="http://localhost:8000/v1"
export PHONE_AGENT_MODEL="autoglm-phone-9b"
export PHONE_AGENT_MAX_STEPS="100"
export PHONE_AGENT_LANG="cn"  # 或 "en"

WiFi 远程连接

bash
# 1. 先通过 USB 启用 TCP/IP 模式
python main.py --enable-tcpip 5555

# 2. 断开 USB,通过 WiFi 连接
python main.py --connect 192.168.1.100:5555

# 3. 执行任务
python main.py --device-id 192.168.1.100:5555 "打开抖音刷视频"

# 断开连接
python main.py --disconnect 192.168.1.100:5555
# 或断开所有
python main.py --disconnect all

# 查看已连接设备
python main.py --list-devices

Python API 示例

灵活的编程接口,满足各种集成需求

基础用法

最简单的任务执行方式

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",
    temperature=0.1,
)

# 创建 Agent 并执行任务
agent = PhoneAgent(model_config=model_config)
result = agent.run("打开淘宝搜索无线耳机")
print(result)

自定义回调

处理敏感操作和人工接管

def my_confirmation(message: str) -> bool:
    """敏感操作确认"""
    response = input(f"确认: {message}? (y/n): ")
    return response.lower() == "y"

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

agent = PhoneAgent(
    confirmation_callback=my_confirmation,
    takeover_callback=my_takeover,
)
result = agent.run("打开支付宝转账")

单步调试模式

逐步执行,便于调试分析

from phone_agent.agent import AgentConfig

agent_config = AgentConfig(
    max_steps=50,
    verbose=True,
    lang="cn",
)
agent = PhoneAgent(agent_config=agent_config)

# 第一步初始化任务
result = agent.step("打开美团搜索火锅")
print(f"思考: {result.thinking}")
print(f"动作: {result.action}")

# 继续执行后续步骤
while not result.finished:
    result = agent.step()
    print(f"步骤 {agent.step_count}")

批量任务执行

连续执行多个任务

agent = PhoneAgent()

tasks = [
    "打开高德地图查看实时路况",
    "打开大众点评搜索咖啡店",
    "打开bilibili搜索Python教程",
]

for task in tasks:
    print(f"执行: {task}")
    result = agent.run(task)
    print(f"结果: {result}\n")

    # 重置 Agent 状态
    agent.reset()

支持 80+ 应用

覆盖社交、购物、出行、娱乐等主流场景

💬

社交通讯

微信、QQ、微博、Telegram、WhatsApp
5+ 应用
🛒

电商购物

淘宝、京东、拼多多、Temu
4+ 应用
🍜

美食外卖

美团、饿了么、大众点评、肯德基、麦当劳
5+ 应用
✈️

出行旅游

携程、12306、滴滴、去哪儿、高德地图、百度地图
6+ 应用
🎬

视频娱乐

bilibili、抖音、快手、腾讯视频、爱奇艺、TikTok
8+ 应用
🎵

音乐音频

网易云音乐、QQ音乐、喜马拉雅、汽水音乐
4+ 应用
📖

内容社区

小红书、知乎、豆瓣、Reddit、Quora
5+ 应用
🔧

工具效率

飞书、Gmail、Chrome、Google系列、系统设置
20+ 应用

可用模型

选择适合你场景的模型版本

🇨🇳

AutoGLM-Phone-9B

中文优化版

9B
参数量
25K
上下文
中文
优化语言

针对中文手机应用优化的视觉语言模型,在微信、淘宝、美团等国内主流 APP 的界面识别和任务规划方面表现优秀。

🌐

AutoGLM-Phone-9B-Multilingual

多语言版

9B
参数量
25K
上下文
多语言
支持范围

支持英语等多语言场景,适用于 Chrome、Gmail、Google 系列等英文应用,以及跨语言混合界面的操作。

系统要求

开始使用前需要准备什么

🐍

Python 环境

Python 3.10 及以上版本,推荐使用虚拟环境

必需
📱

Android 设备

Android 7.0+ 系统,开启开发者模式和 USB 调试

必需
⌨️

ADB Keyboard

安装并启用 ADB Keyboard 应用,用于文本输入

必需
🖥️

GPU 服务器

运行 9B 模型需要约 20GB 显存 (vLLM 部署)

推荐
🔌

USB 数据线

支持数据传输的 USB 线,或使用 WiFi 远程调试

可选
🔓

ROOT 权限

完全不需要!所有功能通过标准 ADB 实现

无需

常见问题

快速解决使用中遇到的问题

需要 ROOT 权限吗?
完全不需要!Open-AutoGLM 通过标准 ADB 协议控制设备,所有操作(点击、滑动、输入、启动应用)都是 ADB 原生支持的功能。
设备未找到怎么办?
运行 `adb kill-server && adb start-server` 重启 ADB 服务,检查 USB 调试是否启用,确认数据线支持数据传输(非仅充电线)。
文本输入不工作?
确保已安装 ADB Keyboard 并在系统设置中启用。Agent 会在需要输入时自动切换到 ADB Keyboard,输入完成后恢复原输入法。
截图显示黑屏?
某些应用(支付、银行、密码界面)会禁止截图,这是安全机制。Agent 会自动检测并请求人工接管。
Windows 编码报错?
设置环境变量 `PYTHONIOENCODING=utf-8`,或在运行命令前添加:`set PYTHONIOENCODING=utf-8`。
如何添加新应用支持?
编辑 `phone_agent/config/apps.py`,添加应用名到包名的映射,如 `"新应用": "com.example.app"`。