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

【用 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)
    • 没有更多未完成的步骤

相关文章:

  • AMD公司
  • 附——教6
  • Windows faster whisper GUI-v0.8.5-开源版[AI支持超过100种语言的人声分离/声音转文本字幕]
  • 【Java篇】静动交融,内外有别:从静态方法到内部类的深度解析
  • STM32复位
  • 小米AX6000上安装tailscale
  • 【机器学习】机器学习工程实战-第2章 项目开始前
  • Lineageos 22.1(Android 15)制定应用强制横屏
  • Redis Cluster 详解
  • 维普AIGC降重方法有哪些?
  • 查找重复代码[A卷-hw_od]
  • 冒排排序相关
  • dubbo版本与分组
  • 大模型-提示词链
  • 【前端工程化】
  • 【嵌入式学习2】C语言 - VScode环境搭建
  • UE AI 模型自动生成导入场景中
  • 安装过程中,如何防止丝杆推入支撑座时损坏油封?
  • 【算法工程】大模型开发之windows环境的各种安装
  • 2300年直线公理使数学一直存在尖锐自相矛盾
  • 上海:全面建设重复使用火箭创新高地、低成本商业卫星规模制造高地
  • 金融监管总局:支持将上海打造成具有国际竞争力的再保险中心
  • 《国语汇校集注》:以1900余条注解,揭示隐微,提供思考
  • 水利部启动干旱防御Ⅳ级响应,指导广西陕西抗旱保供保灌
  • 对话地铁读书人|财务管理孟先生:老婆让我看《三体》
  • 第六次国民体质监测展开,高抬腿俯卧撑等新增运动指标受关注