往期推荐:
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
目录
tool/
├── __init__.py
├── base.py # 核心基类
├── bash.py # Bash命令执行工具
├── browser_use_tool.py # 浏览器操作工具
├── create_chat_completion.py # 结构化输出工具
├── file_saver.py # 文件保存工具
├── google_search.py # Google搜索工具
├── planning.py # 任务规划工具
├── run.py # 命令执行工具
├── str_replace_editor.py # 文本编辑工具
├── terminate.py # 终止工具
└── tool_collection.py # 工具集合管理
1. base.py - 核心基类
class BaseTool(ABC, BaseModel):
name: str # 工具名称
description: str # 工具描述
parameters: Optional[dict] # 工具参数定义
async def __call__(self, **kwargs) -> Any: # 调用入口
async def execute(self, **kwargs) -> Any: # 具体执行逻辑(抽象方法)
- 定义了所有工具的基类
- 包含工具的基本属性和执行方法
- 提供了 ToolResult 类用于返回结果
2. bash.py - Bash命令执行工具
class Bash(BaseTool):
name: str = "bash"
description: str = _BASH_DESCRIPTION
- 执行 bash 命令
- 支持长时间运行的命令
- 处理交互式命令
- 提供超时控制
3. browser_use_tool.py - 浏览器操作工具
class BrowserUseTool(BaseTool):
name: str = "browser_use"
- 提供浏览器自动化功能
- 支持导航、点击、输入文本等操作
- 可以获取页面内容、截图
- 管理多标签页
- 执行 JavaScript 代码
4. create_chat_completion.py - 结构化输出工具
class CreateChatCompletion(BaseTool):
name: str = "create_chat_completion"
- 创建结构化的完成输出
- 支持多种输出类型转换
- 处理复杂的数据结构
5. file_saver.py - 文件保存工具
class FileSaver(BaseTool):
name: str = "file_saver"
- 保存内容到本地文件
- 支持写入和追加模式
- 自动创建目录结构
6. google_search.py - Google搜索工具
class GoogleSearch(BaseTool):
name: str = "google_search"
- 执行 Google 搜索查询
- 返回搜索结果链接列表
- 可配置返回结果数量
- 异步执行避免阻塞
7. planning.py - 任务规划工具
class PlanningTool(BaseTool):
name: str = "planning"
- 创建和管理任务计划
- 支持步骤跟踪和状态更新
- 提供计划进度可视化
- 包含撤销功能
8. python_execute.py - Python代码执行工具
class PythonExecute(BaseTool):
name: str = "python_execute"
- 安全地执行 Python 代码
- 支持超时控制
- 捕获输出结果
- 限制执行环境
9. run.py - 命令执行工具
async def run(cmd: str, timeout: float | None = 120.0):
- 异步执行 shell 命令
- 提供超时控制
- 处理命令输出截断
10. str_replace_editor.py - 文本编辑工具
class StrReplaceEditor(BaseTool):
name: str = "str_replace_editor"
- 查看、创建和编辑文件
- 支持字符串替换
- 提供行插入功能
- 包含撤销编辑功能
11. terminate.py - 终止工具
class Terminate(BaseTool):
name: str = "terminate"
- 终止当前交互
- 支持成功/失败状态
- 用于结束任务执行
12. tool_collection.py - 工具集合管理
class ToolCollection:
def __init__(self, *tools: BaseTool):
self.tools = tools
self.tool_map = {tool.name: tool for tool in tools}
- 管理多个工具实例
- 提供工具的注册、获取、执行等功能
- 支持批量执行工具
这些工具共同构成了一个强大的工具集,可以:
- 执行系统命令
- 操作文件系统
- 进行网络搜索
- 自动化浏览器操作
- 执行 Python 代码
- 管理任务计划
- 处理文本编辑
每个工具都继承自 BaseTool 基类,遵循统一的接口规范,便于统一管理和使用。