第10章 Tools全景:OpenClaw能拿什么工具
🎯 本章目标:学完这章,你能了解Tools的能力边界,知道”它能帮我做什么”
⏱️ 预计时间:20分钟
📋 前置要求:已完成第3章(基础安装)
本章你将学会什么
Section titled “本章你将学会什么”- Tools 和 Skills 的区别(零件 vs 说明书)
- 如何先把工具“上锁”再放开(基础档位 / 放行名单 / 禁用名单)
- 官方工具全景(文件 / 运行时 / 网页 / 浏览器 / 消息 / 会话 / 节点)
- 高风险工具怎么安全用(exec / process / approvals / elevated)
- 子智能体与会话工具怎么配合
- 指令与插件如何影响工具能力
- 三套可直接抄的配置模板
10.1 Tools vs Skills:零件 vs 说明书
Section titled “10.1 Tools vs Skills:零件 vs 说明书”10.1.1 一个类比
Section titled “10.1.1 一个类比”把 OpenClaw 想成一个“会干活的实习生”:
- Tools(工具) = 它手里的“手和脚”(能做动作)
- Skills(技能) = 你给它的“工作SOP”(什么时候做、先后顺序)
- Agent = 执行者(根据 SOP 调用工具)
一句话:Tools 决定“能不能做”,Skills 决定“怎么做更稳”。
10.1.2 实际例子
Section titled “10.1.2 实际例子”你说:“帮我把今天的需求文档整理成 TODO”。
- 没有 Skills 时,Agent 可能临场发挥,步骤不稳定;
- 有 Skills 时,它会按固定流程:
read读文档edit提炼关键信息write写出 TODO 文件
10.1.3 为什么需要区分
Section titled “10.1.3 为什么需要区分”- 复用:同一个 Tool 可以被很多 Skills 复用
- 安全:你可以先禁掉高风险 Tool,再按需打开
- 可维护:换模型时,Skills 流程仍然可复用
10.2 先把护栏立好:基础档位 / 放行名单 / 禁用名单 / 按模型单独收紧
Section titled “10.2 先把护栏立好:基础档位 / 放行名单 / 禁用名单 / 按模型单独收紧”官方现在推荐的思路不是“先全开再补锅”,而是:
- 先选基础档位(
tools.profile) - 再用放行名单/禁用名单(
tools.allow/tools.deny)精细化 - 有需要再给某个模型单独加限制(
tools.byProvider)
10.2.1 tools.profile:一键选基础盘
Section titled “10.2.1 tools.profile:一键选基础盘”先说你最关心的:这个到底在哪里配置?
就一个位置:~/.openclaw/openclaw.json(你的 OpenClaw 主配置文件)。
你有两种改法:
- 命令行改(推荐):不容易改坏 JSON
- 手动改文件:直接打开
~/.openclaw/openclaw.json编辑(记得先备份)
先给你“直接能抄”的命令版:
# 设为 coding(开发常用)openclaw config set tools.profile "coding"
# 查看当前值openclaw config get tools.profile如果你运行上面命令提示 unknown command 'config',就走手动文件版(效果一样):
{ tools: { profile: "coding" }}改完后,重启一下 OpenClaw / Gateway,让配置生效(这是很多人最容易漏的一步)。
操作提醒(照做版):
- 先改配置;
- 再
openclaw gateway restart; - 最后用
openclaw status确认状态正常。
官方提供四档(按“从保守到开放”排序):
minimal:只保留最小能力(最稳)messaging:偏消息收发coding:偏开发(文件+运行时+会话+记忆+图像工具)full:不限制(新手不建议)
示例(全局用 coding,客服 agent 单独降成 messaging):
{ tools: { profile: "coding" }, agents: { list: [ { id: "support", tools: { profile: "messaging" } } ] }}10.2.2 allow/deny:白名单与黑名单
Section titled “10.2.2 allow/deny:白名单与黑名单”deny 优先级高于 allow。
你可以直接按“工具组”写,而不用一个个工具名手搓。
{ tools: { allow: ["group:fs", "group:web"], deny: ["group:runtime"] }}这段的含义很直白:能读写文件、能查网页,但不能跑命令。
还有 3 个很容易忽略的小细节(都来自官方):
- 匹配不区分大小写(
BROWSER和browser效果一样)。 - 支持通配符(例如
*代表全部工具)。 - 如果
tools.allow里只写了“当前未加载/不存在的插件工具名”,OpenClaw 会给警告并忽略这份 allowlist,避免把核心工具误伤到全不可用。
10.2.3 byProvider:给某个模型单独再加一层限制(可选)
Section titled “10.2.3 byProvider:给某个模型单独再加一层限制(可选)”同一套配置里,你可以针对特定模型进一步收紧工具范围:
{ tools: { profile: "coding", byProvider: { "openai/gpt-5.2": { profile: "minimal" } } }}用途:某个模型调用工具不稳定时,给它单独“少开一点权限”,减少误操作。
把它理解成:给某个模型单独加一把小锁,不影响其他模型。
10.3 官方工具全景地图(v2026.2.17)
Section titled “10.3 官方工具全景地图(v2026.2.17)”下面是你最常用的一组(按官方命名):
| 工具组 | 代表工具 | 你会怎么用 |
|---|---|---|
| 文件 | read write edit apply_patch | 改代码、改配置、批量补丁 |
| 运行时 | exec process | 跑测试、看日志、后台任务 |
| Web | web_search web_fetch | 查资料、抓文档正文 |
| 浏览器/UI | browser canvas | 自动化网页、截图、界面操作 |
| 消息 | message | 跨渠道发消息、读消息、做运营动作 |
| 会话 | sessions_list sessions_history sessions_send session_status | 查会话、转消息、跨会话协作 |
| 子智能体 | sessions_spawn agents_list | 并行跑任务,不堵主会话 |
| 自动化 | cron gateway | 定时任务、网关重启与配置应用 |
| 节点 | nodes | 发现节点、系统通知、远端命令 |
实战建议:第一个月你重点用 文件+Web+少量 exec 就够了,其他当“后备工具箱”。
10.3.1 group:* 是省心写法
Section titled “10.3.1 group:* 是省心写法”官方支持工具组简写(非常实用):
group:fs:文件工具group:runtime:执行与进程工具group:web:网页搜索与抓取group:ui:浏览器和画布group:messaging:消息工具group:sessions:会话工具group:automation:cron+gatewaygroup:nodes:nodesgroup:openclaw:全部内置工具(不含插件工具)
示例:
{ tools: { allow: ["group:fs", "group:web", "session_status"] }}补一条实用提醒:group:runtime 里还包含 bash(exec 的别名路径),所以你若要“彻底禁命令执行”,继续用 deny: ["group:runtime"] 是最省心的。
10.4 高风险区:exec / process / elevated / approvals
Section titled “10.4 高风险区:exec / process / elevated / approvals”10.4.1 exec + process 的正确打开方式
Section titled “10.4.1 exec + process 的正确打开方式”exec 负责执行命令,process 负责管理后台会话。
最容易踩坑的一点:是否在沙箱里执行。
官方要点(新手必须知道):
host=sandbox|gateway|node决定命令在哪跑security=deny|allowlist|full决定执行策略(拒绝 / 只放行名单 / 全放行)ask=off|on-miss|always决定审批策略- 需要交互式命令时,记得
pty: true yieldMs/background决定是否转后台,timeout控制超时自动终止
两个“看起来小、实际会坑人”的行为:
- 如果
process工具被禁用,exec会退回同步执行,yieldMs/background会被忽略。 - 官方明确写了:沙箱默认是关闭的。在这种情况下你写
host=sandbox,实际仍可能在网关主机执行,且不走审批。
所以“要强制审批”的场景,别偷懒,直接用host=gateway并配好 approvals。
10.4.2 approvals:别把“确认框”当麻烦
Section titled “10.4.2 approvals:别把“确认框”当麻烦”当你把 exec 放到 gateway/node 主机执行时,审批机制是关键护栏。
核心文件是:
~/.openclaw/exec-approvals.json
你可以重点理解其中 4 个策略位:
security:deny|allowlist|full(拒绝 / 仅放行名单 / 全放行)ask:off|on-miss|alwaysaskFallback:UI 不可达时是拒绝、按放行名单还是直接放行autoAllowSkills:是否自动信任 Skills 声明的可执行文件
你可以让操作员在聊天里审批:
/approve <id> allow-once/approve <id> allow-always/approve <id> deny操作提醒:先用“单次放行”(allow-once)观察效果,稳定后再考虑“长期放行”(allow-always)。
10.4.3 /elevated 与 /exec 指令
Section titled “10.4.3 /elevated 与 /exec 指令”这两个指令非常强,但也非常“锋利”:
/elevated on|off|ask|full/exec host=... security=... ask=...
这里要记住一个官方口径:
/elevated on与/elevated ask等价(都不强制security=full,审批仍生效)/elevated full才是“跳过审批”的模式
建议:默认别开 full,只在明确知道风险时临时开启。
10.5 会话工具与子智能体:让它并行干活
Section titled “10.5 会话工具与子智能体:让它并行干活”10.5.1 会话工具(sessions_*)
Section titled “10.5.1 会话工具(sessions_*)”这组工具解决的是“多会话协作”:
sessions_list:看当前有哪些会话sessions_history:拉某个会话历史sessions_send:往另一个会话发消息session_status:看当前会话状态sessions_spawn:起一个子智能体去并行做事
10.5.2 子智能体(Subagents)什么场景最香
Section titled “10.5.2 子智能体(Subagents)什么场景最香”当你有“慢任务 + 不想堵住主聊天”时,用子智能体最合适:
- 主会话继续聊天
- 子会话后台跑
- 跑完后自动回报结果
常用命令:
/subagents list/subagents spawn <agentId> <task>/subagents log <id>/subagents kill <id>成本提醒:每个子智能体都有自己的上下文与 token 计费,不是“免费分身”。
再补一条默认限制,避免你以为它能无限套娃:
- 默认
maxSpawnDepth=1(子智能体不能再生子智能体) - 需要编排型工作流时,改到
maxSpawnDepth=2就够用
10.6 指令系统与插件:第五部分最容易被低估的两块
Section titled “10.6 指令系统与插件:第五部分最容易被低估的两块”10.6.1 指令系统(Slash Commands)
Section titled “10.6.1 指令系统(Slash Commands)”官方文档里,这块内容非常多,但你先记住最常用 8 条:
/model:查/切模型/think:切思考强度/usage:看用量展示/status:看状态/skill:按名触发技能/approve:审批执行请求/subagents:管理子智能体/exec:会话级执行策略
命令系统再补两个关键规则:
- 大多数命令需要“单独一条消息、并且以
/开头”。 /think /verbose /elevated /exec /model这类属于 directives:- 单独发:会写入会话状态;
- 混在普通消息里:只对当前条生效,不持久化。
10.6.2 插件(Plugins)
Section titled “10.6.2 插件(Plugins)”插件是“可插拔扩展能力”,比如某些渠道和可选工具能力。
先看已加载插件:
openclaw plugins list安装插件(示例):
openclaw plugins install @openclaw/voice-call然后在配置里按 plugins.entries.<id>.config 配置,最后重启 Gateway。
官方还有两个重要边界:
- npm 安装只接受 registry 规范(包名 + 版本/tag),不接受 git/url/file 远程 spec。
- 插件依赖安装默认走
npm install --ignore-scripts(降低供应链脚本风险)。
10.6.3 ClawHub:Skills 的“应用商店+版本库”
Section titled “10.6.3 ClawHub:Skills 的“应用商店+版本库””如果你不想手工维护 Skills 仓库,直接用 ClawHub:
clawhub search "你的关键词"clawhub install <skill-slug>clawhub update --all适合小白的理解:把它当“技能市场”,负责发现、安装、升级;OpenClaw 在新会话里自动吃到这些 Skills。
10.7 新手三档配置模板(可直接抄)
Section titled “10.7 新手三档配置模板(可直接抄)”10.7.1 稳健入门档(推荐)
Section titled “10.7.1 稳健入门档(推荐)”{ tools: { profile: "coding", deny: ["group:runtime"] }}适合:刚上手,先避免误执行命令。
10.7.2 开发工作档(可控放开)
Section titled “10.7.2 开发工作档(可控放开)”{ tools: { profile: "coding", exec: { host: "sandbox" } }, approvals: { exec: { enabled: true, mode: "session" } }}适合:开始跑测试、构建,但仍保留审批兜底。
10.7.3 消息运营档
Section titled “10.7.3 消息运营档”{ tools: { profile: "messaging", allow: ["message", "session_status", "sessions_list"] }}适合:只做渠道机器人,不碰本地文件和命令执行。
- 先配
profile,再细化allow/deny,这是最稳路径。 exec能力很强,务必搭配审批(/approve)使用。sessions_spawn适合并行任务,但会单独计费。slash commands与plugins是第五部分的重要增量,不只是“可选玩具”。- 新手先用“稳健入门档”,跑通后再逐步放开。
下一步:第11章,学习使用现成的Skills。
- 把
tools.profile设为coding。 - 临时加一条
deny: ["group:runtime"],确认命令执行被拦住。 - 再去掉这条 deny,试一次小命令。
- 用
/status和/usage看状态与消耗。