Open-AutoGLM README

The project's README from github.com/zai-org/Open-AutoGLM. As one markdown file: README.md.

Open-AutoGLM

Readme in English

👋 加入我们的 微信 社区

👋 关注智谱 AI 输入法 X 账号

🎤 进一步在我们的产品 智谱 AI 输入法 体验“用嘴发指令”

AutoGLM 实战派 开发者激励活动火热进行中,跑通、二创即可瓜分数万元现金奖池!成果提交 👉 入口

懒人版快速安装

你可以使用Claude Code,配置 GLM Coding Plan 后,输入以下提示词,快速部署本项目。

访问文档,为我安装 AutoGLM
https://raw.githubusercontent.com/zai-org/Open-AutoGLM/refs/heads/main/README.md

项目介绍

Phone Agent 是一个基于 AutoGLM 构建的手机端智能助理框架,它能够以多模态方式理解手机屏幕内容,并通过自动化操作帮助用户完成任务。系统通过 ADB(Android Debug Bridge)来控制设备,以视觉语言模型进行屏幕感知,再结合智能规划能力生成并执行操作流程。用户只需用自然语言描述需求,如“打开小红书搜索美食”,Phone Agent 即可自动解析意图、理解当前界面、规划下一步动作并完成整个流程。系统还内置敏感操作确认机制,并支持在登录或验证码场景下进行人工接管。同时,它提供远程 ADB 调试能力,可通过 WiFi 或网络连接设备,实现灵活的远程控制与开发。

⚠️ 本项目仅供研究和学习使用。严禁用于非法获取信息、干扰系统或任何违法活动。请仔细审阅 使用条款。

与其他自动化工具集成

Midscene.js

Midscene.js 是一款由视觉模型驱动的开源 UI 自动化 SDK,支持通过 JavaScript 或 Yaml 格式的流程语法,实现多平台的自动化。

目前 Midscene.js 已完成对 AutoGLM 模型的适配,你可以通过 Midscene.js 接入指南 快速体验 AutoGLM 在 iOS 和 Android 设备上的自动化效果。

模型下载地址

Model Download Links
AutoGLM-Phone-9B 🤗 Hugging Face
🤖 ModelScope
AutoGLM-Phone-9B-Multilingual 🤗 Hugging Face
🤖 ModelScope

其中,AutoGLM-Phone-9B 是针对中文手机应用优化的模型,而 AutoGLM-Phone-9B-Multilingual 支持英语场景,适用于包含英文等其他语言内容的应用。

Android 环境准备

1. Python 环境

建议使用 Python 3.10 及以上版本。

2. 手机调试命令行工具

根据你的设备类型选择相应的工具:

对于 Android 设备 - 使用 ADB

  1. 下载官方 ADB 安装包,并解压到自定义路径
  2. 配置环境变量

对于鸿蒙设备 (HarmonyOS NEXT版本以上) - 使用 HDC

  1. 下载 HDC 工具:
  2. 配置环境变量

3. Android 7.0+ 或 HarmonyOS 设备,并启用 开发者模式 和 USB 调试

  1. 开发者模式启用:通常启用方法是,找到 设置-关于手机-版本号 然后连续快速点击 10 次左右,直到弹出弹窗显示“开发者模式已启用”。不同手机会有些许差别,如果找不到,可以上网搜索一下教程。
  2. USB 调试启用:启用开发者模式之后,会出现 设置-开发者选项-USB 调试,勾选启用
  3. 部分机型在设置开发者选项以后, 可能需要重启设备才能生效. 可以测试一下: 将手机用USB数据线连接到电脑后, adb devices 查看是否有设备信息, 如果没有说明连接失败.

请务必仔细检查相关权限

权限

4. 安装 ADB Keyboard(仅 Android 设备需要,用于文本输入)

注意:鸿蒙设备使用原生输入方法,无需安装 ADB Keyboard。

如果你使用的是 Android 设备:

下载 安装包 并在对应的安卓设备中进行安装。 注意,安装完成后还需要到 设置-输入法 或者 设置-键盘列表 中启用 ADB Keyboard 才能生效(或使用命令adb shell ime enable com.android.adbkeyboard/.AdbIMEHow-to-use)

iPhone 环境准备

如果你使用的是 iPhone 设备,请参考专门的 iOS 配置文档:

📱 iOS 环境配置指南

该文档详细介绍了如何配置 WebDriverAgent 和 iPhone 设备,以便在 iOS 上使用 AutoGLM。

部署准备工作

1. 安装依赖

pip install -r requirements.txt 
pip install -e .

2. 配置 ADB 或 HDC

对于 Android 设备

确认 USB数据线具有数据传输功能, 而不是仅有充电功能

确保已安装 ADB 并使用 USB数据线 连接设备:

# 检查已连接的设备
adb devices

# 输出结果应显示你的设备,如:
# List of devices attached
# emulator-5554   device

对于鸿蒙设备

确认 USB数据线具有数据传输功能, 而不是仅有充电功能

确保已安装 HDC 并使用 USB数据线 连接设备:

# 检查已连接的设备
hdc list targets

# 输出结果应显示你的设备,如:
# 7001005458323933328a01bce01c2500

3. 启动模型服务

你可以选择自行部署模型服务,或使用第三方模型服务商。

选项 A: 使用第三方模型服务

如果你不想自行部署模型,可以使用以下已部署我们模型的第三方服务:

1. 智谱 BigModel

2. ModelScope(魔搭社区)

使用第三方服务的示例:

# 使用智谱 BigModel
python main.py --base-url https://open.bigmodel.cn/api/paas/v4 --model "autoglm-phone" --apikey "your-bigmodel-api-key" "打开美团搜索附近的火锅店"

# 使用 ModelScope
python main.py --base-url https://api-inference.modelscope.cn/v1 --model "ZhipuAI/AutoGLM-Phone-9B" --apikey "your-modelscope-api-key" "打开美团搜索附近的火锅店"

选项 B: 自行部署模型

如果你希望在本地或自己的服务器上部署模型:

  1. 按照 requirements.txt 中 For Model Deployment 章节自行安装推理引擎框架。

对于SGLang, 除了使用pip安装,你也可以使用官方docker:

docker pull lmsysorg/sglang:v0.5.6.post1

进入容器,执行

pip install nvidia-cudnn-cu12==9.16.0.29

对于 vLLM,除了使用pip 安装,你也可以使用官方docker:

docker pull vllm/vllm-openai:v0.12.0

进入容器,执行

pip install -U transformers --pre

注意: 上述步骤出现的关于 transformers 的依赖冲突可以忽略。

  1. 在对应容器或者实体机中(非容器安装)下载模型,通过 SGlang / vLLM 启动,得到 OpenAI 格式服务。这里提供一个 vLLM部署方案,请严格遵循我们提供的启动参数:
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
python3 -m sglang.launch_server --model-path  zai-org/AutoGLM-Phone-9B \
        --served-model-name autoglm-phone-9b  \
        --context-length 25480  \
        --mm-enable-dp-encoder   \
        --mm-process-config '{"image":{"max_pixels":5000000}}'  \
        --port 8000

4. 检查模型部署

模型服务启动后,可以使用检查脚本验证部署是否成功:

python scripts/check_deployment_cn.py --base-url http://你的IP:你的端口/v1 --model 模型名称

脚本将发送测试请求并展示模型的推理结果,你可以根据输出判断模型部署是否正常工作。

基于给定的任务, 预期输出如下。如果思维链长度很短, 或者出现了乱码, 很可能是模型部署失败, 请仔细检查文档要求的配置和依赖。

<think>用户想要比较这个洗发水在京东和淘宝上的价格,然后选择最便宜的平台下单。当前在小红书app上,显示的是一个关于LUMMI MOOD洗发水的帖子。

我需要:
1. 先启动京东app,搜索这个洗发水
2. 查看京东的价格
3. 再启动淘宝app,搜索这个洗发水
4. 查看淘宝的价格
5. 比较价格后,选择最便宜的京东或淘宝下单

首先,我需要从当前的小红书界面退出,然后启动京东app。</think>
<answer>do(action="Launch", app="京东")

参数说明:

使用 AutoGLM

命令行

根据你部署的模型, 设置 --base-url 和 --model 参数, 设置 --device-type 指定是安卓设备或鸿蒙设备 (默认值 adb 表示安卓设备, hdc 表示鸿蒙设备). 例如:

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

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

# 鸿蒙设备 - 交互模式
python main.py --device-type hdc --base-url http://localhost:8000/v1 --model "autoglm-phone-9b"

# 鸿蒙设备 - 指定任务
python main.py --device-type hdc --base-url http://localhost:8000/v1 "打开美团搜索附近的火锅店"

# 使用 API Key 进行认证
python main.py --apikey sk-xxxxx

# 使用英文 system prompt
python main.py --lang en --base-url http://localhost:8000/v1 "Open Chrome browser"

# 列出支持的应用(Android)
python main.py --list-apps

# 列出支持的应用(鸿蒙)
python main.py --device-type hdc --list-apps

Python API

from phone_agent import PhoneAgent
from phone_agent.model import ModelConfig

# Configure model
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)

远程调试

Phone Agent 支持通过 WiFi/网络进行远程 ADB/HDC 调试,无需 USB 连接即可控制设备。

配置远程调试

在手机端开启无线调试

Android 设备

确保手机和电脑在同一个WiFi中,如图所示

开启无线调试

鸿蒙设备

确保手机和电脑在同一个WiFi中:

  1. 进入 设置 > 系统和更新 > 开发者选项
  2. 开启 USB 调试 和 无线调试
  3. 记录显示的 IP 地址和端口号

在电脑端使用标准 ADB/HDC 命令

# Android 设备 - 通过 WiFi 连接, 改成手机显示的 IP 地址和端口
adb connect 192.168.1.100:5555

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

# 鸿蒙设备 - 通过 WiFi 连接
hdc tconn 192.168.1.100:5555

# 验证连接
hdc list targets
# 应显示:192.168.1.100:5555

设备管理命令

Android 设备(ADB)

# 列出所有已连接设备
adb devices

# 连接远程设备
adb connect 192.168.1.100:5555

# 断开指定设备
adb disconnect 192.168.1.100:5555

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

鸿蒙设备(HDC)

# 列出所有已连接设备
hdc list targets

# 连接远程设备
hdc tconn 192.168.1.100:5555

# 断开指定设备
hdc tdisconn 192.168.1.100:5555

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

Python API 远程连接

Android 设备(ADB)

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")

鸿蒙设备(HDC)

from phone_agent.hdc import HDCConnection, list_devices

# 创建连接管理器
conn = HDCConnection()

# 连接远程设备
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}")

# 断开连接
conn.disconnect("192.168.1.100:5555")

远程连接问题排查

连接被拒绝:

连接断开:

多设备:

配置

自定义SYSTEM PROMPT

系统提供中英文两套 prompt,通过 --lang 参数切换:

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

环境变量

变量 描述 默认值
PHONE_AGENT_BASE_URL 模型 API 地址 http://localhost:8000/v1
PHONE_AGENT_MODEL 模型名称 autoglm-phone-9b
PHONE_AGENT_API_KEY 模型认证 API Key EMPTY
PHONE_AGENT_MAX_STEPS 每个任务最大步数 100
PHONE_AGENT_DEVICE_ID ADB/HDC 设备 ID (自动检测)
PHONE_AGENT_DEVICE_TYPE 设备类型 (adb 或 hdc) adb
PHONE_AGENT_LANG 语言 (cn 或 en) cn

模型配置

from phone_agent.model import ModelConfig

config = ModelConfig(
    base_url="http://localhost:8000/v1",
    api_key="EMPTY",  # API 密钥(如需要)
    model_name="autoglm-phone-9b",  # 模型名称
    max_tokens=3000,  # 最大输出 token 数
    temperature=0.1,  # 采样温度
    frequency_penalty=0.2,  # 频率惩罚
)

Agent 配置

from phone_agent.agent import AgentConfig

config = AgentConfig(
    max_steps=100,  # 每个任务最大步数
    device_id=None,  # ADB 设备 ID(None 为自动检测)
    lang="cn",  # 语言选择:cn(中文)或 en(英文)
    verbose=True,  # 打印调试信息(包括思考过程和执行动作)
)

Verbose 模式输出

当 verbose=True 时,Agent 会在每一步输出详细信息:

==================================================
💭 思考过程:
--------------------------------------------------
当前在系统桌面,需要先启动小红书应用
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Launch",
  "app": "小红书"
}
==================================================

... (执行动作后继续下一步)

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

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

这样可以清楚地看到 AI 的推理过程和每一步的具体操作。

支持的应用

Android 应用

Phone Agent 支持 50+ 款主流中文应用:

分类 应用
社交通讯 微信、QQ、微博
电商购物 淘宝、京东、拼多多
美食外卖 美团、饿了么、肯德基
出行旅游 携程、12306、滴滴出行
视频娱乐 bilibili、抖音、爱奇艺
音乐音频 网易云音乐、QQ音乐、喜马拉雅
生活服务 大众点评、高德地图、百度地图
内容社区 小红书、�

Open-AutoGLM (zai-org/Open-AutoGLM)

Searching Database…

What is this?Open-AutoGLM (Phone Agent) is an open phone-use agent framework built on the AutoGLM model that understands your phone screen visually and automates tasks via natural-language commands like 'open Xiaohongshu and search for food'.
Is this just the agent code, or does it include the AI model too?It is both: a Python agent framework that drives the phone via ADB/HDC, plus dedicated vision-language models (AutoGLM-Phone-9B and a multilingual variant) hosted on Hugging Face and ModelScope that you either self-host or call via a third-party API.
How do I get it running on my phone?Install Python 3.10+, install ADB (for Android) or HDC (for HarmonyOS), enable Developer Mode and USB debugging on the device, connect via USB, start or connect to a model service, then run the agent from the command line or Python API with --base-url and --model set.
Do I need to run my own model server?Not necessarily — you can use a third-party hosted model from Zhipu BigModel or ModelScope with an API key, or self-deploy the model locally/on a server using SGLang or vLLM via pip or official Docker images.
Does it work on iPhone too, or only Android?Android (7.0+) and HarmonyOS NEXT devices are the primary targets using ADB/HDC; iPhone is supported through a separate setup using WebDriverAgent, documented in a dedicated iOS configuration guide.
Which apps does it actually work with out of the box?It ships with support for 50+ mainstream Chinese Android apps covering social, e-commerce, food delivery, travel, video, music, and local services, such as WeChat, Taobao, Meituan, Didi, and Bilibili.
Can I control the phone remotely without a USB cable?Yes — Phone Agent supports remote ADB/HDC debugging over WiFi, letting you connect to and control a device over the network once wireless debugging is enabled on it.
What does AutoGLM actually see when it acts?It perceives the current screen using a vision-language model, then plans and executes the next action step by step based on that visual understanding and your natural-language instruction.
Can other automation tools use the AutoGLM model?Yes, Midscene.js, an open-source vision-model-driven UI automation SDK, already supports AutoGLM and can use it to automate both iOS and Android devices.
How do I type text into apps during automation?On Android devices you need to install and enable ADB Keyboard for text input; HarmonyOS devices use their native input method so this extra step isn't needed.
Creator
zai-org
Size
5.3 MB
Stars
26.4K
Updated
CommitMar 06
Age
10mo
Commits · 90 Days