任旭AI
OpenClaw 专题

OpenClaw Tools:为什么 Tools 不等于 Skill,也不等于“全开更强”

很多人第一次看 OpenClaw,会把 Tools 理解成“给 Agent 多装一些功能按钮”。这其实不够准确。Tools 更像 Agent 真正可以伸手碰到现实世界的接口:读文件、发消息、联网抓取、执行命令、调浏览器、写文档。也正因为它们真的能动系统、动数据、动外部世界,所以 Tools 从来不是“开得越多越好”,而是应该按信任边界和任务范围谨慎开放。

Tool 是执行接口 Skill 是经验封装 安全默认应收紧 需要时再精确放开

为什么 Tools 很难一下讲明白

因为它混在了三个层次里:一层是“模型会不会调用”,一层是“系统允不允许它调用”,还有一层是“就算允许,调用到什么范围为止”。大多数误解,都出在把这三层混成一句话:“这个 Agent 有没有工具能力?”

第一层:模型层

模型知道有哪些工具,什么时候应该调用它们,参数怎么组织。

第二层:权限层

OpenClaw 的策略决定这些工具当前是否可用,是否要审批,是否只允许某些路径或某些命令。

第三层:运行边界

即使工具打开了,它也可能只能在工作区里读文件,只能访问 allowlist 命令,或者只能在沙箱里跑。

第四层:任务方法

Skill 决定的是“怎么用这些工具把事做对”,不是简单给一个按钮。

Tool 和 Skill 到底有什么区别

一句话说清:Tool 是手,Skill 是手法。

  • Tool:原子能力接口,比如 readexecweb_searchbrowsermessage
  • Skill:围绕某类任务的一整套工作方法,比如网页诊断、文档生成、天气查询、长任务管理。
  • 同一个 Skill 往往会调多个 Tool;而同一个 Tool 可以被不同 Skill 复用。
所以 Tools 页应该单独存在,因为它解释的是“系统能碰到什么”;而 Skill 页解释的是“系统怎么把经验结构化”。这两页不能混成一页。

最常见的 Tools,可以这样理解

文件类

read / write / edit:读写工作区文件,是最基础也最容易被忽视的生产力能力。

命令类

exec / process:真正去跑 shell 命令、查看后台进程、管理长任务,是高风险能力。

联网类

web_search / web_fetch:搜索与抓取网页,适合做外部信息补充,但同样要防注入与误导。

浏览器类

browser / canvas:直接操作网页和可视界面,能力强,但暴露面也更大。

通信类

message:发消息、回消息、反应、线程回复。它不是“输出文本”而是“真正触达外部世界”。

平台集成类

如 Feishu doc/drive/wiki、Bitable、memory、session orchestration 等,往往带有具体平台语义。

为什么安全上默认要收紧

因为 Tools 一旦打开,不再只是“聊天”。它会把模型的判断延伸到命令执行、文件改写、浏览器操作、外部发送、真实系统状态改变。OpenClaw 官方安全文档明确把它定义为个人助理信任模型:一个网关默认服务一个信任边界,而不是给互不信任的人共用一套强工具权限。

关键安全理解:如果多个不完全可信的人能驱动同一个带工具权限的 Agent,本质上他们是在共享同一套被委托出去的系统能力。会话隔离能保护上下文,不等于能自动实现严格的权限隔离。

结合 OpenClaw 文档和当前版本设计,可以把默认收紧理解成三层:

  • 入口收紧:DM pairing、allowlist、groupPolicy,不是谁都能直接叫醒 Agent。
  • 工具收紧:高风险工具需要审批、allowlist、沙箱或宿主策略配合,尤其是 exec
  • 环境收紧:推荐一个 trust boundary 一个 gateway/host,不鼓励混合信任的大共享部署。

从安全角度看,当前版本默认会收紧哪些东西

这里我不写成“绝对所有版本都完全一致”的口吻,而是按当前官方文档能确认的方向说明:

  • exec 不是只改 tools.exec.* 就万事大吉。主机侧还有单独的 ~/.openclaw/exec-approvals.json 作为可执行来源约束,主机 approvals file 才是最终可执行真相的一部分。
  • Node / host exec 是最高风险能力之一。官方形式化安全模型明确把 node exec pipeline 作为最高风险路径来建模,要求命令 allowlist、声明命令以及审批令牌协同工作。
  • 群组与 DM 默认更偏向 allowlist / pairing。例如 Feishu、IRC、Slack、BlueBubbles 等文档里,大量默认项都是 allowlist 或 pairing,而不是完全开放。
  • 一些交互能力默认关闭。例如 Slack 原生 interactive reply controls 默认关闭;某些 channel-native approvals 或高级交互能力也需要显式启用。
  • workspace hooks 默认关闭。CLI 文档明确写了 workspace hooks 默认 disabled,避免一上来就让文件变化自动触发复杂动作。
  • OpenClaw 鼓励最小权限与安全审计。openclaw security audit 会专门检查开放 group policy、开放 gateway auth、过宽 exec approvals、开放工具暴露等常见脚枪。
更直白地说:OpenClaw 最新方向不是“默认把所有 tools 都打开”,而是“默认先假设你不该轻易给聊天机器人碰命令执行、公开群聊、开放宿主机和个人数据”。

需要时怎么打开,才算相对稳妥

1)先看策略,不要只看页面开关

尤其是 exec,很多人看到 dashboard 或配置里设成 security: fullask: off,以为就结束了。实际上根据官方 approvals 文档,主机上的 approvals file 仍然会参与最终生效结果。

openclaw approvals get openclaw approvals get --gateway openclaw exec-policy show

2)先做审计,再做放开

openclaw security audit openclaw security audit --deep

这一步不是形式主义。它能帮你先看到:是不是 group policy 开太大了、gateway auth 太松了、sandbox 没开、browser 暴露面太宽了、exec approvals 过于宽松了。

3)只对需要的能力做精确放开

  • 要让本机命令更少弹审批:优先调 openclaw approvalsopenclaw exec-policy,而不是粗暴全开所有工具。
  • 要开放群聊:优先 allowlist 指定 sender / group,不要直接 open 给所有人。
  • 要发本地媒体:优先配置明确的 local roots,而不是让任意绝对路径都能发。
  • 要启用交互按钮:明确只在可信 DM 或指定群组里开。

4)如果一定要 YOLO,至少知道自己在牺牲什么

官方 approvals 文档确实提供了 full + off 的“never prompt / YOLO” 方式,但它的含义是:这个 host 基本不再因 exec 审批拦你。对单人、本机、可控环境可以接受;对共享环境、公开入口、高价值主机就不合适。

OpenClaw 首页里应该怎么说明 Tools

首页不该直接把 Tools 解释成“系统很多插件”。更合适的说法应该是:

Tools 是 OpenClaw 把 Agent 接到现实世界的接口层。它决定 Agent 能不能读文件、上网、发消息、开浏览器、执行命令,也因此决定了这个系统真正的能力边界与风险边界。理解 OpenClaw,不能只看 Agent 和 Skill,也要看 Tools 如何被限制、审批与放开。

最后总结

如果把 OpenClaw 比作一个人:

  • Agent 是这个人;
  • Memory / Workspace 是他的记忆与工作台;
  • Skill 是他形成的方法论;
  • Tools 则是他真正能拿起来干活的手和器具。

也正因此,Tools 既最强,也最需要被解释清楚、被单独管理清楚。