nanobot 工具系统
上级索引:00-概览与索引 | 下一篇:02-记忆系统-Dream
🧰 内置工具清单
nanobot 在 agent/tools/ 目录下提供以下内置工具:
| 工具模块 | 说明 | 关键能力 |
|---|---|---|
filesystem.py | 文件系统操作 | 读写文件、列目录、搜索内容 |
shell.py | Shell 执行 | 运行命令(含沙箱安全检查) |
web.py | 网络工具 | 网页抓取、搜索(含 SSRF 防护) |
mcp.py | MCP 工具桥 | 接入外部 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 注册后自动发现。
📝 实践记录
{{待填:各工具实测效果和使用场景}}