引言

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
2
3
4
5
6
7
8
├── app                             # 核心应用代码
| ├── agent # 各类智能体实现(Manus、Browser、Tool call等)
| ├── tool # 工具集合实现(Python执行器、浏览器操作、文件处理等)
| ├── flow # 多智能体协作的流程管理系统
| └── prompt # 存储系统提示模板和指令集
├── config # 配置文件目录
├── examples # 示例代码和使用案例
└── workspace # 工作区文件夹,用于存储智能体生成的所有文件

OpenManus 工作流程详解

智能体工作流程分为两大类,具体可以看OpenManus的工作流程主要遵循 plan --> action --> review --> action --> review ... 的循环模式,直到触发结束条件。具体流程如下:

用户输入处理阶段

  • 用户输入prompt后,系统自动创建智能体实例并传递用户指令
  • 智能体将用户输入存储到内部记忆系统 Memory

任务计划制定阶段

  • 专门的规划智能体调用LLM针对 prompt 进行系统化的任务拆分
  • 将复杂问题科学地拆解成一系列逻辑连贯的子任务序列

思考与行动循环阶段

  • 思考(Think): 分析当前状态和历史记录,智能选择最合适的工具
  • 行动(Act): 精确执行选定的工具完成特定任务
  • 观察(Observe): 全面收集工具执行的所有结果数据
  • 更新记忆: 将执行结果记录到内部记忆系统

结果输出阶段

  • 当满足终止条件(达到最大步数或任务完成标志)时,返回完整结果给用户

以下是OpenManus核心工作流程的详细流程图

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

  1. 创建新的 conda 环境:
1
2
conda create -n open_manus python=3.12
conda activate open_manus
  1. 克隆仓库:
1
2
git clone https://github.com/FoundationAgents/OpenManus.git
cd OpenManus
  1. 安装依赖:
1
pip install -r requirements.txt

方式二:使用 uv(推荐)

  1. 安装 uv(一个快速的 Python 包管理器):
1
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. 克隆仓库:
1
2
git clone https://github.com/FoundationAgents/OpenManus.git
cd OpenManus
  1. 创建并激活虚拟环境:
1
2
3
4
uv venv --python 3.12
source .venv/bin/activate # Unix/macOS 系统
# Windows 系统使用:
# .venv\Scripts\activate
  1. 安装依赖:
1
uv pip install -r requirements.txt

浏览器自动化工具(可选)

1
playwright install

配置说明

OpenManus 需要配置使用的 LLM API,请按以下步骤设置:

  1. config 目录创建 config.toml 文件(可从示例复制):
1
cp config/config.example.toml config/config.toml
  1. 编辑 config/config.toml 添加 API 密钥和自定义设置:
1
2
3
4
5
6
7
8
9
10
11
12
13
# 全局 LLM 配置
[llm]
model = "gpt-4o"
base_url = "https://api.openai.com/v1"
api_key = "sk-..." # 替换为真实 API 密钥
max_tokens = 4096
temperature = 0.0

# 可选特定 LLM 模型配置
[llm.vision]
model = "gpt-4o"
base_url = "https://api.openai.com/v1"
api_key = "sk-..." # 替换为真实 API 密钥

快速启动

一行命令运行 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
2
3
# run-flow可选配置
[runflow]
use_data_analysis_agent = true # 默认关闭,将其改为true则为激活

除此之外,你还需要安装相关的依赖来确保智能体正常运行:具体安装指南