往期推荐:
1. OpenManus架构解析
2. OpenManus代码详解(一):app/agent
3. OpenManus代码详解(二):app/flow
4. OpenManus代码详解(三):app/tool
5. OpenManus代码详解(四):app/schema.py
6. OpenManus代码详解(五):app/tool/planning.py
7. OpenManus代码详解(六):代码调用流程
官方地址:https://github.com/mannaandpoem/OpenManus
1.目录结构
OpenManus/
├── app/ # 核心应用代码
│ ├── agent/ # 智能体相关实现
│ ├── flow/ # 工作流程实现
│ ├── prompt/ # 提示词模板
│ ├── tool/ # 工具集实现
│ ├── llm.py # LLM 集成实现
│ ├── config.py # 配置管理
│ └── schema.py # 数据模型定义
├── config/ # 配置文件目录
├── static/ # 静态资源文件
├── templates/ # 模板文件
├── examples/ # 示例代码
└── logs/ # 日志文件
2. 主要组件
a. Web 服务层
- 使用 FastAPI 框架提供 RESTful API
- 支持 CORS 跨域请求
- 提供 WebSocket/SSE 实时通信功能
- 集成 Jinja2 模板引擎
b. 任务管理系统
- TaskManager 类负责管理任务的生命周期
- 支持任务的创建、更新、完成和失败处理
- 实现了异步任务处理机制
c. LLM 集成
- 支持配置不同的 LLM 模型(如 GPT-4)
- 通过 config.toml 进行 API 配置
- 支持视觉模型配置
d. 工具系统
- 位于 app/tool 目录
- 提供各种工具供智能体使用
- 可扩展的工具集架构
e. 智能体系统
- 位于 app/agent 目录
- 实现智能体的核心逻辑
- 支持思考(think)和行动(action)机制
3. 核心组件功能
a. 智能体系统 (agent/)
-
base.py: 定义了基础智能体类 BaseAgent
○ 状态管理:使用 AgentState 枚举管理智能体状态
○ 内存系统:通过 Memory 类管理对话历史
○ 执行控制:实现了 run() 和 step() 方法控制执行流程
○ 最大步数限制和重复检测机制 -
专门化智能体实现:
○ manus.py: Manus 特定实现
○ planning.py: 规划型智能体
○ react.py: ReAct 模式智能体
○ swe.py: 软件工程师智能体
○ toolcall.py: 工具调用智能体
b. 工具系统 (tool/)
-
base.py: 定义了基础工具类 BaseTool 和结果类 ToolResult
○ 统一的工具接口:execute() 方法
○ 参数化配置:支持工具描述和参数定义
○ 结果处理:标准化的工具执行结果处理 -
具体工具实现:
○ bash.py: 命令行工具
○ browser_use_tool.py: 浏览器操作工具
○ create_chat_completion.py: LLM 对话工具
○ file_saver.py: 文件保存工具
○ google_search.py: 搜索工具
○ planning.py: 规划工具
○ python_execute.py: Python 代码执行工具
○ str_replace_editor.py: 文本编辑工具
4. 执行流程
4.1. 初始化阶段
- 加载配置(config.py)
- 初始化 LLM 连接(llm.py)
- 创建智能体实例(agent/)
- 准备工具集(tool/)
4.2. 运行阶段
- 用户输入处理
- 智能体状态更新
- 执行步骤(step):
○ 思考(Think)
○ 选择工具(Tool Selection)
○ 执行工具(Tool Execution)
○ 更新记忆(Memory Update) - 检查终止条件
- 返回结果
4.3. 工具调用流程
- 工具选择:基于当前任务选择合适的工具
- 参数准备:根据工具定义准备参数
- 执行调用:通过 execute() 方法执行工具
- 结果处理:处理 ToolResult 并更新智能体状态
5.关键特性
5.1. 状态管理
- 使用上下文管理器 state_context 管理状态转换
- 支持 IDLE、THINKING、EXECUTING 等状态
- 实现状态检查和异常处理
5.2. 内存系统
- 支持多种消息类型:user、system、assistant、tool
- 实现消息历史管理
- 支持记忆检索和更新
5.3. 工具抽象
- 统一的工具接口
- 可扩展的工具系统
- 标准化的结果处理
- 支持同步和异步操作
5.4. 错误处理
- 工具执行错误处理
- 状态异常检测
- 重复操作检测
- 最大步数限制
5.5. 扩展性设计
- 模块化的智能体系统
- 可插拔的工具系统
- 灵活的配置管理
- 标准化的接口定义
这个系统采用了现代化的 Python 异步编程模式,使用 Pydantic 进行数据验证,实现了一个灵活且可扩展的智能体框架。系统的核心是智能体和工具的交互,通过状态管理和内存系统来协调整个执行流程。