nanobot 工具系统

上级索引:00-概览与索引 | 下一篇:02-记忆系统-Dream

🧰 内置工具清单

nanobot 在 agent/tools/ 目录下提供以下内置工具:

工具模块说明关键能力
filesystem.py文件系统操作读写文件、列目录、搜索内容
shell.pyShell 执行运行命令(含沙箱安全检查)
web.py网络工具网页抓取、搜索(含 SSRF 防护)
mcp.pyMCP 工具桥接入外部 MCP Server 提供的工具
cron.py定时任务创建/管理周期性任务
image_generation.py图像生成调用图像生成 API
self.py运行时自检查看自身状态、工具列表

🔄 工具调用机制

用户消息 → LLM 决策 → 生成 tool_call
  → AgentRunner 拦截并执行对应工具
  → 工具返回结果注入 context
  → LLM 基于结果继续生成
  → 循环直到无 tool_call 或达到迭代上限

🔒 安全控制

Shell 工具

shell 工具内置安全沙箱:

  • 默认限制在 workspace 目录内操作
  • 危险命令(如 rm -rf /)会被拦截
  • 可通过配置调整权限范围

Web 工具

  • 内置 SSRF(服务端请求伪造)检查,防止访问内网地址
  • 搜索结果自动去广告、提取正文

Workspace 策略

通过 security/workspace_policy.py 控制文件访问范围:

{}json
{
  "tools": {
    "workspacePolicy": "strict"
  }
}

🔌 自定义工具

继承 agent/tools/base.py 的 Tool 基类:

python
from nanobot.agent.tools.base import Tool
 
class MyTool(Tool):
    name = "my_tool"
    description = "这是我的自定义工具"
    
    async def execute(self, param: str) -> str:
        # 工具逻辑
        return f"结果: {param}"

放入 tools/ 目录或通过 Python entry points 注册后自动发现。

📝 实践记录

{{待填:各工具实测效果和使用场景}}


🔗 延伸阅读