Open-AutoGLM Agent 执行流程
Open-AutoGLM是一个基于视觉语言模型的Android手机自动化框架,通过AI分析屏幕内容并执行操作。核心组件包括PhoneAgent(主控流程)、ModelClient(AI模型交互)、ActionHandler(操作执行)和DeviceFactory(设备管理)。系统采用"思考-行动"循环机制:获取屏幕状态→AI分析→生成指令→执行动作→检查结果,支持点击、滑动、输
·
概述
Open-AutoGLM 是一个基于视觉语言模型的 Android 手机自动化 Agent,通过理解屏幕内容来决定执行的操作,以完成用户任务。
核心组件
| 组件 | 说明 |
|---|---|
PhoneAgent |
主 Agent 类,编排手机自动化流程 |
ModelClient |
AI 模型客户端,负责与视觉语言模型通信 |
ActionHandler |
动作处理器,执行具体的手机操作 |
DeviceFactory |
设备工厂,管理设备连接和截图 |
执行流程图
详细步骤说明
1. 初始化阶段
配置参数:
max_steps: 每个任务最大步数(默认 100)device_id: ADB 设备 ID(None 为自动检测)lang: 语言选择(cn/en)verbose: 是否打印调试信息
2. 单步执行 (_execute_step)
3. 支持的动作类型
4. 思考-行动循环
输出格式
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
每家店都显示了评分、距离、人均消费和特色菜品信息,还有各种优惠套餐。您可以根据需要选择合适的火锅店进行查看或下单。
更多推荐



所有评论(0)