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 | 仅会话状态查询 | 最严格限制 |
在配置文件里设置:
json5
json5
1{
2 agents: {
3 defaults: {
4 tools: {
5 profile: "messaging"
6 }
7 }
8 }
9}三、精细的 allow / deny 控制
如果预设档位不够用,可以手动指定允许或禁止的工具:
json5
json5
1{
2 tools: {
3 allow: ["group:fs", "group:web", "group:messaging"],
4 deny: ["group:runtime"]
5 }
6}规则:deny 永远优先于 allow。 如果同一个工具同时出现在 allow 和 deny 里,deny 生效。
可以混用工具组和具体工具名:
json5
json5
1{
2 tools: {
3 allow: ["group:fs", "web_search"], // 允许文件系统 + 单独允许搜索
4 deny: ["browser", "exec"] // 禁止浏览器控制和 Shell 执行
5 }
6}四、常见安全配置
场景一:只用于聊天,不执行任何操作
json5
json5
1{
2 tools: {
3 profile: "messaging"
4 }
5}Bot 只能发消息、管理会话,无法读写文件或执行命令。
场景二:允许读文件,但不允许写入
json5
json5
1{
2 tools: {
3 allow: ["read", "web_search", "group:messaging"],
4 deny: ["write", "edit", "apply_patch", "group:runtime"]
5 }
6}场景三:禁止 Shell 执行(保留其他能力)
json5
json5
1{
2 tools: {
3 deny: ["group:runtime"]
4 }
5}这是一个常见的折中配置:保留文件读写和联网能力,但禁止执行任意 Shell 命令。
场景四:分享给他人用,严格限制
json5
json5
1{
2 tools: {
3 allow: ["group:messaging", "web_search", "web_fetch"],
4 deny: ["group:fs", "group:runtime", "group:automation"]
5 }
6}只允许联网查询和发消息,不允许碰文件系统和执行命令。
五、运行安全审计
配置完之后,跑一遍安全检查:
bash
bash
1openclaw security audit它会检查:
- 工具权限是否过于宽松(尤其在多人使用时)
- Gateway 是否意外暴露到网络
- 配置文件权限是否正确
有问题会给出提示和修复建议。
六、注意事项
Shell 执行(group:runtime)是风险最高的工具组,开放后 Bot 可以在你的机器上执行任意命令。个人使用时没问题,但如果 Bot 对外开放(多人使用),强烈建议禁用:
json5
json5
1{
2 tools: {
3 deny: ["group:runtime"]
4 }
5}浏览器控制(browser) 同样需要谨慎,它允许 Bot 控制你的浏览器访问任意网页,存在 SSRF 风险。不需要的话可以单独禁用:
json5
json5
1{
2 tools: {
3 deny: ["browser"]
4 }
5}下一篇:多 Agent 配置——在同一台机器上运行多个不同用途的 Bot。