OpenManus 整体架构,核心模块与典型例子
OpenManus 是一个面向未来的开源多智能体(Multi-Agent)大语言模型(LLM)智能体系统。它不仅仅是一个简单的“AI助手”框架,更是一个高度模块化、可扩展、支持多协议、多工具、多智能体协作的智能体平台。其设计初衷是让开发者、研究者和企业能够以极低的门槛,快速搭建和扩展属于自己的智能体系统,满足从自动化办公、数据分析、自动编程、信息检索、网页自动化到复杂多阶段任务协作等多样化需求。
代码地址:https://github.com/FoundationAgents/OpenManus
一、项目简介
OpenManus 是一个面向未来的开源多智能体(Multi-Agent)大语言模型(LLM)智能体系统。它不仅仅是一个简单的“AI助手”框架,更是一个高度模块化、可扩展、支持多协议、多工具、多智能体协作的智能体平台。其设计初衷是让开发者、研究者和企业能够以极低的门槛,快速搭建和扩展属于自己的智能体系统,满足从自动化办公、数据分析、自动编程、信息检索、网页自动化到复杂多阶段任务协作等多样化需求。
1.1 发展背景与设计理念
随着大语言模型(如GPT-4、Claude、Gemini等)的能力不断提升,单一智能体已难以满足现实世界中复杂、多步骤、跨领域的任务需求。OpenManus 诞生于这样一个背景下:
- 多智能体协作:单一LLM智能体虽强,但在面对需要分工、并行、规划、专家协作的任务时,天然存在瓶颈。OpenManus 通过“多智能体+流程”机制,支持任务自动分解、角色分配、协作执行。
- 工具增强(Tool Augmentation):LLM本身虽强,但缺乏对外部世界的直接操作能力。OpenManus 通过“工具调用”机制,让智能体可以像人类一样调用代码执行、文件操作、网页浏览、数据可视化等多种工具,极大拓展了智能体的边界。
- 协议开放与生态兼容:支持MCP(Model Context Protocol)、A2A(Agent-to-Agent)等协议,方便与外部系统、云服务、第三方智能体生态无缝集成。
- 安全与可控:通过沙箱(Sandbox)机制,保障代码执行、文件操作等高风险任务的安全隔离,防止恶意代码危害主系统。
- 极简上手与高度可扩展:无论是AI初学者还是资深开发者,都能快速上手;同时支持深度定制、插件开发、协议扩展。
1.2 核心目标
- 通用性:支持各类任务(编程、数据分析、信息检索、网页自动化等),适配多种LLM和工具。
- 模块化:所有智能体、工具、流程均为独立模块,易于组合、替换、扩展。
- 可扩展性:支持自定义智能体、工具、流程、协议,适应未来AI生态的快速演进。
- 安全性:通过沙箱、权限控制、资源隔离等机制,保障系统安全。
- 开放性:拥抱开源社区,支持多语言、多平台、国际化,易于贡献和协作。
1.3 与同类系统对比
- 与Auto-GPT、MetaGPT等对比:OpenManus 更强调“多智能体+多工具+多协议”的协作与开放,支持更灵活的工具注册与远程扩展,流程控制更细腻,安全机制更完善。
- 与LangChain、AgentVerse等对比:OpenManus 不是简单的“链式调用”或“单智能体+工具”,而是支持多智能体分工、流程规划、协议互通的完整平台。
- 与SWE-agent、BrowserAgent等对比:OpenManus 可集成这些专用智能体为子模块,实现更复杂的跨领域协作。
1.4 技术选型与架构哲学
- 核心语言:Python 3.12,兼容主流AI生态。
- 依赖管理:支持pip、uv、conda等多种方式,便于不同平台部署。
- 异步编程:全链路异步,提升并发与响应速度。
- Pydantic建模:所有核心对象(智能体、工具、流程、消息等)均为Pydantic模型,便于数据校验、序列化、配置化。
- Docker沙箱:底层采用Docker实现安全隔离,支持资源限制、自动清理。
- 协议适配:内置MCP、A2A协议,便于与外部智能体、工具服务器、云服务对接。
- 国际化与多语言:内置多语言文档,支持全球开发者参与。
1.5 典型应用场景
- 自动化编程与代码审查:如SWEAgent可自动生成、修改、审查代码,支持多步交互与工具链调用。
- 数据分析与可视化:DataAnalysis Agent可自动读取、分析、可视化数据,生成报表与图表。
- 网页自动化与信息抓取:BrowserAgent/Manus可自动登录网站、抓取数据、填表、爬取信息。
- 多阶段复杂任务协作:如“先生成数据,再分析并可视化”,可由多个智能体协作完成。
- 企业自动化办公:如自动整理文档、批量处理文件、自动回复邮件等。
- AI+云原生集成:通过MCP/A2A协议与云端服务、第三方API、外部智能体互通。
1.6 系统优势与局限
优势:
- 架构极度灵活,支持任意组合与扩展
- 安全机制完善,适合生产环境
- 社区活跃,文档完善,国际化支持好
- 兼容主流AI生态,易于集成
局限:
- 高级功能(如多智能体协作、远程工具注册)对新手有一定学习曲线
- 依赖Docker等环境,部分平台部署需额外配置
- 目前主要以命令行为主,GUI生态尚在发展中
二、整体架构与主流程
OpenManus 的整体架构可分为“入口层-流程层-智能体层-工具层-协议层-安全层-配置层-生态层”八大部分,各层既解耦又协作,形成强大的系统能力。
2.1 架构分层与模块协作
- 入口层:包括
main.py、run_flow.py、run_mcp.py、protocol/a2a/app/main.py等,负责解析用户输入、加载配置、初始化流程/智能体。 - 流程层(Flow):如
PlanningFlow,负责任务分解、步骤规划、智能体分配、流程控制。 - 智能体层(Agent):如
Manus、DataAnalysis、MCPAgent等,负责具体任务的执行、工具调用、状态管理。 - 工具层(Tool):如
PythonExecute、BrowserUseTool、StrReplaceEditor等,负责具体操作的实现。 - 协议层:如MCP、A2A协议,负责与外部工具服务器、智能体生态对接。
- 安全层:如沙箱、权限控制、资源隔离,保障系统安全。
- 配置层:如
config.toml、多语言文档,支持灵活配置与国际化。 - 生态层:如社区贡献、插件机制、第三方集成,支持系统持续演进。
2.2 主流程详解
- 用户输入:通过命令行、API、A2A协议等方式输入任务描述(prompt)。
- 入口解析:入口脚本解析输入,加载配置,初始化所需流程与智能体。
- 流程规划:如
PlanningFlow会调用LLM生成任务分解与步骤规划,自动分配给不同智能体。 - 智能体执行:每个智能体根据分配的子任务,自动选择合适工具,执行操作。
- 工具调用:智能体通过
ToolCollection调用本地或远程工具,完成具体操作。 - 结果反馈:每步结果自动记录、汇总,最终反馈给用户。
- 资源清理:流程结束后自动清理沙箱、断开远程连接、释放资源。
2.3 架构优势与最佳实践
- 高内聚低耦合:各层职责清晰,便于维护与扩展。
- 异步高效:全链路异步,支持高并发与大规模任务。
- 插件化与协议化:工具、智能体、协议均可热插拔,便于生态扩展。
- 安全可控:所有高风险操作均可在沙箱中执行,支持资源限额与自动清理。
- 国际化与社区驱动:多语言文档、全球开发者参与,持续演进。
2.4 与行业主流方案对比
- LangChain:更偏向“链式调用”,OpenManus 更强调“多智能体+多工具+多协议”协作。
- Auto-GPT:以单智能体为主,OpenManus 支持多智能体分工与流程规划。
- MetaGPT:同为多智能体,但OpenManus更开放、协议兼容性更强。
- SWE-agent/BrowserAgent:可作为OpenManus子模块集成,提升整体能力。
2.5 典型应用场景深度剖析
- 企业RPA自动化:如自动处理邮件、表格、报表,多个智能体协作,工具链灵活组合。
- 科研数据分析:自动抓取数据、清洗、分析、可视化、生成论文草稿。
- AI+DevOps:自动化代码生成、测试、部署、监控,提升开发与运维效率。
- 智能客服与对话系统:多智能体分工,支持复杂对话、知识检索、自动回复。
- 教育与培训:自动批改作业、生成教学内容、个性化学习路径规划。
三、核心模块分析
1. 智能体(Agent)体系
1.1 BaseAgent
BaseAgent 是所有智能体的抽象基类,定义了智能体的核心属性和行为,包括:
- 状态管理:每个智能体有自己的生命周期状态(IDLE、RUNNING、FINISHED、ERROR等),通过状态机和上下文管理器(asynccontextmanager)实现安全的状态切换。
- 记忆机制:集成 Memory 模型,支持对话历史、工具调用结果、用户输入等信息的存储与回溯,为多轮推理和上下文感知提供基础。
- 执行循环:核心方法
run()实现了异步主循环,自动控制最大步数、异常处理、资源清理等。每一步调用step(),由子类实现具体逻辑。 - 可扩展性:通过 Pydantic 的配置和校验机制,支持灵活扩展属性和行为。
实现亮点:
- 采用异步编程,支持高并发任务。
- 状态上下文管理,保证异常情况下状态回滚,提升健壮性。
- 记忆与消息机制解耦,便于多智能体协作和信息共享。
典型用例:
- 作为所有高级智能体(如 Manus、DataAnalysis、MCPAgent、SWEAgent 等)的基类,统一行为规范。
1.2 ReActAgent/ToolCallAgent
- ReActAgent:引入“思考-行动(Reasoning+Acting)”范式,支持 LLM 先“思考”再“行动”,每一步都可根据当前状态和记忆决定是否调用工具或直接输出结果。
- ToolCallAgent:在 ReActAgent 基础上,增强了工具调用能力。支持多工具自动选择、参数自动生成、调用结果自动处理。
- 核心机制:
think():调用 LLM 生成下一步计划或工具调用意图。act():根据 think 的结果,自动调用工具,并将结果写入记忆。execute_tool():统一的工具调用接口,支持本地和远程工具。special_tool_names:特殊工具(如 terminate)可触发智能体终止。
- 错误处理:自动捕获 LLM token 超限、工具调用异常、参数错误等,写入记忆并优雅降级。
最佳实践:
- 复杂任务建议采用 ToolCallAgent,充分利用 LLM+工具的协同能力。
- 可通过继承 ToolCallAgent 快速开发自定义智能体。
1.3 Manus
Manus 是 OpenManus 的旗舰通用智能体,集成了本地工具与 MCP 远程工具,具备极强的任务适应性。
- 工具集成:默认集成 PythonExecute、BrowserUseTool、StrReplaceEditor、AskHuman、Terminate 等工具。
- MCP 扩展:可动态连接多个 MCP 服务器,自动注册远程工具,实现“工具即服务”。
- 浏览器上下文:内置 BrowserContextHelper,支持复杂网页自动化任务。
- 多轮推理与分步执行:支持长链路任务分解与多步执行。
- 高级用法:
- 动态增删工具,适应任务变化。
- 通过配置文件自动加载远程工具。
- 支持多语言 prompt,适应国际化场景。
实际案例:
- 自动化办公:批量处理文件、自动生成报告、网页数据抓取。
- 复杂流程:如“先用 Python 生成数据,再用浏览器上传”。
1.4 DataAnalysis
- 专为数据分析与可视化设计,集成 NormalPythonExecute、VisualizationPrepare、DataVisualization、Terminate 等工具。
- 支持自动识别数据格式、生成可视化图表、输出分析报告。
- 适合科研、商业分析、教育等场景。
高级用法:
- 可与 Manus 协作,完成“数据生成-分析-可视化-报告”全流程。
- 支持自定义数据处理工具扩展。
1.5 MCPAgent
- 专为远程工具调用设计,支持通过 MCP 协议(stdio/sse)动态获取和调用远程工具。
- 自动同步工具 schema,支持工具热插拔。
- 适合分布式、云原生、异构工具集成场景。
典型场景:
- 企业内部工具服务化,统一注册到 MCP Server,所有智能体可动态调用。
- 跨团队、跨云平台工具共享。
1.6 SWEAgent、BrowserAgent 等
- SWEAgent:自动化编程专家,集成 Bash、编辑器、Terminate 等工具,支持代码生成、修改、测试、调试等全流程。
- BrowserAgent:专注网页自动化,集成 BrowserUseTool,支持复杂表单填写、数据抓取、自动化测试等。
- 扩展方式:通过继承 ToolCallAgent,组合不同工具即可快速开发新型智能体。
2. 工具(Tool)体系
2.1 BaseTool
BaseTool 是所有工具的抽象基类,定义了工具的标准接口:
- 属性:name、description、parameters(参数schema,便于LLM自动生成调用参数)。
- 方法:
execute(**kwargs)为核心异步方法,所有工具需实现。 - to_param():自动生成OpenAI function call格式,便于与LLM对接。
设计哲学:
- 工具即“能力单元”,可被任意智能体复用。
- 参数schema化,便于LLM自动推理参数。
- 支持异步执行,适应高并发场景。
2.2 ToolCollection
- 工具集合类,支持批量注册、查找、按名称调用工具。
- 支持动态增删工具,便于远程扩展和热插拔。
execute(name, tool_input):按名称和参数调用指定工具。add_tool()/add_tools():支持单个或批量添加工具。
高级用法:
- 智能体可在运行时动态调整工具集,适应任务变化。
- 支持多来源工具(本地、MCP远程、第三方插件)。
2.3 常用工具详解
- PythonExecute/NormalPythonExecute:安全执行Python代码,支持沙箱隔离、输出捕获、异常处理。
- BrowserUseTool:基于 browser-use 库,支持网页自动化、元素交互、内容提取。
- StrReplaceEditor:高效字符串批量替换,适合文本处理、代码重构。
- Terminate:任务终止工具,支持流程中断、资源释放。
- AskHuman:人工协助工具,适合LLM无法解决的极端场景。
- MCPClientTool:远程工具代理,自动转发调用到MCP Server。
- DataVisualization/ChartPrepare:数据可视化与图表准备,支持多种图表类型。
2.4 MCPClients
- 继承自 ToolCollection,专为多MCP服务器场景设计。
- 支持多会话、多工具同步、断线重连、工具schema自动更新。
- 适合大规模分布式工具管理。
3. 流程(Flow)体系
3.1 BaseFlow
- 多智能体流程的抽象基类,统一管理智能体集合、主智能体、流程执行。
- 支持按需添加、查找、切换智能体。
- 关键方法:
execute(input_text),为所有流程的统一入口。
3.2 PlanningFlow
- 任务规划与分步执行的核心流程。
- 支持LLM自动生成任务计划(如“先A后B”),并分配给不同智能体。
- 每一步可根据类型、能力、负载等动态选择最优智能体。
- 支持流程中断、恢复、回溯、异常处理。
- 典型用法:复杂多阶段任务、跨领域协作、专家系统。
3.3 FlowFactory
- 流程工厂,支持按类型、参数动态创建不同流程。
- 便于扩展新流程类型(如对话流、审批流、数据流等)。
4. 配置与启动
config/目录下包含多种模型、MCP、沙箱等配置模板,支持一键复制与定制。config.toml支持 LLM API、MCP服务器、沙箱参数、多智能体等灵活配置。- 支持多环境(开发、测试、生产)切换。
- 通过
requirements.txt管理依赖,支持pip、uv、conda等多种安装方式。 - 配置项支持注释与多语言,便于国际化团队协作。
5. 沙箱(Sandbox)机制
- 基于 Docker 实现安全隔离的代码执行环境,支持内存、CPU、网络等资源限制。
app/sandbox/core/manager.py负责沙箱生命周期管理、并发控制、自动清理。app/sandbox/core/sandbox.py封装 Docker 容器操作、文件读写、命令执行,支持异步操作。- 工具如 PythonExecute、FileOperator 可选择在沙箱中安全执行,防止恶意代码危害主系统。
- 支持多沙箱并发、自动回收、异常隔离。
- 典型场景:自动化编程、数据分析、文件操作等高风险任务。
6. MCP 协议集成
- 支持通过 MCP 协议(Model Context Protocol)连接远程工具服务器,实现“工具即服务”。
app/agent/mcp.py、app/tool/mcp.py实现客户端,app/mcp/server.py实现服务端。- 支持 stdio/sse 两种通信方式,工具注册与调用自动化。
- 工具schema自动同步,支持热插拔与动态扩展。
- 适合企业级、云原生、分布式工具集成。
7. A2A 协议集成
protocol/a2a/app/实现 A2A 协议服务端,支持与 Google A2A 生态对接。- 可通过 A2A Client CLI 或 Web UI 远程调用 OpenManus 智能体。
- 支持 Agent Card、技能注册、任务分发、结果回传等全流程。
- 适合跨平台、跨系统、跨组织智能体协作。
(本节内容为核心模块分析,后续将继续扩充典型用法、最佳实践、性能优化、社区生态等章节。)
四、典型使用方法与例子
本章将详细介绍 OpenManus 在实际开发、科研、企业自动化等场景下的典型用法,涵盖从环境部署、配置定制、单智能体与多智能体协作、远程工具扩展、协议集成、沙箱安全、性能优化到常见问题排查等全流程。
1. 安装与环境准备
1.1 Conda 方式
适合科研、数据分析等依赖隔离需求强的场景。
conda create -n open_manus python=3.12
conda activate open_manus
git clone https://github.com/FoundationAgents/OpenManus.git
cd OpenManus
pip install -r requirements.txt
1.2 uv 方式(推荐)
适合追求极致安装速度和依赖一致性的开发者。
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/FoundationAgents/OpenManus.git
cd OpenManus
uv venv --python 3.12
source .venv/bin/activate
uv pip install -r requirements.txt
1.3 浏览器自动化依赖(可选)
如需网页自动化、爬虫、表单填写等功能,需安装 Playwright。
playwright install
1.4 配置 LLM、MCP、沙箱等
- 复制并编辑配置文件:
cp config/config.example.toml config/config.toml
# 编辑 config.toml,填写 OpenAI/Anthropic/Google API Key、MCP 服务器、沙箱参数等
- 典型配置片段:
[llm]
model = "gpt-4o"
base_url = "https://api.openai.com/v1"
api_key = "sk-..."
max_tokens = 4096
temperature = 0.0
[mcp]
server_reference = "app.mcp.server"
[runflow]
use_data_analysis_agent = true
- 沙箱配置建议:如需高安全性,建议开启沙箱、限制内存/CPU、关闭网络。
2. 快速启动与典型流程
2.1 单智能体模式
适合通用任务、快速测试、AI助手场景。
python main.py
# 输入任务描述,如“请用Python实现快速排序”
- 底层流程:main.py 解析输入,创建 Manus 智能体,自动选择工具,执行任务,输出结果。
- 进阶技巧:可通过
--prompt参数直接传入任务,便于脚本化集成。
2.2 多智能体协作模式
适合复杂任务分解、专家协作、流程自动化。
python run_flow.py
# 支持 Manus、DataAnalysis 等多智能体协作
- 底层流程:run_flow.py 通过 FlowFactory 创建 PlanningFlow,LLM 自动分解任务,分配给不同智能体,分步执行。
- 典型场景:如“先用 Python 生成数据,再用 DataAnalysis 可视化”。
- 参数定制:可在 config.toml 中配置参与协作的智能体类型、数量、优先级等。
2.3 MCP 工具模式
适合远程工具扩展、企业级工具服务化、云原生场景。
python run_mcp.py --connection stdio
# 或
python run_mcp.py --connection sse --server-url http://your-mcp-server/sse
- 底层流程:MCPAgent 连接 MCP Server,自动同步远程工具,支持热插拔。
- 典型场景:企业内部工具统一注册到 MCP Server,所有智能体可动态调用。
- 安全建议:生产环境建议开启认证、权限控制,防止未授权工具被调用。
2.4 A2A 协议服务端
适合跨平台、跨系统、跨组织智能体协作。
python -m protocol.a2a.app.main
# 通过 A2A Client CLI 或 Web UI 远程调用
- 底层流程:A2A Server 注册 Manus Agent,支持 Agent Card、技能注册、任务分发、结果回传。
- 典型场景:与 Google A2A 生态、第三方智能体平台互通。
- 进阶用法:可自定义 AgentCard、技能描述、输入输出模式,适应多样化需求。
3. 配置多智能体与流程定制
- 在
config.toml中灵活配置多智能体协作:
[runflow]
use_data_analysis_agent = true
# 可扩展更多自定义智能体
- 流程定制:可通过扩展 FlowFactory、PlanningFlow,支持审批流、对话流、数据流等多种业务流程。
- 智能体定制:继承 ToolCallAgent,组合不同工具,即可快速开发新型智能体。
4. 典型任务案例与进阶技巧
4.1 编程任务
- 输入:“请用 Python 实现快速排序。”
- 流程:Manus 智能体自动调用 PythonExecute 工具,生成代码,执行并返回结果。
- 进阶:可要求“请用 Python 和 JavaScript 各实现一遍”,系统可自动分配多智能体并行处理。
4.2 数据分析任务
- 输入:“请分析并可视化以下 CSV 数据。”
- 流程:DataAnalysis 智能体自动调用数据可视化工具,生成图表。
- 进阶:支持上传本地文件、自动识别数据格式、生成多种图表类型。
4.3 浏览器自动化
- 输入:“请自动登录某网站并抓取数据。”
- 流程:Manus 智能体自动调用 BrowserUseTool 工具,模拟浏览器操作。
- 进阶:支持多步表单填写、验证码处理、数据提取与结构化输出。
4.4 多步骤复杂任务
- 输入:“请先用 Python 生成数据,再用可视化工具画图。”
- 流程:PlanningFlow 自动分解任务,Manus 负责数据生成,DataAnalysis 负责画图。
- 进阶:支持流程中断、恢复、回溯,适合长链路任务。
4.5 远程工具调用与企业集成
- 场景:企业将内部工具(如审批、报表、自动化脚本)注册到 MCP Server,所有智能体可动态调用。
- 优势:工具服务化、权限可控、易于维护和扩展。
5. 性能优化与安全建议
- 异步并发:充分利用 Python 的 async/await,提升多任务处理能力。
- 沙箱隔离:高风险任务建议强制在沙箱中执行,限制资源、防止越权。
- 分布式部署:MCP/A2A 协议支持多节点协作,适合大规模企业应用。
- 日志与监控:建议开启详细日志,集成监控系统,便于问题追踪与性能分析。
- 权限与认证:生产环境建议对工具调用、智能体注册、协议通信等关键环节加密与认证。
6. 常见问题与解决方案
- 依赖冲突/安装失败:建议优先使用 uv 或 conda 管理环境,避免全局依赖污染。
- Docker/沙箱异常:检查 Docker 服务是否正常运行,沙箱配置是否正确。
- LLM API 限流/超时:合理设置 max_tokens、timeout,必要时更换 API Key 或升级套餐。
- 工具调用失败:检查参数格式、工具 schema 是否同步、MCP Server 是否可达。
- 多智能体协作死锁:合理设置最大步数、超时机制,避免死循环。
7. 进阶用法与最佳实践
- 自定义工具开发:继承 BaseTool,实现 execute 方法,注册到 ToolCollection 或 MCP Server。
- 多语言支持:可通过 prompt 多语言模板、配置多语言 LLM,适应全球用户。
- 插件化扩展:未来可通过插件机制,热插拔新工具、新智能体、新协议。
- 社区与生态:积极参与社区讨论、贡献代码、提交 issue/pull request,推动生态繁荣。
更多推荐


所有评论(0)