登录
Open-AutoGLM
Open-AutoGLM是由智谱AI在2024年10月推出的开源手机操作智能体框架
0
0/小时
v1.0

Open-AutoGLM AI助手部署教程

相关详细内容可以参考Open-AutoGLM 远程使用完整指南

Open-AutoGLM是由智谱AI在2024年10月推出的开源手机操作智能体框架。该项目基于AutoGLM模型构建,代表了在移动设备自动化领域的重要突破。与传统的移动自动化框架不同,Open-AutoGLM能够通过视觉理解和自然语言指令来完成复杂的手机操作任务,使用户仅需描述高层意图即可实现端到端的自动化流程。官方项目地址为GitHub仓库

该框架的核心创新在于整合了多模态视觉理解、智能规划和设备控制能力。用户可以通过自然语言描述需求,例如"打开电商应用并搜索特定商品",系统会自动解析用户意图、分析当前屏幕内容、规划执行步骤,并通过ADB(Android Debug Bridge)实现对物理设备的精确控制。这种端到端的自动化能力在移动应用测试、流程自动化和辅助功能等领域具有重大应用价值。

Open-AutoGLM目前支持超过50款主流应用,涵盖社交通讯、电商购物、生产力工具、媒体娱乐和旅游导航等多个领域。这些应用包括WhatsApp、Telegram、Amazon、eBay、Gmail、Google Calendar、Google Drive、Chrome、Google Maps和Booking.com等国际应用,以及微信、QQ、淘宝、美团等中文应用。这广泛的应用支持使得框架能够适应不同用户的实际需求。

1.1 USB连接的本地使用

在完成了环境配置和模型服务准备后,用户可以开始使用Open-AutoGLM框架。最直接的使用方式是保持USB连接,在本地计算机上执行任务。

最简单的用法是单次任务执行模式。用户通过命令行指定要执行的任务,框架执行完成后自动退出:

python main.py \
  --base-url http://localhost:8000/v1 \
  --model autoglm-phone-9b-multilingual \
  "打开Chrome浏览器并搜索Python教程"

在这里插入图片描述

若使用第三方服务,则修改--base-url--model参数,并添加--apikey参数。

对于需要执行多个连续任务的场景,可以使用交互模式。启动时不指定任务,框架会进入交互式命令提示符,等待用户输入任务描述:

python main.py \
  --base-url http://localhost:8000/v1 \
  --model autoglm-phone-9b-multilingual

进入后可以逐个输入任务:

> 打开Gmail应用
> 撰写邮件给support@example.com
> 输入邮件主题和内容
> 发送邮件

交互模式下,每个任务执行完毕后框架会返回提示符,允许用户输入下一个任务。这对于需要观察和验证每一步执行结果的场景特别有用。

1.2 WiFi远程调试配置

ADB提供了两种WiFi调试方式。较早的Android版本需要使用TCP/IP模式进行设置,这需要经过USB中介步骤。较新的Android设备(11及以后)支持原生的无线调试功能,使用更为便捷。

对于支持原生无线调试的设备(Android 11+)

首先,确保计算机和Android设备连接到同一个无线网络。在设备上进入开发者选项,找到"无线调试"或"Wireless Debugging"选项,启用它。启用后,设备屏幕会显示一个IP地址和端口号的配对码。 在这里插入图片描述

在计算机端,打开命令行并执行:

adb connect 192.168.1.100:5555

其中IP地址和端口需要替换为设备屏幕上显示的实际值。连接成功后,可以验证:

adb devices

输出应该包含该设备的连接信息,形式为192.168.1.100:5555 device

对于较早的Android版本或特定设备

这种方案需要先通过USB建立初始连接,然后通过ADB命令启用TCP/IP监听模式。首先用USB线连接设备,确认adb devices能识别设备,然后执行:

adb tcpip 5555

这条命令会使设备启动TCP/IP监听模式,监听端口5555。此后可以断开USB线,计算机可以通过网络连接到设备。获取设备的IP地址可以通过在设备上查看WiFi设置获得,或在系统设置的关于手机页面找到IP地址字段。然后执行:

adb connect 192.168.1.100:5555

成功连接后,可以像使用本地USB连接一样使用Open-AutoGLM框架:

python main.py \
  --device-id 192.168.1.100:5555 \
  --base-url http://localhost:8000/v1 \
  --model autoglm-phone-9b-multilingual \
  "打开设备应用"

参数--device-id用于指定特定的设备,这在需要同时连接多个设备时特别有用。

1.3 多设备并发控制

Open-AutoGLM支持同时连接和控制多个Android设备,这对于批量自动化测试或多设备场景特别有价值。查看当前连接的所有设备的命令为:

adb devices -l

该命令会输出更详细的设备信息,包括设备序列号、连接模式和硬件型号。

通过Python API实现多设备的并发控制,可以充分利用计算机的多核处理能力。以下是一个实际的代码示例:

from concurrent.futures import ThreadPoolExecutor
from phone_agent import PhoneAgent
from phone_agent.model import ModelConfig
from phone_agent.adb import list_devices

# 获取所有已连接设备的列表
devices = list_devices()

# 创建模型配置
model_config = ModelConfig(
    base_url="http://localhost:8000/v1",
    model_name="autoglm-phone-9b-multilingual",
)

def execute_task_on_device(device_id, task_description):
    """在指定设备上执行任务的函数"""
    try:
        agent = PhoneAgent(
            model_config=model_config,
            device_id=device_id
        )
        result = agent.run(task_description)
        return {
            'device_id': device_id,
            'status': 'success',
            'result': result
        }
    except Exception as e:
        return {
            'device_id': device_id,
            'status': 'failed',
            'error': str(e)
        }

# 定义要在各设备上执行的任务列表
tasks = {
    devices[0].device_id: "打开设置应用",
    devices[1].device_id: "打开Chrome浏览器",
    devices[2].device_id: "打开Gmail应用",
}

# 使用线程池实现并发执行
with ThreadPoolExecutor(max_workers=min(3, len(devices))) as executor:
    # 提交所有任务
    futures = {
        device_id: executor.submit(execute_task_on_device, device_id, task)
        for device_id, task in tasks.items()
    }

    # 收集执行结果
    results = {}
    for device_id, future in futures.items():
        try:
            results[device_id] = future.result(timeout=300)  # 5分钟超时
        except Exception as e:
            results[device_id] = {
                'device_id': device_id,
                'status': 'timeout',
                'error': str(e)
            }

# 输出执行结果
for device_id, result in results.items():
    if result['status'] == 'success':
        print(f"设备 {device_id}: 任务成功完成")
    else:
        print(f"设备 {device_id}: 任务失败 - {result.get('error', '未知原因')}")

在这个示例中,ThreadPoolExecutormax_workers参数限制了同时执行的线程数,这很重要,因为模型服务的并发处理能力有限。通常max_workers设置为3-5是合理的平衡。

1.4 详细模式与调试

对于复杂的任务或需要理解框架决策过程的情况,用户可以启用详细日志输出。在命令行中添加--verbose参数:

python main.py \
  --verbose \
  --base-url http://localhost:8000/v1 \
  --model autoglm-phone-9b-multilingual \
  "任务描述"

详细模式会输出每一步的决策过程和执行动作,例如:

==================================================
思考过程:
--------------------------------------------------
当前屏幕在应用首页,需要打开搜索功能
--------------------------------------------------
执行的动作:
{
  "_metadata": "do",
  "action": "Tap",
  "element": [500, 100]
}
==================================================

这对于理解框架的行为、调试失败案例和优化提示词都非常有帮助。

镜像信息
@敢敢のwings
敢敢のwings认证作者
支持自启动
已使用1
运行时长
1 H
镜像大小
60GB
最后更新时间
2025-12-13
支持卡型
A800
+1
框架版本
PyTorch-Ubuntu22.04+CUDA12.4
CUDA版本
12.4
应用
JupyterLab: 8888
自定义开放端口
8000
+1
版本
v1.0
2025-12-13
PyTorch:Ubuntu22.04+CUDA12.4 | CUDA:12.4 | 大小:60.00GB