OpenManus代码详解(三):app/tool

请添加图片描述

往期推荐:

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 基类,遵循统一的接口规范,便于统一管理和使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值