Null0x62

OpenManus

1. 背景

OpenManus 是 Manus 的开源产品,由 matagpt 团队在 3 小时内复现了一个简化版本。从目前的代码执行结果来看,OpenManus **仍处于玩具阶段**,主要依赖 LLM 进行任务推理和执行,缺乏稳定性和可扩展性。

OpenManus vs. Manus 的核心区别

对比项

Manus

OpenManus

开发团队

内部闭源

开源项目

代码成熟度

生产可用

实验阶段

执行方式

复杂任务处理

依赖 LLM 的推理能力

任务调度

任务拆解 + 任务调度

主要依靠 LLM 规划

工具调用

细粒度 API + 手动工具优化

依赖 Function Calling

2. 执行流程

目前 OpenManus 主要有两种运行模式:

This content is only supported in a Lark Docs

1️⃣ 单 Agent 运行模式(Manus Agent)

  1. 用户输入查询,执行 run() 方法,默认按 20 个 step 执行。

  2. Manus Agent 每个 step() **拆分为 think() 和 act()**。

    1. think():调用 LLM 进行任务推理。

    2. act():调用工具执行任务,结果存入 memory

  3. think() 方法判断任务是否完成

    1. 任务完成时,调用 Terminate 工具,传入 success/failure

    2. 执行 20 步后,任务自动终止。

  4. 最终返回任务结果

2️⃣ 多 Agent 运行模式(Planning Agent + Manus Agent)

This content is only supported in a Lark Docs

  1. 用户输入查询,调用 create_flow() 创建任务流程。

  2. 实例化 **PlanningFlow**,并绑定 Agent

  3. Planning Agent 调用 _create_initial_plan() **生成任务步骤**。

  4. 遍历 **workflow step**,逐步调用 Manus Agent 执行任务。

  5. Manus Agent **执行任务并更新步骤状态**。

  6. 所有任务执行完成后,返回最终结果

3. 核心模块

This content is only supported in a Lark Docs

BaseAgent(基础代理)

  • 维护 **执行状态**(IDLE, RUNNING, FINISHED, ERROR)。

  • 维护 **任务记忆(Memory)**,记录任务历史,避免重复执行无效操作。

  • 任务主循环,控制任务执行步数(step),防止陷入死循环。

  • 提供 **状态管理上下文**,确保任务稳定执行。

ReActAgent(ReAct 代理)

  • 实现 **ReAct 框架(推理 + 操作)**,在大语言模型中结合推理和动作。

  • 每个 step 由 think() 和 act() 组成

    • think():调用 LLM **生成决策**,判断是否继续执行,并确定 act() 需要执行的工具。

    • act():执行 think() 选出的工具,并返回执行结果。

  • ReAct 是一个循环过程,每次 think() 都会将 memory 存储的历史信息传给 LLM,包括 act() 产生的结果。

Function Calling(工具调用)

Function Calling 是 OpenManus 用于 扩展 LLM 执行能力 的关键机制,允许 LLM 在推理过程中**动态调用预定义的工具(函数)**,以完成更复杂的任务。

Function Calling 机制
  • LLM 通过 **自然语言理解用户意图**。

  • think() 过程中,LLM 解析**当前任务需要调用的工具**。

  • act() 负责实际调用对应工具,并返回结果。

  • 工具执行结果存入 memory,供后续 think() 参考。

Function Calling 的优点

✅ **增强 LLM 执行能力**,支持调用外部 API 或本地工具。

✅ **减少 LLM 直接生成代码的错误率**,提高执行的可靠性。

✅ **可扩展性强**,允许动态添加新工具。

ToolCalling Agent(工具调用代理)

  • 负责 **Function Calling**,扩展 Agent 对工具的调用能力。

  • 支持的工具

    • PythonExecute:执行 Python 代码。

    • FileSaverTool:保存文件。

    • GoogleSearchTool:Google 搜索。

    • BrowserUseTool:控制浏览器,导航到搜索到的网站并复制内容。

    • TerminateTool:终止进程。

    • PlanningTool:任务规划。

  • 统一工具调用接口,管理工具的输入和输出。

  • 负责 **工具调用流程控制**,确保任务执行流畅。

Planning Agent(任务规划代理)

  • 负责 **复杂任务的规划与执行**。

  • 任务拆解:分析用户输入,拆解成多个步骤。

  • 步骤管理:管理任务步骤的执行状态,确保流程顺利推进。

Manus Agent(通用任务代理)

  • OpenManus 的 **主要任务处理入口**。

  • 负责 **执行单步任务**,调用工具完成特定需求。

4. 结论

OpenManus 目前仍处于早期阶段,**过度依赖 LLM 进行推理**,缺乏精细化的工具调用优化和稳定性控制。未来优化方向包括:

  • 减少 LLM 依赖,引入规则引擎。

  • 优化工具调用逻辑,支持工具组合执行。

  • 增强任务调度,支持任务依赖管理和失败重试。

  • 增加持久化存储,确保任务可恢复执行。

🚀 通过这些优化,OpenManus 有望从“玩具”进化为真正可用的 AI 任务执行框架!

Powered by wisp

3/21/2025
Related Posts
什么是MCP?

什么是MCP?

全面介绍 MCP(Model Context Protocol)协议的设计理念、核心组件与传输方式,详解如何实现跨 OpenAI、Claude 等大模型的标准化 Function Calling,让你的 AI 应用更加通用与可扩展。

Read Full Story
© Samantha 2025