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)
用户输入查询,执行
run()
方法,默认按 20 个 step 执行。Manus Agent
每个step()
**拆分为 think() 和 act()**。think():调用 LLM 进行任务推理。
act():调用工具执行任务,结果存入
memory
。
think() 方法判断任务是否完成。
任务完成时,调用
Terminate
工具,传入success/failure
。执行 20 步后,任务自动终止。
最终返回任务结果。
2️⃣ 多 Agent 运行模式(Planning Agent + Manus Agent)
This content is only supported in a Lark Docs
用户输入查询,调用
create_flow()
创建任务流程。实例化
**PlanningFlow**
,并绑定Agent
。Planning Agent
调用_create_initial_plan()
**生成任务步骤**。遍历 **workflow step**,逐步调用
Manus Agent
执行任务。Manus Agent
**执行任务并更新步骤状态**。所有任务执行完成后,返回最终结果。
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()
参考。
✅ **增强 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 任务执行框架!