当前位置: 首页 > news >正文

0x04 auto_reply 函数

作用

auto_reply 函数的作用如下:

  • 信息处理功能
    • 处理由 GUI Agent 发起的 INFO 操作
    • 通过大语言模型自动生成对用户问题的回复
    • 模拟用户角色,根据当前任务和页面内容提供简洁直接的答案
  • 输入处理
    • 接收当前页面截图的 URL
    • 接收任务描述
    • 接收 Agent 的询问内容
    • 接收模型提供商和模型名称
  • 输出生成
    • 生成简洁明确的回复内容
    • 避免多余的解释或礼貌用语

4.2 协作关系

auto_reply 函数与其他组件的关系如下:

  • 与 gui_agent_loop 的关系

    • auto_reply 被 gui_agent_loop 在特定条件下调用
    • 当 reply_mode 设置为 "auto_reply" 时触发
    • 处理 Agent 发出的 INFO 动作
  • 与 execute_task 的关系

    • execute_task 函数通过 reply_mode 参数控制是否使用自动回复功能
    • 传递配置信息给 gui_agent_loop,间接影响 auto_reply 的执行
  • 与 ask_llm_anything 的关系

    • auto_reply 依赖 ask_llm_anything 函数来获取大语言模型的回复
    • 通过 ask_llm_anything 与模型提供商交互
  • 与 MCP 服务器的关系

    • 在 MCP 服务器中,可以通过设置 reply_mode 为 "auto_reply" 来启用此功能
    • 提供了自动处理 Agent 询问的能力,无需人工干预

工作流程

  • 触发条件

    • Agent 执行 INFO 动作
    • reply_mode 设置为 "auto_reply"
  • 处理过程

    • 构建包含任务目标、Agent 问题和当前页面的提示
    • 通过 ask_llm_anything 获取模型回复
    • 清理回复内容(移除思考部分)
  • 输出结果

    • 返回简洁明确的回复内容
    • 用于继续 Agent 的执行流程
  • 作用意义

    • 实现了自动化的 Agent 交互处理
    • 避免了在需要用户澄清时的人工干预
    • 保持了任务执行的连续性
    • 提高了 GUI Agent 的自主执行能力

4.3 代码

auto_reply 代码如下:

def auto_reply(current_image_url, task, info_action, model_provider, model_name): """ Reply with information action. """ messages_to_ask = [ { "role": "user", "content": [ { "type": "text", "text": f"""# 角色 你将扮演一个正在使用GUI Agent完成任务的用户。 # 任务 阅读下方提供的所有背景信息,针对[Agent的澄清问题],生成一个提供关键信息的、简短直接的回答。 # 背景信息 - **任务目标:** {task} - **agent 问的问题:** {json.dumps(info_action, ensure_ascii=False)} # 输出要求 - 你的回答必须极其简短和明确。 - 你的回答应直接命中问题的核心,解决Agent的疑惑。 - 不要进行任何额外的解释、对话或使用礼貌用语。 - 只输出回答本身,不要添加任何引号或其他修饰。 以下是当前页面内容: """, }, { 'type': "image_url", 'image_url': { 'url': current_image_url } }, { "type": "text", "text": '请基于以上信息,简洁直接地回答Agent的问题。' } ] } ] response = ask_llm_anything( model_provider=model_provider, model_name=model_name, messages=messages_to_ask, args={ "max_tokens": 1024, "temperature": 0.5, "top_p": 1.0, "frequency_penalty": 0.0, } ) if "</think>" in response: response = response.split("</think>")[-1].strip() return response

0x05 特殊分析

我们接下来就系统的一些特殊之处进行分析。

5.1 GUI 操作扩展机制

  • 插件化架构

    • 工具扩展:通过添加新工具扩展功能
    • 解析器扩展:支持不同动作解析器
    • 设备扩展:支持不同类型设备
  • 配置化管理

    • 服务配置:mcp_server_config.yaml管理服务参数
    • 模型配置:model_config.yaml管理模型参数
    • 运行配置:灵活的运行时配置

5.1.1 动作定义层扩展
  • action 类型枚举
    • action_tools.py:定义_ACTION_TYPE_ENUM,包含现有动作类型
    • 新增动作:在枚举中添加新动作类型,如SCROLL、DOUBLE_CLICK等
  • 动作验证机制
    • action_assertion:验证动作格式和参数完整性
    • 参数检查:针对不同动作类型验证特定参数
5.1.2 前端执行器扩展
  • 动作转换映射
    • action_type_map:定义前端动作类型映射关系
    • step_api_to_frontend_action:处理 API 动作到前端动作的转换
  • 动作实现
    • CLICK:实现点击操作,处理坐标点转换
    • TYPE:实现文本输入,支持键盘存在性检测
    • SLIDE:实现滑动操作,处理路径坐标
    • 新增动作:需要在act_on_device函数中添加新的动作处理逻辑
5.1.3 移动端辅助功能扩展
  • 设备操作层
    • mobile_action_helper.py:提供底层设备操作接口
    • ADB 命令:通过 ADB 实现设备控制
    • 坐标系统:支持归一化坐标到实际坐标的转换
  • 坐标处理
    • convert_point_to_realworld_point:坐标转换函数
    • 屏幕方向检测:自动处理不同屏幕方向的坐标映射
5.1.4 扩展步骤详解
  • 定义新动作
    • 添加动作类型:在action_tools.py_ACTION_TYPE_ENUM中添加新动作
    • 更新验证逻辑:在action_assertion中添加新动作的参数验证
  • 实现动作转换
    • 更新映射表:在pu_frontend_executor.pyaction_type_map中添加新动作映射
    • 添加转换逻辑:在step_api_to_frontend_action中添加新动作的转换处理
  • 实现设备操作
    • 添加操作实现:在act_on_device函数中添加新动作的 ADB 命令实现
    • 参数验证:确保新动作的参数验证和错误处理
  • 解析器支持
    • 更新解析器:在parser_0920_summary.py中添加新动作的解析支持
    • 动作格式:定义新动作的输入输出格式
5.1.5 实际扩展示例
  • 添加 SCROLL 动作

    • 定义动作:在_ACTION_TYPE_ENUM中添加 “SCROLL”
    • 验证逻辑:在action_assertion中添加 SCROLL 参数验证
    • 转换实现:在step_api_to_frontend_action中添加转换逻辑
    • 设备操作:在act_on_device中实现 SCROLL ADB 命令
  • 扩展参数支持

    • 方向参数:支持 UP/DOWN/LEFT/RIGHT 方向
    • 距离参数:支持自定义滑动距离
    • 时间参数:支持自定义滑动时间

5.2 CopilotClientRolloutRunner

CopilotClientRolloutRunner 存在于代码中,但是没有调用实例,所以我们直接反推。

5.2.1 功能

CopilotClientRolloutRunner 中的 “rollout” 概念确实来源于强化学习领域,在强化学习中,rollout 指从当前状态开始执行一系列动作直到终止状态的完整轨迹。

CopilotClientRolloutRunner 实际上是一个多设备任务并行执行框架,主要功能是管理多个设备上的 GUI 代理任务执行, 支持同时在多个设备上运行 GUI 代理任务,提高执行效率。CopilotClientRolloutRunner 与强化学习有概念上的联系,但不是强化学习算法的实现。

主要用途:

  • 任务分发:将任务分发到多个设备并行执行
  • 结果收集:收集所有任务的执行结果
  • 执行监控:跟踪每个设备的任务执行状态

当然,GUI 代理任务的执行轨迹可以用于训练或评估智能体,因此,CopilotClientRolloutRunner 类可能用于强化学习训练数据的收集,执行的轨迹数据可用于后续的强化学习算法训练。

5.2.2 具体实现

使用multiprocessing模块实现并行处理,包含四个主要进程:

  • logger_runner- 日志记录进程
  • reader_runner- 任务读取和分发进程
  • work_runner- 每个设备对应一个工作进程
  • writer_runner- 结果写入进程

任务队列与负载均衡

CopilotClientRolloutRunner 为每个设备维护独立的任务队列task_queue

http://www.jsqmd.com/news/1070271/

相关文章:

  • 天府八字排盘:传统命理文化智能工具首选
  • 如何高效处理扫描文档:Scan Tailor智能优化完全教程
  • 重建 AI 认知第 1 篇:基础认知——一张地图看懂 AI Landscape
  • 2026年绍兴柯桥财务公司:最新权威排名与专业指南。
  • 全球仅开放给注册在校生的AI工具白名单(含5款未公开披露的教育特供版),申请倒计时≤15天
  • 2026 厦门全屋定制商家筛选干货指南|新手全屋定制入门全解析
  • AI+数据湖融合架构设计(2024最新Gartner验证模型):从Lambda到AI-Native湖仓一体演进全图谱
  • 把语音 AI 最难的工程活,浓缩成 15 行 PythonPipecat:Daily.co 出品的实时语音 Agent 编排框架 |Github Daily
  • 国内光稳定剂厂分布在哪些产区?几大集群对比
  • 告别科研绘图内耗!百考通AI一站式解决全学科论文作图难题
  • Dify 1.14 的 advanced-chat 工作流流式
  • 想做AI自动化测试Agent,这些原理是必须要掌握的
  • 别再浪费你的微信群聊了!如何通过个人微信接口标准化采集,完善 AI 时代的口碑证据链?
  • Windows 11终极优化指南:免费开源工具Win11Debloat完整使用教程
  • linux宝塔面板使用API自动部署更新文件
  • MobaXterm中文版:Windows远程管理的终极一体化解决方案,告别繁琐工具切换!
  • AI工具学生认证失败率高达68%?资深教育技术官亲授5类高危错误+3种备用验证路径,错过再等半年
  • 无纺布裁切边缘整齐,使用CO2激光高效加工
  • 三步搞定微信聊天记录永久备份:免费开源工具完整指南
  • 立宏安全> LMC3-50 RFID安全门开关> 安全联锁开关 > 磁感应开关
  • 商铺小流量用气,罗茨流量计为什么更合适?
  • 如何快速打造你的专属开源输入法:四叶草拼音完全指南
  • 解析AI搜索获客适合谁,看GEO优化布局与实际场景匹配
  • 2026 企业智能体开发平台全景评测:八大主流平台横向对比
  • 今天不整合AI工具,明天就掉出核心供应商名录:制造业Tier-1厂商强制AI接入倒计时启动
  • 我教这个龙虾学会抢微信红包: QClaw说我帮你搞定语音提醒 !
  • 安得卫士新一代综合数据安全解决方案:为企业数据构筑全生命周期防线
  • GitHub Desktop中文汉化终极指南:3分钟打造完美中文界面
  • TTS模型选型避坑指南:实测17款AI语音引擎在儿童/老年/方言场景下的WER误差率对比(附开源测试集)
  • AI驱动的元宇宙数字人量产流水线(含完整Prompt Engineering SOP+Unity XR Pipeline配置包)