1. 为什么你的 OpenClaw Agent 需要一套工具策略刚接触 OpenClaw 的开发者常遇到一个尴尬场景Agent 明明只是帮你整理文档却突然调用exec跑了一条 shell 命令或者你只想让它查资料它却顺手把本地文件改了。问题不在模型而在工具边界没设好。OpenClaw 的工具策略系统就是解决这件事的。它允许你通过config.toml精细控制哪些工具可用、哪些禁用支持 Profile 预设、Allow/Deny 双向过滤、Provider 特定策略三层机制。简单说它决定了「模型能看到哪些工具」被过滤掉的工具根本不会发送给 Provider从源头掐断误调用。这套机制适合三类人一是刚跑通 OpenClaw、想给 Agent 加安全护栏的新手二是需要针对不同模型比如 GPT 和 Claude设置不同权限的团队三是做多 Agent 协作、要给每个 Agent 分配不同工具集的开发者。下面我从配置骨架讲到生效验证一步步把边界搭起来。2. TaoToken 前置把 Provider 调用通道准备好OpenClaw 的工具策略最终作用在 Provider 调用上所以你得先有一个能正常发起模型请求的通道。我用的是 TaoToken它提供 OpenAI 兼容接口接入 OpenClaw 只需要改 base_url 和 api_key 两处。先到控制台创建一个 API Key地址是 https://taotoken.net/api-keys 创建后复制保存页面只显示一次。然后在 OpenClaw 的 Provider 配置里填入[providers.taotoken] type openai-compatible base_url https://taotoken.net/api api_key sk-你的key default_model gpt-4o-mini这里base_url用https://taotoken.net/api不要加多余路径。type选openai-compatible是因为 TaoToken 的接口协议与 OpenAI 一致OpenClaw 能直接识别。如果你还没决定用哪个模型可以先到模型对话页 https://taotoken.net/models 试几条请求确认通道通畅再写进配置。长期跑编码类 Agent 的话Coding Plan 页面 https://taotoken.net/coding-plan 有更细的额度说明按需选即可。注意Provider 配置和工具策略是两个独立层。Provider 决定「请求发到哪」工具策略决定「请求里带哪些工具」。先把 Provider 跑通再叠加策略排障时能快速定位是哪一层的问题。3. 可复制的 config.toml 策略骨架下面这份配置是我实测能直接跑的骨架覆盖 Profile、Allow/Deny、byProvider 和 Agent 级覆盖四个层级。你可以整段复制后按注释改。# 全局工具策略 [tools] # 基础工具集coding 包含 fs/runtime/sessions/memory/image profile coding # 在 Profile 基础上额外放行 web 工具组 allow [group:web] # 但禁用 runtime 组exec/bash/process 这类危险命令 deny [group:runtime] # 针对特定 Provider 进一步收窄 [tools.byProvider] # 这个 Provider 只能用最小工具集 taotoken/gpt-4o-mini { profile minimal } # 这个 Provider 只保留文件系统和会话列表 taotoken/claude-3-5-sonnet { allow [group:fs, sessions_list] } # 循环检测防止 Agent 反复调用同一工具 [tools.loopDetection] enabled true warningThreshold 10 criticalThreshold 20 # Agent 级覆盖 [[agents.list]] id support [agents.list.tools] profile messaging allow [slack] [[agents.list]] id coder [agents.list.tools] deny [group:automation]几个关键点解释一下。profile coding是基础盘它自带group:fs、group:runtime、group:sessions、group:memory和image。我在allow里加了group:web所以最终可用工具是 coding 全集加上 web 组。但deny里的group:runtime优先级最高会把 exec、bash、process 三个工具全部剔除。byProvider的键支持两种写法provider或provider/model。我上面用的是taotoken/gpt-4o-mini这种精确到模型的格式这样同一个 Provider 下不同模型可以有不同策略。Provider 策略在 Profile 之后、Allow/Deny 之前应用所以它只能缩小范围不能扩大——这点很重要别指望用 byProvider 去放行 Profile 里没有的工具。Agent 级覆盖是最后一道。support这个 Agent 完全走 messaging 路线coder则禁掉了自动化工具。注意 Agent 级配置会重新走一遍上述规则不是简单叠加。4. 验证 Allow/Deny 是否真的生效配置写完不代表生效得实际发一次请求看工具列表。OpenClaw 提供了tools list子命令可以打印当前生效的工具集。openclaw tools list --agent coder --provider taotoken/gpt-4o-mini预期输出类似Active profile: coding Provider override: taotoken/gpt-4o-mini - minimal Allowed groups: group:fs, group:sessions, group:memory, image Denied tools: exec, bash, process Final tool count: 9如果Final tool count和你预期不符说明某一层策略没按你想的走。我踩过的坑是deny写成了denied配置静默忽略工具照样发出去。所以验证这一步不能省。再做一个反向验证临时把deny里的group:runtime注释掉重新跑一次tools list应该能看到exec、bash、process出现在可用列表里。确认后再改回来。这样你就亲眼看到 Allow/Deny 的开关效果了。如果你想直接看模型实际收到的工具定义可以加--verboseopenclaw tools list --agent coder --verbose它会打印每个工具的 name、description 和参数 schema。被 deny 的工具不会出现在这里因为它们在发送前就被过滤了。5. 本篇常见错排查报错一unknown profile coding说明 Profile 名称拼错了或者你的 OpenClaw 版本不支持该 Profile。可用值只有minimal、coding、messaging、full四个大小写不敏感但拼写要对。检查config.toml里profile字段的值。报错二工具数量比预期多最常见原因是deny和allow同时写了同一个工具你以为 deny 会赢但实际上如果 allow 用的是工具组、deny 用的是单个工具名匹配可能不完整。比如allow [group:fs]加deny [read]read 确实会被禁但write、edit还在。建议 deny 也用组名或者用*通配符先全禁再放行。报错三byProvider 不生效检查键的格式。taotoken和taotoken/gpt-4o-mini是两种不同粒度写错粒度会导致匹配不上。另外确认 Provider 名称和你在[providers.xxx]里定义的一致大小写敏感。报错四Agent 级配置被全局覆盖Agent 级策略是在全局之后应用的但它不能突破全局的 deny。如果全局deny [group:runtime]Agent 级再写allow [group:runtime]也没用deny 优先级最高。要放行就得改全局配置。报错五改了配置没重启OpenClaw 的工具策略在启动时加载改完config.toml需要重启进程。如果你用openclaw serve起的服务CtrlC后重新跑一次即可。6. 把策略接进你的工作流工具策略配好之后下一步是让它跟你的实际调用链配合起来。如果你主要做模型验证和调试可以直接在模型对话页发请求观察不同策略下模型的行为差异https://taotoken.net/models 。如果你要长期跑编码类 Agent建议把策略写进项目级的config.toml配合 Coding Plan 的额度一起管理https://taotoken.net/coding-plan 。接入文档里有完整的配置字段说明和更多示例遇到本篇没覆盖的字段可以去查https://taotoken.net/doc 。API Key 管理在控制台https://taotoken.net/api-keys 。Claude Code 相关的接入配置参考https://taotoken.net/claude-code 。最后留一个实用技巧把tools list的输出存成文件每次改策略后 diff 一下能快速看出哪一层动了。工具策略这东西改一次验证一次比事后排查省事得多。