莫度编程网

技术文章干货、编程学习教程与开发工具分享

OpenManus 源码解析(三)—— 用时序图讲清 OpenManus 执行流程

OpenManus 源码解析(一)—— 源码结构及包图

OpenManus 源码解析(二)—— 流程图


OpenManus 从用户提问到最终的结果展示整个处理流程较长,本文将重点通过三个关键流程的时序图分析,来说明 OpenManus 的执行流程。

一、整体请求处理流程

初绍化阶段:

用户通过 main.py 输入请求

系统初始化 Manus Agent,并将用户输入保存到 Memory中

执行循环:

Agent 通过迭代执行步骤(步数上限由 max_steps 控制)

每个步骤分为“思考”和“行动”两个阶段

思考阶段(Think):

Agent 从 Memory 获取会话历史

调用 LLM 进行思考,并决定使用哪些工具

将 LLM 的响应保存到 Memory

行动阶段(Act):

如果有工具调用,通过 ToolCollenction 执行相应工具;

工具执行结果保存到 Memory

如果执行的是特殊工具(如 Terminate),会将状态设置为 FINISHED

循环检测:

检查是否陷入循环状态

如果检测到循环,采取相应措施避免重复执行相同操作

结果返回:

执行完成后,返回结果给 main.py,最终展示给用户


二、基于计划的执行流程

初始化阶段:

用户通过 run_flow.py 输入请求

创建 agents 字典,并使用 FlowFactory 创建 PlanningFlow 实例

计划创建阶段:

PlanningFlow 调用LLM生成初始计划

使用 PlanningTool创建结构化计划,包含多个步骤

计划执行循环:

获取当前计划中下一个需要执行的步骤

根据步骤类型选择合适的执行 Agent

步骤执行:

选定的 Agent 执行当前步骤

内部过程包含 LLM 思考和工具执行

执行完成后标记步骤为已完成

计划总结:

所有步骤完成后,生成计划执行总结

返回完整结果给用户


三、工具执行流程

工具选择:

Agent 在思考阶段决定使用哪些工具

通过 ToolCollection 执行选定工具

不同工具的执行路径:

PythonExecute: 在受限环境中执行 Python 代码

BrowserUseTool:初始化浏览器并执行各种浏览器操作

GoogleSearch:执行 Google 搜索并返回结果

FileSaver:将内容保存到文件

Terminate:结束当前任务执行

结果处理:

工具执行结果以 ToolResult 形式返回

Agent 处理执行结果并决定下一步操作

指定的工具可能会改变 Agent 的状态(如 FINISHED)


OpenManus 的核心流程体现了一个完整的AI代码系统架构:

  • 分层设计:从用户输入到LLM思考,再到工具执行,每一层都有明确的职责
  • 状态管理:通过 Memory 和 AgentState 维护会话状态和执行进度
  • 模块化工具系统:各种工具封装不同能力,可以独立扩展
  • 计划引导执行:PlanningFlow 通过结构化计划来管理复杂任务的执行
  • 安全机制:循环检测、超时控制等机制确保系统稳定运行

这种设计使 OpenManus 能够灵活处理各种复杂任务,从简单的问答到多步骤的复杂操作,同时保持高度的可扩展性和可维护性。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言

    Powered By Z-BlogPHP 1.7.4

    蜀ICP备2024111239号-43