【用 Trace读源码】PlanAgent 执行流程

前提条件

在 Trae 中打开 OpenManus 工程,使用 build 模式,模型选择 claude-sonnet-3.7

提示词

分析 agent/planning.py 中 main 方法及相关类的执行流程,以流程图的方式展示

PlanningAgent 执行流程图

以下流程图展示了 PlanningAgent 类的执行流程,包括 main 方法和相关方法的调用关系。

update_plan_status 方法流程
_get_current_step_index 方法流程
create_initial_plan 方法流程
有 planning 工具调用
无 planning 工具调用
是否有活动计划?
更新计划状态开始
结束
是否有步骤跟踪信息?
记录警告
工具调用是否完成?
记录警告
获取步骤索引
标记步骤为已完成
记录步骤已完成
是否有活动计划?
获取当前步骤开始
返回 None
获取计划内容
解析计划内容
查找 Steps: 行
是否找到 Steps 行?
查找第一个未完成步骤
是否找到未完成步骤?
标记步骤为进行中
返回步骤索引
记录计划创建信息
创建初始计划开始
创建用户消息
添加消息到内存
调用 LLM 创建计划
创建助手消息
添加助手消息到内存
检查工具调用
执行 planning 工具
记录执行结果
添加工具消息到内存
设置计划已创建标志
记录警告
添加错误消息到内存
main()
创建 PlanningAgent 实例
初始化 agent
设置 active_plan_id
验证 planning tool
agent.run(request)
create_initial_plan(request)
调用父类 run() 方法
步骤循环
(当前步骤 < max_steps)
think() 方法
_get_current_step_index()
获取当前步骤索引
调用父类 think() 方法
是否有工具调用?
关联工具调用与当前步骤
act() 方法
调用父类 act() 方法
执行工具调用
更新工具执行状态
update_plan_status()
更新计划步骤状态
是否完成?
返回结果

执行流程说明

  1. 初始化阶段

    • main() 方法创建 PlanningAgent 实例
    • 初始化 agent,设置 active_plan_id 和验证 planning tool
    • 调用 run(request) 方法开始执行
  2. 计划创建阶段

    • create_initial_plan(request) 方法创建初始计划
    • 调用 LLM 分析请求并创建计划步骤
    • 使用 planning 工具执行计划创建
  3. 执行循环阶段

    • 循环执行直到达到最大步骤数或任务完成
    • 每次循环调用 think() 方法决定下一步行动
    • 获取当前步骤索引并标记为进行中
    • 调用父类 think() 方法获取 LLM 响应
    • 如果有工具调用,关联工具调用与当前步骤
  4. 执行工具阶段

    • 调用 act() 方法执行工具调用
    • 更新工具执行状态
    • 调用 update_plan_status() 更新计划步骤状态
  5. 完成阶段

    • 检查是否完成所有步骤或达到最大步骤数
    • 返回执行结果

流程图展示了 PlanningAgent 如何通过创建计划、执行步骤和更新状态来完成任务的整个生命周期。

提示词

分析 agent/planning.py 中 main 方法及相关类的执行流程,以流程图的方式展示整个执行流程,不需要类和方法的信息,只需要完整的处理流程

PlanningAgent 执行流程图

以下流程图展示了 agent/planning.py 中 main 方法及相关类的执行流程:

开始
初始化 PlanningAgent
是否有初始请求?
创建初始计划
执行 run 方法
循环执行 step 方法
执行 think 方法
获取当前计划状态
获取当前步骤索引
调用 LLM 决定下一步行动
是否需要执行工具?
思考完成 - 无需行动
执行 act 方法
执行工具调用
更新工具执行状态
是否为计划相关工具?
更新计划步骤状态
返回执行结果
是否达到最大步骤或终止?
结束

流程说明

  1. 初始化阶段

    • 创建 PlanningAgent 实例
    • 设置默认计划 ID 和可用工具
  2. 计划创建阶段

    • 如果有初始请求,创建初始计划
    • 使用 LLM 分析请求并生成计划步骤
    • 通过 PlanningTool 存储计划
  3. 执行循环

    • 循环执行 step 方法,包含 think 和 act 两个阶段
    • think 阶段获取当前计划状态,决定下一步行动
    • act 阶段执行工具调用并更新计划状态
  4. 状态追踪

    • 使用 step_execution_tracker 跟踪每个工具调用的执行状态
    • 当工具执行完成后,更新对应计划步骤的状态
  5. 终止条件

    • 达到最大步骤数 (max_steps)
    • 执行了终止工具 (Terminate)
    • 没有更多未完成的步骤

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1、双指针法

关于每个知识点的例题 可以自己看力扣标准题解。也可以在哔哩哔哩上看。想看我的&#xff0c;就到github 看 - 库 &#xff0c;介绍里写的算法讲解那些&#xff0c;里面有知识点&#xff0c;有题库。题库&#xff0c;每天都发题&#xff0c;可能跟博客的进度不一样。因为我上传…

LangChain 基础

一、LangChain 模块和体系 LangChain 是一个用于开发由大型语言模型&#xff08;LLMs&#xff09;驱动的应用程序的框架。 官方文档&#xff1a;https://python.langchain.com/docs/introduction/ LangChain 简化了LLM应用程序生命周期的每个阶段&#xff1a; 开发&#xf…

#echarts#折线图#饼图

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>折线图</title> </head> <body><div id"app" style"width:100%;height:100%;"><div id"chart-c…

Parsing error: Unexpected token, expected “,“

今天在使用Trae AI 编程工具开发大文件切片上传功能&#xff0c;使用的是VUE3,TS技术栈&#xff0c;开发完成运行时&#xff0c;编译报错&#xff08;Parsing error: Unexpected token, expected ","&#xff09;&#xff0c;让AI自行修复此问题多次后还是没有解决&a…

NLP高频面试题(九)——大模型常见的几种解码方案

大模型常见的几种解码方案 在自然语言生成任务中&#xff0c;如何从模型生成的概率分布中选择合适的词汇&#xff0c;是影响文本质量的关键问题。常见的解码方法包括贪心搜索&#xff08;Greedy Search&#xff09;、束搜索&#xff08;Beam Search&#xff09;、随机采样&…

农用车一键启动工作原理

移动管家农用车一键启动的工作原理与普通汽车类似&#xff0c;主要依赖于无线射频识别技术&#xff08;RFID&#xff09;。以下是具体的工作步骤和原理&#xff1a; 智能钥匙识别&#xff1a; 车主携带智能钥匙靠近车辆时&#xff0c;钥匙通过发射射频信号与车辆进行交互。车辆…

Cursor从小白到专家

文章目录 1&#xff1a;简单开发一个贪吃蛇游戏规则设置提示词 cursor开发小工具开发整体步骤创建.cursorrules输入提示词composer模式chat模式 执行cursor accept all发布到线上进行分享 cursor开发一个浏览器插件创建.cursorrulescursor rules范例集工具 输入提示词执行curso…

MAC+PHY 的硬件连接

文章目录 以太网的 MAC 与 PHY简介硬件拓扑CPU集成MAC与PHYCPU集成MAC&#xff0c;PHY采用独立芯片CPU不集成MAC与PHY&#xff0c;MAC与PHY采用集成芯片 在 OSI 分层中的位置MACPHYMAC 与 PHY 数据交互参考 本文为笔者学习以太网对网上资料归纳整理所做的笔记&#xff0c;文末均…

仿函数 VS 函数指针实现回调

前提&#xff1a; 本博客对比 函数指针实现回调 和 仿函数 &#xff0c;突出仿函数的优势。 目的&#xff1a; 一个类要能够灵活的调用两个函数&#xff0c;essfc 和 greaterfc&#xff0c;分别用于比较两个整数的大小&#xff1a; ①&#xff1a;lessfc&#xff1a;判断 x …

CH32V208蓝牙内部带运放32位RISC-V工业级微控制器

开发板 CH32V208CBU6立创格式的开发板上述链接可下载&#xff0c;官方文件进行了转换&#xff0c;使用前请仔细核对。 CH32V208CBU6原理图&#xff0c;上述图片为芯片部分。已进行DRC。 CH32V208CBU6 PCB三维图&#xff0c;上述图片为芯片部分。已进行DRC。 概述 CH32V208C…

整理和总结微信小程序的高频知识点

前言 近期萌生了一些想法&#xff0c;感觉可以做一个小程序作为产出。 但小程序做得比较少&#xff0c;因此边做边复习。整理和总结了一些高频知识点和大家一起分享。 一、模板和组件 1.1模板&#xff08;Template&#xff09; 优势 简单灵活&#xff1a;模板定义和使用都较…

1996-2023年各省公路里程数据(无缺失)

1996-2023年各省公路里程数据&#xff08;无缺失&#xff09; 1、时间&#xff1a;1996-2023年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;公路里程&#xff08;万公里&#xff09; 4、范围&#xff1a;31省 5、指标解释&#xff1a;公路里程指报告期末…

SEARCH-R1:大型语言模型的多轮搜索推理革命

当AI学会"边搜索边思考" 2025年&#xff0c;语言模型领域迎来重大突破——SEARCH-R1框架通过强化学习&#xff08;RL&#xff09;让大模型实现"动态搜索自主推理"的协同进化。这项技术不仅让模型在回答"泰坦尼克号沉没时的船长是谁"时能自动检索…

Wi-Fi NAN 架构(Wi-Fi Aware Specification v4.0,第2章:2.7~2.9)

1. NAN 介质访问控制层&#xff08;MAC&#xff09; NAN MAC负责通过参与 NAN同步信标帧&#xff08;NAN Synchronization Beacon frame&#xff09;的传输&#xff0c;获取并维护设备所在的NAN集群的同步。作为同步功能的一部分&#xff0c;NAN MAC运行 TSF 定时器。NAN MAC还…

基于物联网的便携式土壤综合参数检测仪设计

标题:基于物联网的便携式土壤综合参数检测仪设计 内容:1.摘要 随着农业现代化和环境监测需求的不断增长&#xff0c;对土壤综合参数的实时、准确检测变得至关重要。本研究旨在设计一种基于物联网的便携式土壤综合参数检测仪&#xff0c;以满足现场快速检测和数据远程传输的需求…

《Android 13深度定制:手势拦截技术实现SystemUI状态栏智能折叠方案》

核心机制解析 在Android 13的SystemUI定制中&#xff0c;状态栏下拉行为由NotificationPanelViewController控制&#xff0c;其核心逻辑聚焦于手势事件处理和布局动态调整。当用户执行下拉操作时&#xff0c;系统通过onQsIntercept方法拦截滑动事件&#xff0c;并调用setQsExp…

《Python实战进阶》No26: CI/CD 流水线:GitHub Actions 与 Jenkins 集成

No26: CI/CD 流水线&#xff1a;GitHub Actions 与 Jenkins 集成 摘要 持续集成&#xff08;CI&#xff09;和持续部署&#xff08;CD&#xff09;是现代软件开发中不可或缺的实践&#xff0c;能够显著提升开发效率、减少错误并加速交付流程。本文将探讨如何利用 GitHub Actio…

2025.3.22总结

今天去了光谷书店&#xff0c;看了下&#xff0c;书店里女生比较多&#xff0c;也不知道是不是上班族&#xff0c;发现有本类似马克思的书籍&#xff0c;也不知道是不是再考研或者考其他证书的。 图书馆很安静&#xff0c;安静的让我的内心也平静了下来&#xff0c;我也再一旁…

HR人员和组织信息同步AD域服务器实战方法JAVA

HR人员和组织信息同步AD域服务器 前期准备AD域基础知识整理HR同步AD的逻辑代码结构配置文件设置启动类HR组织的BeanHR人员Bean获取HR人员和组织信息的类AD中处理组织和人员的类日志配置 POM.xml文件生成EXE文件服务器定时任务异常问题注意事项 前期准备 1、开发语言&#xff1…

修改服务器windows远程桌面默认端口号

修改服务器windows远程桌面默认端口号 在Windows服务器上修改远程桌面协议&#xff08;RDP&#xff09;的默认端口&#xff08;3389&#xff09;可以增强服务器的安全性&#xff0c;减少被恶意扫描和攻击的风险。以下是修改远程端口的详细步骤&#xff1a; 按 Win R 打开运行…