OpenManus通用AI智能体框架解析
引言
Monica团队近期发布的Manus被誉为全球首个通用型AI智能体。该项目推出后迅速爆红,邀请码一号难求,随之而来的是各路开发者快速构建了众多类似的开源替代方案。其中,MetaGPT团队仅用3小时就开发完成了一个开源版本——OpenManus,短短几天时间便获得超过3万的GitHub星标,再次引发行业广泛关注。
本文将深入解析OpenManus的核心技术原理、架构设计和实际使用体验,带领读者一起探索这个备受瞩目的AI智能体框架。
OpenManus项目全面概述
OpenManus是一个完全开源的通用AI智能体框架,其核心理念是 No fortress, purely open ground
OpenManus核心特点:
- 完全开源,无需任何邀请码即可立即使用
- 支持多种复杂任务类型的智能处理
- 提供强大的浏览器自动化能力
- 内置Python代码执行环境
- 实现了高效的多智能体协作流程
- 提供丰富且可扩展的工具调用机制
OpenManus 技术原理
精心设计的架构体系
OpenManus采用了高度模块化、分层的架构设计,大量运用了面向对象的设计模式和最佳实践。系统按照模块职责清晰划分为多个功能层次:
- 应用层:主入口和运行文件(main.py、run_flow.py等)
- 智能体层:实现各种代理的核心行为(app/agent/)
- 工具层:提供各种功能工具的实现(app/tool/)
- 基础设施层:配置管理、日志系统、LLM接口等
项目目录结构一览
1 | ├── app # 核心应用代码 |
OpenManus 工作流程详解
智能体工作流程分为两大类,具体可以看。 OpenManus的工作流程主要遵循 plan --> action --> review --> action --> review ... 的循环模式,直到触发结束条件。具体流程如下:
用户输入处理阶段
- 用户输入
prompt后,系统自动创建智能体实例并传递用户指令 - 智能体将用户输入存储到内部记忆系统
Memory中
任务计划制定阶段
- 专门的规划智能体调用LLM针对
prompt进行系统化的任务拆分 - 将复杂问题科学地拆解成一系列逻辑连贯的子任务序列
思考与行动循环阶段
- 思考(Think): 分析当前状态和历史记录,智能选择最合适的工具
- 行动(Act): 精确执行选定的工具完成特定任务
- 观察(Observe): 全面收集工具执行的所有结果数据
- 更新记忆: 将执行结果记录到内部记忆系统
结果输出阶段
- 当满足终止条件(达到最大步数或任务完成标志)时,返回完整结果给用户
以下是OpenManus核心工作流程的详细流程图
OpenManus代码全链路过程
初始化阶段
- 用户通过 main.py 启动程序,输入提示(prompt)
- 系统创建 Manus 代理实例,Manus 继承自 ToolCallAgent,提供了多种工具能力
- Manus 代理调用 run(prompt) 方法开始处理用户请求
执行阶段
- BaseAgent 的 run 方法将用户输入存入内存,并设置代理状态为 RUNNING
- 系统进入主循环,在不超过最大步骤数且未完成的情况下,执行 step 方法
- ReActAgent 的 step 方法分为两个阶段:思考(think)和行动(act)
- ToolCallAgent 的 think 方法调用 LLM 获取响应和工具调用
- 如果有工具调用,ToolCallAgent 的 act 方法会执行相应的工具
- 工具执行结果会被添加到代理的内存中
- 系统检查是否需要继续执行或已完成任务
规划执行阶段(当使用 PlanningFlow 时)
- lanningFlow 的 execute 方法首先创建初始计划
- 然后获取当前步骤信息,检查是否所有步骤已完成
- 如果未完成,选择合适的执行器代理执行当前步骤
- 执行完成后,标记步骤为已完成,并继续下一步骤
- 当所有步骤完成后,完成计划并返回结果
工具调用阶段
- ToolCallAgent 通过 execute_tool 方法执行工具调用
- 工具调用通过 ToolCollection 找到对应的工具实例
- 工具执行后返回 ToolResult,包含输出或错误信息
- 工具结果被格式化为消息添加到代理的内存中
完成阶段
- 当任务完成或达到最大步骤数时,代理状态设置为 FINISHED
- 系统收集所有步骤的结果,并返回给用户
- 用户可以继续输入新的提示或退出程序
核心组件
BaseAgent
- 提供了代理的基础功能,如状态管理、内存管理和执行循环
- 实现了 run 方法作为代理执行的入口点
- 提供了上下文管理器 state_context 用于管理代理状态
ReActAgent
- 实现了 ReAct(Reasoning and Acting)模式
- 将执行过程分为思考(think)和行动(act)两个阶段
- 提供了 step 方法作为执行单个步骤的入口点
ToolCallAgent
- 扩展了 ReActAgent,增加了工具调用功能
- 实现了 think 方法用于获取 LLM 的响应和工具调用
- 实现了 act 方法用于执行工具调用
- 提供了 execute_tool 方法用于执行单个工具调用
Manus
- 继承自 ToolCallAgent,是一个通用的智能代理
- 配置了多种工具,如 Python 执行、Google 搜索、浏览器工具等
- 使用特定的系统提示和下一步提示来指导 LLM 的行为
PlanningFlow
- 实现了基于规划的任务执行流程
- 使用 PlanningTool 创建和管理执行计划
- 支持多个代理协作执行不同类型的任务
- 提供了计划创建、步骤执行和计划完成的功能
LLM
- 负责与大型语言模型的交互
- 提供了 ask 和 ask_tool 方法用于获取 LLM 的响应
- 处理消息格式化和响应解析
- 支持流式响应和工具调用
ToolCollection
- 管理多个工具实例
- 提供了工具查找、执行和参数转换的功能
- 支持添加新工具和批量执行工具
OpenManus详细安装与使用
安装指南
我们提供两种安装方式。推荐使用方式二(uv),因为它能提供更快的安装速度和更好的依赖管理。
方式一:使用 conda
- 创建新的 conda 环境:
1 | conda create -n open_manus python=3.12 |
- 克隆仓库:
1 | git clone https://github.com/FoundationAgents/OpenManus.git |
- 安装依赖:
1 | pip install -r requirements.txt |
方式二:使用 uv(推荐)
- 安装 uv(一个快速的 Python 包管理器):
1 | curl -LsSf https://astral.sh/uv/install.sh | sh |
- 克隆仓库:
1 | git clone https://github.com/FoundationAgents/OpenManus.git |
- 创建并激活虚拟环境:
1 | uv venv --python 3.12 |
- 安装依赖:
1 | uv pip install -r requirements.txt |
浏览器自动化工具(可选)
1 | playwright install |
配置说明
OpenManus 需要配置使用的 LLM API,请按以下步骤设置:
- 在
config目录创建config.toml文件(可从示例复制):
1 | cp config/config.example.toml config/config.toml |
- 编辑
config/config.toml添加 API 密钥和自定义设置:
1 | # 全局 LLM 配置 |
快速启动
一行命令运行 OpenManus:
1 | python main.py |
然后通过终端输入你的创意!
如需使用 MCP 工具版本,可运行:
1 | python run_mcp.py |
如需体验不稳定的多智能体版本,可运行:
1 | python run_flow.py |
添加自定义多智能体
目前除了通用的 OpenManus Agent, 我们还内置了DataAnalysis Agent,适用于数据分析和数据可视化任务,你可以在config.toml中将这个智能体加入到run_flow中
1 | # run-flow可选配置 |
除此之外,你还需要安装相关的依赖来确保智能体正常运行:具体安装指南









