OpenManus:开源通用 AI Agent 框架
仓库: https://github.com/FoundationAgents/OpenManus | 许可证: MIT | 语言: Python 3.12+

本章概览
- OpenManus 是什么:无需邀请码的开源 AI Agent 框架
- 项目背景:为什么需要 OpenManus
- 核心特性:多工具协作、浏览器自动化、MCP 支持
- 技术栈:Python + Pydantic + OpenAI API + Playwright
- 适用场景:自动化任务、数据分析、Web 交互
1. 项目背景
1.1 什么是 AI Agent?
通俗比喻:想象你有一个超级智能的私人助理,它不仅能理解你的需求,还能主动使用各种工具来完成任务——上网搜索、编写代码、操作浏览器、处理文件。这就是 AI Agent。
传统 AI 助手:你问 → 它答 → 结束
AI Agent:你提需求 → 它思考 → 选择工具 → 执行操作 → 观察结果 → 继续迭代 → 完成任务AI Agent 是一种能够自主完成复杂任务的智能系统,它具备以下特点:
- 自主性:能够独立做出决策,不需要人工干预每一步
- 工具使用:可以调用各种外部工具(搜索、代码执行、浏览器等)
- 迭代推理:通过 "思考-行动-观察" 循环不断优化结果
- 记忆能力:保持上下文,记住之前的对话和操作
1.2 Manus 与 OpenManus
2025 年初,一款名为 Manus 的 AI Agent 产品引起了广泛关注。它展示了令人惊叹的自动化能力——可以自主浏览网页、编写代码、处理数据。然而,Manus 需要邀请码才能使用,这限制了普通开发者的体验。
OpenManus 应运而生。它由 MetaGPT 团队的核心成员在短短 3 小时内开发出原型,旨在提供一个开源、免费、无需邀请码的替代方案。
Manus(闭源) OpenManus(开源)
│ │
├── 需要邀请码 ├── 无需邀请码
├── 商业产品 ├── MIT 开源许可
├── 功能封闭 ├── 可自由定制扩展
└── 依赖官方服务 └── 本地部署,数据自主1.3 为什么选择 OpenManus?
| 特性 | 传统 LLM API | OpenManus |
|---|---|---|
| 任务执行 | 只能回答问题 | 能主动执行任务 |
| 工具调用 | 需要手动集成 | 内置多种工具 |
| 浏览器操作 | 不支持 | 原生支持 |
| 多步骤任务 | 需要用户协调 | 自动分解执行 |
| 扩展性 | 受限于 API | 支持 MCP 协议扩展 |
2. 核心特性
2.1 多工具协作系统
OpenManus 内置了丰富的工具集,Agent 可以根据任务需求自动选择合适的工具:
python
# OpenManus 内置工具一览
available_tools = [
PythonExecute(), # 执行 Python 代码
BrowserUseTool(), # 浏览器自动化操作
StrReplaceEditor(), # 文件编辑器
WebSearch(), # 网络搜索
AskHuman(), # 询问用户
Terminate(), # 终止任务
]工具协作示例:假设用户要求 "帮我查找最新的 Python 版本并创建一个测试脚本":
mermaid
graph LR
A[用户请求] --> B[WebSearch: 搜索 Python 版本]
B --> C[BrowserUseTool: 访问官网确认]
C --> D[PythonExecute: 测试代码]
D --> E[StrReplaceEditor: 保存脚本]
E --> F[返回结果]2.2 浏览器自动化
基于 browser-use 库,OpenManus 能够像人一样操作浏览器:
- 导航到指定 URL
- 点击按钮和链接
- 填写表单
- 滚动页面
- 提取网页内容
- 管理多个标签页
python
# 浏览器操作示例
actions = [
"go_to_url", # 访问 URL
"click_element", # 点击元素
"input_text", # 输入文本
"scroll_down", # 向下滚动
"extract_content", # 提取内容
"web_search", # 网页搜索
]2.3 MCP 协议支持
Model Context Protocol (MCP) 是一种让 AI Agent 连接外部服务的标准协议。OpenManus 支持通过 MCP 扩展功能:
┌─────────────────────────────────────────────┐
│ OpenManus Agent │
├─────────────────────────────────────────────┤
│ 内置工具 MCP 工具 │
│ ├── PythonExecute ├── 数据库连接 │
│ ├── BrowserUseTool ├── 文件系统 │
│ ├── WebSearch ├── 第三方 API │
│ └── ... └── 自定义服务 │
└─────────────────────────────────────────────┘2.4 Planning Flow(规划流程)
对于复杂任务,OpenManus 提供了规划执行模式:
- 创建计划:将大任务分解为可执行的步骤
- 逐步执行:按顺序或并行执行各个步骤
- 状态跟踪:实时监控每个步骤的完成状态
- 智能调度:根据步骤类型选择合适的执行器
python
# 计划步骤状态
class PlanStepStatus(Enum):
NOT_STARTED = "not_started" # [ ] 未开始
IN_PROGRESS = "in_progress" # [→] 进行中
COMPLETED = "completed" # [✓] 已完成
BLOCKED = "blocked" # [!] 被阻塞3. 技术栈概览
3.1 核心依赖
| 组件 | 用途 | 说明 |
|---|---|---|
| Python 3.12+ | 运行环境 | 使用最新语法特性 |
| Pydantic | 数据验证 | 类型安全的配置管理 |
| OpenAI API | LLM 调用 | 支持 GPT-4o 等模型 |
| Playwright | 浏览器自动化 | 跨平台浏览器控制 |
| browser-use | 浏览器工具 | 高级浏览器操作封装 |
| MCP SDK | 协议支持 | 连接外部 MCP 服务 |
| tiktoken | Token 计数 | 精确计算 token 用量 |
3.2 项目结构
OpenManus/
├── app/ # 核心应用代码
│ ├── agent/ # Agent 实现
│ │ ├── base.py # 基础 Agent 抽象类
│ │ ├── react.py # ReAct 模式 Agent
│ │ ├── toolcall.py # 工具调用 Agent
│ │ └── manus.py # 主 Agent 实现
│ ├── tool/ # 工具集
│ │ ├── base.py # 工具基类
│ │ ├── browser_use_tool.py
│ │ ├── python_execute.py
│ │ └── ...
│ ├── flow/ # 执行流程
│ │ ├── base.py # 流程基类
│ │ └── planning.py # 规划执行流程
│ ├── prompt/ # 提示词模板
│ ├── llm.py # LLM 封装
│ ├── schema.py # 数据模型定义
│ └── config.py # 配置管理
├── config/ # 配置文件
│ ├── config.example.toml # 配置示例
│ └── mcp.json # MCP 服务配置
├── main.py # 主入口
├── run_flow.py # 规划模式入口
└── run_mcp.py # MCP 模式入口4. 适用场景
4.1 自动化研究任务
用户:"帮我调研 2024 年最热门的 AI Agent 框架"
OpenManus 执行流程:
1. WebSearch: 搜索 "AI Agent frameworks 2024"
2. BrowserUseTool: 访问多个技术博客和 GitHub
3. 提取并整理信息
4. 生成对比报告4.2 数据分析与可视化
用户:"分析这个 CSV 文件并生成图表"
OpenManus 执行流程:
1. StrReplaceEditor: 读取 CSV 文件
2. PythonExecute: 使用 pandas 分析数据
3. PythonExecute: 使用 matplotlib 生成图表
4. 返回分析结论和图表4.3 Web 表单自动化
用户:"帮我在这个网站上填写注册表单"
OpenManus 执行流程:
1. BrowserUseTool: 导航到注册页面
2. BrowserUseTool: 逐个填写表单字段
3. BrowserUseTool: 点击提交按钮
4. 确认注册成功4.4 代码生成与调试
用户:"写一个爬虫程序抓取新闻标题"
OpenManus 执行流程:
1. 分析需求,设计代码结构
2. PythonExecute: 编写爬虫代码
3. 测试运行,调试错误
4. StrReplaceEditor: 保存最终代码5. 阅读指南
本教程将带你深入理解 OpenManus 的设计与实现:
| 章节 | 内容 | 你将学到 |
|---|---|---|
| 22.2 架构设计 | 整体架构与模块划分 | Agent 分层设计理念 |
| 22.3 核心概念 | Agent、Tool、Memory | 关键抽象的设计原理 |
| 22.4 实现细节 | 源码解析 | 如何实现工具调用和状态管理 |
| 22.5 使用指南 | 安装配置与使用 | 快速上手实践 |
| 22.6 总结展望 | 优劣势分析与未来方向 | 深入思考与扩展建议 |
6. 快速体验
6.1 环境准备
bash
# 克隆仓库
git clone https://github.com/FoundationAgents/OpenManus.git
cd OpenManus
# 创建虚拟环境(推荐使用 uv)
uv venv --python 3.12
source .venv/bin/activate
# 安装依赖
uv pip install -r requirements.txt
# 可选:安装浏览器驱动
playwright install6.2 配置 API Key
bash
# 复制配置模板
cp config/config.example.toml config/config.toml
# 编辑配置文件,填入你的 API Keytoml
# config/config.toml
[llm]
model = "gpt-4o"
base_url = "https://api.openai.com/v1"
api_key = "sk-..." # 替换为你的 API Key
max_tokens = 4096
temperature = 0.06.3 运行你的第一个 Agent
bash
# 启动 OpenManus
python main.py
# 输入你的任务
Enter your prompt: 帮我搜索今天的科技新闻下一章:22.2 架构设计 - 深入理解 OpenManus 的分层架构设计