OpenClaw 的 Agent 可以调用很多工具:读写文件、执行 Shell 命令、控制浏览器、发送消息……这些能力很强大,但不是所有场景都需要全部开放。这篇讲怎么精确控制 Bot 能用哪些工具。
一、工具系统概览
OpenClaw 内置了以下工具类别:
| 工具组 | 包含能力 |
|---|---|
group:fs | 读写文件、编辑文件 |
group:web | 网页抓取、联网搜索、浏览器控制 |
group:runtime | 执行 Shell 命令、运行进程 |
group:sessions | 管理会话、子 Agent 控制 |
group:memory | 记忆和上下文工具 |
group:messaging | 跨 Channel 发消息 |
group:automation | Cron 定时任务、Webhook |
group:ui | UI 交互工具 |
group:nodes | 节点和工作流工具 |
默认情况下,Agent 有完整的工具访问权限(full 档位)。
二、四个预设档位
不想逐条配置?用预设档位是最快的方式:
| 档位 | 包含内容 | 适合场景 |
|---|---|---|
full | 所有工具(默认) | 个人使用、完全信任环境 |
coding | 文件系统 + 运行时 + 会话 + 记忆 + 图像 | 开发辅助场景 |
messaging | 消息发送 + 会话管理 | 纯聊天机器人 |
minimal | 仅会话状态查询 | 最严格限制 |
在配置文件里设置:
{
agents: {
defaults: {
tools: {
profile: "messaging"
}
}
}
}
三、精细的 allow / deny 控制
如果预设档位不够用,可以手动指定允许或禁止的工具:
{
tools: {
allow: ["group:fs", "group:web", "group:messaging"],
deny: ["group:runtime"]
}
}
规则:deny 永远优先于 allow。 如果同一个工具同时出现在 allow 和 deny 里,deny 生效。
可以混用工具组和具体工具名:
{
tools: {
allow: ["group:fs", "web_search"], // 允许文件系统 + 单独允许搜索
deny: ["browser", "exec"] // 禁止浏览器控制和 Shell 执行
}
}
四、常见安全配置
场景一:只用于聊天,不执行任何操作
{
tools: {
profile: "messaging"
}
}
Bot 只能发消息、管理会话,无法读写文件或执行命令。
场景二:允许读文件,但不允许写入
{
tools: {
allow: ["read", "web_search", "group:messaging"],
deny: ["write", "edit", "apply_patch", "group:runtime"]
}
}
场景三:禁止 Shell 执行(保留其他能力)
{
tools: {
deny: ["group:runtime"]
}
}
这是一个常见的折中配置:保留文件读写和联网能力,但禁止执行任意 Shell 命令。
场景四:分享给他人用,严格限制
{
tools: {
allow: ["group:messaging", "web_search", "web_fetch"],
deny: ["group:fs", "group:runtime", "group:automation"]
}
}
只允许联网查询和发消息,不允许碰文件系统和执行命令。
五、运行安全审计
配置完之后,跑一遍安全检查:
openclaw security audit
它会检查:
- 工具权限是否过于宽松(尤其在多人使用时)
- Gateway 是否意外暴露到网络
- 配置文件权限是否正确
有问题会给出提示和修复建议。
六、注意事项
Shell 执行(group:runtime)是风险最高的工具组,开放后 Bot 可以在你的机器上执行任意命令。个人使用时没问题,但如果 Bot 对外开放(多人使用),强烈建议禁用:
{
tools: {
deny: ["group:runtime"]
}
}
浏览器控制(browser) 同样需要谨慎,它允许 Bot 控制你的浏览器访问任意网页,存在 SSRF 风险。不需要的话可以单独禁用:
{
tools: {
deny: ["browser"]
}
}