概述

Open-AutoGLM 是一个基于视觉语言模型的 Android 手机自动化 Agent,通过理解屏幕内容来决定执行的操作,以完成用户任务。

核心组件

组件 说明
PhoneAgent 主 Agent 类,编排手机自动化流程
ModelClient AI 模型客户端,负责与视觉语言模型通信
ActionHandler 动作处理器,执行具体的手机操作
DeviceFactory 设备工厂,管理设备连接和截图

执行流程图

开始
初始化 PhoneAgent
调用 run task
重置上下文和步数
执行第一步 _execute_step
截取屏幕截图
获取当前 App 信息
是否首次执行?
构建系统消息 + 用户任务 + 屏幕信息
构建屏幕信息消息
调用 AI 模型获取响应
模型调用成功?
返回错误结果
解析模型响应获取 Action
ActionHandler 执行动作
将助手响应添加到上下文
任务完成?
返回完成消息
达到最大步数?
返回 Max steps reached
结束

详细步骤说明

1. 初始化阶段

创建 ModelConfig
创建 AgentConfig
初始化 PhoneAgent
创建 ModelClient
创建 ActionHandler
初始化上下文列表

配置参数:

  • max_steps: 每个任务最大步数(默认 100)
  • device_id: ADB 设备 ID(None 为自动检测)
  • lang: 语言选择(cn/en)
  • verbose: 是否打印调试信息

2. 单步执行 (_execute_step)

PhoneAgent DeviceFactory ModelClient ActionHandler step_count++ get_screenshot() Screenshot get_current_app() Current App Info 构建消息上下文 request(context) Response (thinking + action) parse_action(response) execute(action) ActionResult 更新上下文 返回 StepResult PhoneAgent DeviceFactory ModelClient ActionHandler

3. 支持的动作类型

控制指令
高级操作
导航操作
基础操作
结束任务
finish
长按
Long Press
双击
Double Tap
等待加载
Wait
请求人工接管
Take_over
返回上一页
Back
回到主屏幕
Home
启动 App
Launch
点击坐标
Tap
输入文本
Type
滑动屏幕
Swipe

4. 思考-行动循环

未完成
任务完成
达到最大步数
获取屏幕状态
AI分析思考
生成动作指令
执行动作
检查结果

输出格式

AI 模型的响应格式:

<think>{思考过程}</think>
<answer>{执行动作}</answer>

动作示例:

{
  "_metadata": "do",
  "action":  "Tap",
  "element": [499, 182]
}
{
  "_metadata": "finish",
  "message": "任务完成"
}

数据结构

StepResult

字段 类型 说明
success bool 步骤是否成功
finished bool 任务是否完成
action dict 执行的动作
thinking str AI 的思考过程
message str 结果消息

ActionResult

字段 类型 说明
success bool 动作是否成功
should_finish bool 是否应结束任务
message str 结果消息

实际运行

python main.py --base-url https://open.bigmodel.cn/api/paas/v4 --model "autoglm-phone" --apikey "xxx" "打开美团搜索附近的火锅店"   
🔍 Checking system requirements...
--------------------------------------------------
1. Checking ADB installation... ✅ OK (Android Debug Bridge version 1.0.41)
2. Checking connected devices... ✅ OK (1 device(s): 3765291)
3. Checking ADB Keyboard... ✅ OK
--------------------------------------------------
✅ All system checks passed!

🔍 Checking model API...
--------------------------------------------------
1. Checking API connectivity (https://open.bigmodel.cn/api/paas/v4)... ✅ OK
--------------------------------------------------
✅ Model API checks passed!

==================================================
Phone Agent - AI-powered phone automation
==================================================
Model: autoglm-phone
Base URL: https://open.bigmodel.cn/api/paas/v4
Max Steps: 100
Language: cn
Device Type: ADB
Device: 3765291 (auto-detected)
==================================================

Task: 打开美团搜索附近的火锅店


==================================================
💭 思考过程:
--------------------------------------------------
用户想要打开美团并搜索附近的火锅店。当前屏幕显示的是系统设置中的"语言与输入法"页面。

我需要:
1. 先打开美团应用
2. 然后在美团中搜索附近的火锅店

首先,我应该使用Launch功能打开美团应用。


==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 1.720s
思考完成延迟:        2.335s
总推理时间:          2.433s
==================================================
Parsing action: do(action="Launch", app="美团")
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Launch",
  "app": "美团"
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
好的,美团应用已经打开了。我可以看到美团的主页面,顶部有一个搜索框,显示着"明治烤肉·炭火烤肉"的搜索建议。

现在我需要:
1. 点击搜索框
2. 输入"火锅"进行搜索

让我点击顶部的搜索框。搜索框的位置大约在屏幕顶部,坐标大约是(389, 119)左右。

==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 4.036s
思考完成延迟:        4.714s
总推理时间:          4.903s
==================================================
Parsing action: do(action="Tap", element=[389,119])
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Tap",
  "element": [
    389,
    119
  ]
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
好的,搜索框已经被激活了,现在显示了一个搜索页面。我可以看到:
- 顶部有一个搜索输入框,显示"市井厨神·妈妈菜"
- 下方显示了历史搜索记录
- 还有"搜索发现"部分,其中包含一些推荐的搜索词,包括"火锅"
- 底部显示了键盘

我可以看到在"搜索发现"部分已经有"火锅"这个选项了。我可以直接点击它,或者在搜索框中输入"火锅"。

让我先清空搜索框并输入"火锅"。根据指南,Type操作会自动清空现有文本,所以我直接输入"火锅"即可。

==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 1.906s
思考完成延迟:        4.034s
总推理时间:          4.217s
==================================================
Parsing action: do(action="Type", text="火锅")
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Type",
  "text": "火锅"
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
很好!我已经输入了"火锅",现在搜索框中显示"火锅",并且下方出现了一系列与火锅相关的搜索建议:
- 火锅
- 火锅自助
- 半亩山老火锅
- 火锅外卖
- 重庆火锅
- 樱火锅
- 海底捞火锅
- 许府牛火锅双人餐49.9抢
- 巴奴毛肚火锅
- 潮汕牛肉火锅
- 火锅团购套餐

现在我需要点击"搜索"按钮或者点击第一个"火锅"选项来进行搜索。我可以点击右上角的黄色"搜索"按钮,或者点击第一个"火锅"选项。

让我点击右上角的"搜索"按钮。

==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 1.730s
思考完成延迟:        3.998s
总推理时间:          4.209s
==================================================
Parsing action: do(action="Tap", element=[881,75])
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Tap",
  "element": [
    881,
    75
  ]
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
好的,搜索已经开始了。我可以看到:
- 顶部显示"火锅"作为搜索关键词
- 有一个返回按钮
- 右上角有"地图"按钮
- 顶部有几个分类标签:潮汕牛肉、生食套餐、火锅食材、牛肉火锅、自热火锅、小火锅等
- 下方有筛选选项:全部、骑手配送、到店团购、快递
- 还有排序选项:昆泰国际大厦、综合排序、距离最近、筛选
- 底部有一些标签:神券商家、快递、人气热销、美炒火锅季、到店秒提

但是页面内容区域是空白的,可能正在加载中。让我等待一下,让内容加载出来。

==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 1.646s
思考完成延迟:        2.823s
总推理时间:          3.016s
==================================================
Parsing action: do(action="Wait", duration="1 seconds")
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Wait",
  "duration": "1 seconds"
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
太好了!搜索结果已经加载出来了。我可以看到附近火锅店的搜索结果:

1. 海底捞火锅(悠唐购物中心店) - 评分4.4,6539条评价,人均¥120,悠唐生活广场,距离243m
   - 有各种代金券优惠

2. 半亩山老火锅(呼家楼店) - 评分4.5,1.2万条评价,人均¥106,朝外大街,距离1.9km
   - 有各种套餐优惠

3. 南门铜锅涮肉(东四十条店) - 评分4.5,258条评价,人均¥91,东四十条,距离1.7km
   - 有各种套餐优惠

页面顶部还显示了各种火锅分类标签,如潮汕牛肉、生食套餐、火锅食材、牛肉火锅、自热火锅、小火锅等。

任务已经完成!我成功打开了美团并搜索到了附近的火锅店,现在用户可以看到附近的火锅店列表了。

==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 2.553s
思考完成延迟:        6.401s
总推理时间:          7.735s
==================================================
Parsing action: finish(message="任务完成!我已经成功打开美团并搜索到了附近的火锅店。

搜索结果显示了多家附近的火锅店,包括:

1. **海底捞火锅(悠唐购物中心店)** - 距离243m,评分4.4,人均¥120
2. **半亩山老火锅(呼家楼店)** - 距离1.9km,评分4.5,人均¥106
3. **南门铜锅涮肉(东四十条店)** - 距离1.7km,评分4.5,人均¥91

每家店都显示了评分、距离、人均消费和特色菜品信息,还有各种优惠套餐。您可以根据需要选择合适的火锅店进行查看或下单。")
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "finish",
  "message": "任务完成!我已经成功打开美团并搜索到了附近的火锅店。\n\n搜索结果显示了多家附近的火锅店,包括:\n\n1. **海底捞火锅(悠唐购物中心店)** - 距离243m,评分4.4,人均¥120\n2. **半亩山老火锅(呼家楼店)** - 距离1.9km,评分4.5,人均¥106  \n3. **南门铜锅涮肉(东四十条店)** - 距离1.7km,评分4.5,人均¥91\n\n每家店都显示了评分、距离、人均消费和特色菜品信息,还有各种优惠套餐。您可以根据需要选择合适的火锅店进行查看或下单。"
}
==================================================


🎉 ================================================
✅ 任务完成: 任务完成!我已经成功打开美团并搜索到了附近的火锅店。

搜索结果显示了多家附近的火锅店,包括:

1. **海底捞火锅(悠唐购物中心店)** - 距离243m,评分4.4,人均¥120
2. **半亩山老火锅(呼家楼店)** - 距离1.9km,评分4.5,人均¥106
3. **南门铜锅涮肉(东四十条店)** - 距离1.7km,评分4.5,人均¥91

每家店都显示了评分、距离、人均消费和特色菜品信息,还有各种优惠套餐。您可以根据需要选择合适的火锅店进行查看或下单。
==================================================


Result: 任务完成!我已经成功打开美团并搜索到了附近的火锅店。

搜索结果显示了多家附近的火锅店,包括:

1. **海底捞火锅(悠唐购物中心店)** - 距离243m,评分4.4,人均¥120
2. **半亩山老火锅(呼家楼店)** - 距离1.9km,评分4.5,人均¥106
3. **南门铜锅涮肉(东四十条店)** - 距离1.7km,评分4.5,人均¥91

每家店都显示了评分、距离、人均消费和特色菜品信息,还有各种优惠套餐。您可以根据需要选择合适的火锅店进行查看或下单。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐