欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 【用 Trace读源码】PlanAgent 执行流程

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

2025/5/22 8:03:53 来源:https://blog.csdn.net/wenxueliu/article/details/146447265  浏览:    关键词:【用 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)
    • 没有更多未完成的步骤

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词