Open-AutoGLM Agent 执行流程

概述

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

核心组件

组件说明
PhoneAgent主 Agent 类,编排手机自动化流程
ModelClientAI 模型客户端,负责与视觉语言模型通信
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)

PhoneAgentDeviceFactoryModelClientActionHandlerstep_count++get_screenshot()Screenshotget_current_app()Current App Info构建消息上下文request(context)Response (thinking + action)parse_action(response)execute(action)ActionResult更新上下文返回 StepResultPhoneAgentDeviceFactoryModelClientActionHandler

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

字段类型说明
successbool步骤是否成功
finishedbool任务是否完成
actiondict执行的动作
thinkingstrAI 的思考过程
messagestr结果消息

ActionResult

字段类型说明
successbool动作是否成功
should_finishbool是否应结束任务
messagestr结果消息

实际运行

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

每家店都显示了评分、距离、人均消费和特色菜品信息,还有各种优惠套餐。您可以根据需要选择合适的火锅店进行查看或下单。
C语言-光伏MPPT算法:电导增量法扰动观察法+自动全局搜索Plecs最大功率跟踪算法仿真内容概要:本文档主要介绍了一种基于C语言实现的光伏最大功率点跟踪(MPPT)算法,结合电导增量法与扰动观察法,并引入自动全局搜索策略,利用Plecs仿真工具对算法进行建模与仿真验证。文档重点阐述了两种经典MPPT算法的原理、优缺点及其在不同光照和温度条件下的动态响应特性,同时提出一种改进的复合控制策略以提升系统在复杂环境下的跟踪精度与稳定性。通过仿真结果对比分析,验证了所提方法在快速性和准确性方面的优势,适用于光伏发电系统的高效能量转换控制。; 适合人群:具备一定C语言编程基础和电力电子知识背景,从事光伏系统开发、嵌入式控制或新能源技术研发的工程师及高校研究人员;工作年限1-3年的初级至中级研发人员尤为适合。; 使用场景及目标:①掌握电导增量法与扰动观察法在实际光伏系统中的实现机制与切换逻辑;②学习如何在Plecs中搭建MPPT控制系统仿真模型;③实现自动全局搜索以避免传统算法陷入局部峰值问题,提升复杂工况下的最大功率追踪效率;④为光伏逆变器或太阳能充电控制器的算法开发提供技术参考与实现范例。; 阅读建议:建议读者结合文中提供的C语言算法逻辑与Plecs仿真模型同步学习,重点关注算法判断条件、步长调节策略及仿真参数设置。在理解基本原理的基础上,可通过修改光照强度、温度变化曲线等外部扰动因素,进一步测试算法鲁棒性,并尝试将其移植到实际嵌入式平台进行实验验证。
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)​ 内容概要:本文围绕动态环境下多无人机系统的协同路径规划与防撞问题展开研究,提出基于Matlab的仿真代码实现方案。研究重点在于在复杂、动态环境中实现多无人机之间的高效协同飞行与避障,涵盖路径规划算法的设计与优化,确保无人机集群在执行任务过程中能够实时规避静态障碍物与动态冲突,保障飞行安全性与任务效率。文中结合智能优化算法,构建合理的成本目标函数(如路径长度、飞行高度、威胁规避、转弯角度等),并通过Matlab平台进行算法验证与仿真分析,展示多机协同的可行性与有效性。; 适合人群:具备一定Matlab编程基础,从事无人机控制、路径规划、智能优化算法研究的科研人员及研究生。; 使用场景及目标:①应用于灾害救援、军事侦察、区域巡检等多无人机协同任务场景;②目标是掌握多无人机系统在动态环境下的路径规划与防撞机制,提升协同作业能力与自主决策水平;③通过Matlab仿真深入理解协同算法的实现逻辑与参数调优方法。; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注目标函数设计、避障策略实现与多机协同逻辑,配合仿真结果分析算法性能,进一步可尝试引入新型智能算法进行优化改进。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@井九

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值