1. 项目概述
Open-AutoGLM是一个基于AutoGLM框架开发的手机端智能助理系统,它能够通过多模态方式理解手机屏幕内容,并自动执行用户指定的任务。这个框架的核心价值在于将自然语言理解、计算机视觉和自动化操作技术完美结合,让用户只需用日常语言描述需求,系统就能自动完成复杂的手机操作流程。
在实际使用场景中,比如当用户说"打开小红书搜索美食攻略",系统会:
- 自动启动小红书应用
- 定位并点击搜索框
- 输入"美食攻略"关键词
- 执行搜索操作
整个过程无需用户手动操作,系统会像一位数字助手一样完成所有步骤。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构与技术原理
2.1 系统工作流程
Open-AutoGLM的工作流程可以分为四个关键阶段:
-
意图理解阶段:系统首先解析用户的自然语言指令,理解用户想要完成的具体任务。例如,"比较京东和淘宝上iPhone 15的价格"会被解析为需要分别在两个电商平台搜索同一商品并比较价格。
-
屏幕感知阶段:通过ADB(Android Debug Bridge)或HDC(HarmonyOS Device Connector)获取当前手机屏幕的截图,然后使用视觉语言模型分析屏幕内容,识别界面元素及其功能。
-
任务规划阶段:基于对当前屏幕状态的理解,系统会生成一系列操作步骤。比如先返回主屏幕,然后打开京东应用,接着在搜索栏输入关键词等。
-
执行反馈阶段:系统通过ADB/HDC发送操作指令,执行规划好的动作,然后再次获取屏幕状态,确认操作效果,形成闭环控制。
2.2 关键技术组件
2.2.1 AutoGLM视觉语言模型
AutoGLM是系统的"大脑",负责多模态理解和任务规划。它基于GLM架构,专门针对手机界面理解和操作优化。模型特点包括:
- 支持同时处理图像和文本输入
- 针对中文手机应用场景优化
- 能够生成结构化的操作指令
模型有两种版本可供选择:
- AutoGLM-Phone-9B:专为中文应用优化
- AutoGLM-Phone-9B-Multilingual:支持多语言场景
2.2.2 设备控制层
系统通过以下工具与手机设备交互:
- ADB:用于Android设备的调试桥接工具
- HDC:用于HarmonyOS设备的连接工具
- ADB Keyboard:特殊的输入法,用于在Android设备上实现自动化文本输入
3. 环境准备与安装
3.1 硬件要求
- 一台Android 7.0+或HarmonyOS设备
- 支持数据传输的USB线缆(非仅充电线)
- 开发用计算机(Windows/MacOS/Linux)
3.2 软件准备
3.2.1 手机端设置
-
启用开发者模式:
- 进入设置 > 关于手机 > 版本号
- 连续点击版本号7次,直到出现"开发者模式已启用"提示
-
开启USB调试:
- 进入设置 > 开发者选项
- 启用"USB调试"和"USB调试(安全设置)"
-
安装ADB Keyboard(仅Android需要):
bash复制
adb install ADBKeyboard.apk安装后需要在系统设置中启用该输入法。
3.2.2 电脑端环境
-
安装Python 3.10+:
bash复制# MacOS使用Homebrew安装 brew install python@3.10 # Windows可从官网下载安装包 -
安装ADB工具:
bash复制# MacOS brew install android-platform-tools # Windows需手动下载并配置PATH -
验证ADB连接:
bash复制
adb devices应显示已连接的设备ID。
4. 系统部署方案
4.1 模型服务部署选项
用户可以根据自身需求选择以下两种模型服务部署方式:
4.1.1 使用第三方模型服务(推荐)
对于大多数用户,特别是资源有限的开发者,建议使用现成的模型服务:
-
智谱BigModel:
- 基础URL:https://open.bigmodel.cn/api/paas/v4
- 模型名称:autoglm-phone
- 需要申请API Key
-
ModelScope:
- 基础URL:https://api-inference.modelscope.cn/v1
- 模型名称:ZhipuAI/AutoGLM-Phone-9B
- 需要申请API Key
使用示例:
bash复制python main.py --base-url https://open.bigmodel.cn/api/paas/v4 --model "autoglm-phone" --apikey "your-key" "打开美团搜索附近的火锅店"
4.1.2 本地部署模型(高性能需求)
对于需要更高隐私性或定制化的场景,可以在本地部署模型:
-
硬件要求:
- NVIDIA GPU(建议24GB+显存)
- 20GB+可用磁盘空间
-
使用vLLM部署:
bash复制python3 -m vllm.entrypoints.openai.api_server \
--served-model-name autoglm-phone-9b \
--model zai-org/AutoGLM-Phone-9B \
--port 8000
- 使用SGLang部署:
bash复制python3 -m sglang.launch_server \
--model-path zai-org/AutoGLM-Phone-9B \
--served-model-name autoglm-phone-9b \
--port 8000
4.2 项目安装
- 克隆仓库:
bash复制git clone https://github.com/zai-org/Open-AutoGLM.git
cd Open-AutoGLM
- 创建虚拟环境:
bash复制python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
- 安装依赖:
bash复制pip install -r requirements.txt
pip install -e .
5. 使用指南
5.1 基本使用方式
5.1.1 命令行交互模式
启动交互式会话:
bash复制python main.py --base-url http://localhost:8000/v1 --model "autoglm-phone-9b"
系统会提示输入指令,如"打开抖音刷视频"。
5.1.2 直接执行任务
也可以直接指定任务:
bash复制python main.py --base-url http://localhost:8000/v1 "打开淘宝搜索无线耳机"
5.1.3 Python API调用
对于开发者,可以通过Python API集成:
python复制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(result)
5.2 高级功能
5.2.1 远程调试
通过WiFi连接设备,无需USB线:
bash复制# Android设备
adb connect 192.168.1.100:5555
# HarmonyOS设备
hdc tconn 192.168.1.100:5555
5.2.2 多设备管理
当连接多个设备时,可以指定设备ID:
bash复制python main.py --device-id 192.168.1.100:5555 "打开微信"
5.2.3 敏感操作处理
系统遇到支付、登录等敏感操作时,可以配置回调函数:
python复制def my_confirmation(message):
return input(f"确认执行 {message}?(y/n): ").lower() == 'y'
agent = PhoneAgent(confirmation_callback=my_confirmation)
6. 应用场景与案例
6.1 电商比价自动化
场景:比较同一商品在不同平台的价格
bash复制python main.py "在京东和淘宝上搜索iPhone 15,比较价格"
系统会自动:
- 打开京东搜索iPhone 15并记录价格
- 返回打开淘宝搜索同一商品
- 比较两者价格并输出结果
6.2 社交媒体管理
场景:自动发布内容到多个平台
bash复制python main.py "在微博和小红书发布'今天天气真好'"
6.3 生活服务
场景:订餐和导航
bash复制python main.py "在美团订一份披萨,然后用高德地图导航到披萨店"
7. 开发与扩展
7.1 项目结构
核心代码结构:
code复制phone_agent/
├── agent.py # 主Agent类
├── adb/ # ADB相关功能
├── hdc/ # HDC相关功能
├── model/ # 模型客户端
├── config/ # 配置文件
└── actions/ # 操作处理器
7.2 添加新应用支持
要支持新的应用,需要在config/apps.py中添加应用映射:
python复制"抖音": {
"package": "com.ss.android.ugc.aweme",
"activity": ".main.MainActivity",
"search_xpath": "搜索框定位信息"
}
7.3 自定义系统提示
修改prompts_zh.py可以调整模型的决策逻辑:
python复制SYSTEM_PROMPT = """
你是一个手机助手,能够理解屏幕内容并执行操作。
特别注意:
- 遇到支付页面必须请求确认
- 不要操作银行类应用
"""
8. 常见问题排查
8.1 设备连接问题
症状:adb devices无输出
解决步骤:
- 确认USB调试已开启
- 更换数据线尝试
- 重启ADB服务:
bash复制
adb kill-server adb start-server
8.2 输入法问题
症状:无法输入中文或输入乱码
解决方案:
- 确认ADB Keyboard已安装并启用
- 检查系统输入法设置
- 重新安装ADB Keyboard:
bash复制
adb uninstall com.android.adbkeyboard adb install ADBKeyboard.apk
8.3 模型服务问题
症状:请求超时或返回异常
检查步骤:
- 确认模型服务正在运行:
bash复制curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{"model": "autoglm-phone-9b", "messages": [{"role": "user", "content": "test"}]}' - 检查显存是否充足(本地部署时)
- 验证API Key是否正确(使用第三方服务时)
9. 安全与合规使用
Open-AutoGLM设计时内置了多重安全机制:
- 敏感操作确认:涉及支付、登录等操作时会暂停并请求用户确认
- 应用限制:可以配置禁用特定类型的应用
- 权限控制:需要用户显式授权ADB调试权限
重要提示:
- 仅用于合法授权的设备
- 禁止用于自动化测试以外的任何商业用途
- 尊重应用服务方的使用条款
10. 性能优化建议
- 使用有线连接:WiFi调试延迟较高,建议开发时使用USB连接
- 调整截图质量:在config.py中可降低截图分辨率提高速度
- 缓存模型结果:对重复操作可以缓存模型响应
- 批量执行任务:将多个相关任务合并为一个指令减少交互次数
对于高频使用场景,可以考虑:
python复制# 预先加载常用应用的界面特征
agent.preload_app_patterns(["微信", "淘宝", "美团"])
# 启用操作预测缓存
agent.enable_action_cache(True)
11. 项目生态与集成
Open-AutoGLM可以与以下工具链集成:
-
Midscene.js:通过YAML定义自动化流程
yaml复制- step: launch_app app: 微信 - step: send_message contact: 文件传输助手 text: 测试消息 -
CI/CD系统:作为移动应用测试的一部分
-
RPA平台:扩展传统RPA到移动端场景
集成示例:
python复制# 与Selenium Web自动化配合
def cross_platform_flow():
web_result = selenium_search("京东 iPhone 15")
phone_agent.run(f"在淘宝搜索{web_result['price']}以下的手机")
12. 实际应用心得
在实际使用Open-AutoGLM过程中,我总结了以下几点经验:
-
指令表述要具体:相比"订餐","在美团订一份北京朝阳区的外卖,预算50元以内"这样的指令执行成功率更高。
-
分步验证复杂任务:对于多步骤任务,可以先测试每个子步骤,再组合执行。
-
注意应用更新影响:当常用应用更新界面后,可能需要调整元素定位逻辑。
-
合理设置超时:不同应用加载速度差异大,需要根据实际情况调整等待时间。
一个典型的工作流程优化案例:
python复制# 原始方式
agent.run("打开微信,找到张三,发消息说晚上7点吃饭")
# 优化后方式
agent.run("""
1. 打开微信
2. 在通讯录搜索"张三"
3. 进入聊天界面
4. 输入"晚上7点吃饭"
5. 点击发送
""")
通过将复杂指令拆解为明确步骤,可以显著提高执行准确率。
