首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OpenClaw Tools 深度解析:20+ 工具 × 3 层防护,让你的小龙虾安全地"动手动脚"

OpenClaw Tools 深度解析:20+ 工具 × 3 层防护,让你的小龙虾安全地"动手动脚"

作者头像
运维有术
发布2026-04-01 19:03:09
发布2026-04-01 19:03:09
3290
举报
文章被收录于专栏:运维有术运维有术

🚩 2026 年「术哥无界」系列实战文档 X 篇原创计划 第 30 篇,OpenClaw最佳实战「2026」系列第 12 篇 大家好,欢迎来到 术哥无界 | ShugeX | 运维有术。 我是术哥,一名专注于 AI 编程、AI 智能体、Agent Skills、MCP、云原生、Milvus 向量数据库的技术实践者与开源布道者Talk is cheap, let's explore。无界探索,有术而行。

OpenClaw Tools 体系全貌
OpenClaw Tools 体系全貌

图1:OpenClaw Tools 体系全貌

💡 为什么叫"小龙虾"?OpenClaw 的 Claw 意为"钳子",像极了小龙虾的大钳子,故得此名。

从一个真实的开发场景说起

上周有个需求:每天早上自动抓取竞争对手网站的价格变动,生成报告发到公司群。传统做法是写个 Python 脚本,配合 Selenium + 定时任务。但我当时就想——这种重复性工作,为什么不能让 AI 直接搞定?

当我用 OpenClaw 配置完整个流程后,说实话有点意外:整个过程没写一行代码,只是用自然语言描述了需求,AI 就自己打开浏览器、抓数据、发消息。更关键的是,它能处理登录、验证码这些我原本以为会卡住的环节。

这让我开始好奇:OpenClaw 的 Tools 体系到底是怎么设计的?为什么 AI 能如此顺畅地操作浏览器、执行命令?它的安全机制靠谱吗?带着这些问题,我翻阅了大量官方文档和源码,整理了这篇文章。

Tools 是什么?AI 智能体的能力层

Tools 架构图
Tools 架构图

图2:Tools 在 OpenClaw 体系中的位置

一句话定义:Tools 是 OpenClaw 智能体直接操作外部世界的标准化接口

传统 AI 助手的能力很有限——你问它问题,它只能给你文本回答。但 OpenClaw 的智能体不一样,它能:

  • 打开浏览器、点击按钮、填写表单
  • 在你的电脑上执行命令
  • 搜索网络、抓取网页内容
  • 读写文件、发送消息
  • 控制外部设备(摄像头、打印机、扫地机器人...)

这些能力的实现,都依赖于 Tools 体系。

Tools vs Skills:能力与知识

很多开发者会混淆 Tools 和 Skills,这里说清楚:

概念

作用

类比

Tools

智能体能调用的功能单元

程序员的"工具箱"

Skills

指导智能体如何使用工具的提示词

程序员的"操作手册"

举个栗子:browser 是一个 Tool,它提供了打开标签页、截图、点击等能力。但智能体怎么知道"购物网站需要先登录再下单"?这些操作流程的指导,就是通过 Skills 配置的。

类型化设计:告别 Shell 注入

OpenClaw 的 Tools 有个关键设计:所有工具都是强类型的

代码语言:javascript
复制
// 传统方式(危险):通过 shell 调用
// 容易被注入攻击
exec(`git commit -m "${message}"`)

// OpenClaw 方式(安全):类型化工具调用
{
  "tool": "exec",
  "params": {
    "command": "git commit -m {{message}}",
    "security": "allowlist"
  }
}

这个设计解决了两个问题:

  1. 安全性:参数经过类型校验,避免命令注入
  2. 可预测性:每个工具的输入输出都有明确的结构定义

10 大工具组:从文件操作到设备控制

OpenClaw 把工具分为 10 大组,每组负责一类任务:

10 大工具组分类
10 大工具组分类

图3:10 大工具组分类概览

工具组

包含工具

典型场景

group:runtime

exec, bash, process

执行 Shell 命令、管理后台进程

group:fs

read, write, edit, apply_patch

文件读写、代码编辑

group:sessions

sessions_spawn, sessions_send

子智能体生成、会话管理

group:memory

memory_search, memory_get

智能体记忆检索

group:web

web_search, web_fetch

网络搜索、网页抓取

group:ui

browser, canvas

浏览器自动化、Canvas 渲染

group:automation

cron, gateway

定时任务、网关管理

group:messaging

message

跨平台消息发送

group:nodes

nodes

外部设备控制

group:openclaw

所有内置工具

完整工具集

说实话,第一次看到这个分类时,我被 group:nodes 吸引了——它竟然能控制扫地机器人、空气净化器这些 IoT 设备。后面会细说这个能力。

工具配置文件(Profiles)

不是所有智能体都需要全部工具。OpenClaw 提供了 4 种预设配置:

Profile

包含工具

适用场景

minimal

仅会话状态

最小权限,只读

coding

fs + runtime + sessions + memory

编程助手

messaging

messaging + sessions

消息机器人

full

所有工具

完全访问

代码语言:javascript
复制
// 给智能体配置 coding profile
{
  tools: {
    profile: "coding",
    deny: ["gateway", "cron"],  // 禁止网关和定时任务
  }
}

Browser 工具:浏览器自动化的正确姿势

Browser 工作流程
Browser 工作流程

图4:Browser 工具的推荐工作流程

browser 是 OpenClaw 最强大的工具之一,也是我踩坑最多的部分。

推荐的使用流程

官方文档推荐的工作流程是这样的:

代码语言:javascript
复制
// 1. 检查/启动浏览器
browser → status / start

// 2. 获取页面快照(关键!)
snapshot (ai 或 aria)

// 3. 执行 UI 操作
act (click/type/press)

// 4. 可选:视觉确认
screenshot

踩坑记录:我最开始直接用坐标点击(click(x=100, y=200)),结果页面布局一变,脚本就废了。后来才知道应该先用 snapshot 获取元素引用,再用 ref 点击:

代码语言:javascript
复制
// 错误方式(脆弱)
{ "tool": "browser", "action": "click", "x": 100, "y": 200 }

// 正确方式(稳定)
// 1. 先获取快照
{ "tool": "browser", "action": "snapshot", "mode": "ai" }
// 返回:<button ref="12">提交</button>

// 2. 用 ref 点击
{ "tool": "browser", "action": "click", "ref": "12" }

多配置文件:隔离你的浏览器

OpenClaw 默认使用一个独立的浏览器配置(openclaw),不会污染你个人的 Chrome:

代码语言:javascript
复制
{
  browser: {
    enabled: true,
    defaultProfile: "openclaw",
    profiles: {
      openclaw: { 
        cdpPort: 18800,    // 独立端口
        color: "#FF4500"   // 橙色标识,一眼识别
      },
      work: { 
        cdpPort: 18801,
        color: "#0066CC" 
      },
    },
  }
}

这个设计很贴心:你可以同时运行多个浏览器实例,一个用于测试,一个用于生产。

快照系统:AI 如何"看懂"网页

快照是 browser 工具的核心能力。有两种模式:

  1. AI 快照(默认):返回带数字引用的文本,如 ref="12"
  2. 角色快照:返回基于角色的元素树,如 ref=e12
代码语言:javascript
复制
// AI 快照示例
{
  "tool": "browser",
  "action": "snapshot",
  "mode": "ai"
}

// 返回结果(简化版)
/*
[1] <input ref="1" type="text" placeholder="搜索">
[2] <button ref="2">搜索</button>
[3] <div ref="3">热门推荐</div>
...
*/

快照的好处是:智能体能理解页面结构,而不是盲目点击。不过说实话,有些复杂页面(比如表格嵌套)的快照会很大,可能需要调整 depth 参数。

Exec 工具:命令执行的安全边界

Exec 安全机制
Exec 安全机制

图5:Exec 工具的多层安全检查流程

exec 是另一个核心工具,让智能体能在你的电脑上执行命令。但这也带来了安全风险——如果 AI 随便执行 rm -rf / 怎么办?

OpenClaw 的解决方案是 Exec Approvals

安全检查流程

当你让智能体执行命令时,系统会依次检查:

代码语言:javascript
复制
1. 工具策略(allow/deny)
   ↓
2. 执行目标(sandbox/gateway/node)
   ↓
3. 安全模式(deny/allowlist/full)
   ↓
4. 审批配置(ask: off/on-miss/always)

用白话解释:

  • deny 模式:直接拒绝所有命令
  • allowlist 模式:只有白名单里的命令能执行
  • full 模式:完全信任(危险,慎用)

白名单配置

这是我推荐的配置方式:

代码语言:javascript
复制
{
  defaults: {
    security: "allowlist",
    ask: "on-miss",         // 不在白名单时询问
    askFallback: "deny",    // 无法询问时拒绝
  },
  agents: {
    main: {
      allowlist: [
        { pattern: "~/Projects/**/bin/rg" },  // 允许特定目录的 rg
        { pattern: "~/.local/bin/*" },         // 允许 ~/.local/bin 下所有命令
      ],
    },
  },
}

实际效果:智能体想执行 npm install,不在白名单,系统会弹窗问我是否允许。我说"这次允许,以后记住",它就会被加入临时白名单。

沙箱隔离

对于高风险场景,可以启用 Docker 沙箱:

代码语言:javascript
复制
{
  agents: {
    defaults: {
      sandbox: {
        enabled: true,           // 启用沙箱
        image: "node:20",        // 使用 Node 20 镜像
        workdir: "/workspace",   // 工作目录
      },
    },
  },
}

沙箱模式下,命令在容器里执行,不会影响宿主机。缺点是启动稍慢,但对安全要求高的场景很有必要。

安全机制:多层防护体系

除了 Exec Approvals,OpenClaw 还有几层安全机制:

1. 工具策略(Tool Policy)

三级配置:全局 → 智能体 → 提供商

代码语言:javascript
复制
{
  tools: {
    profile: "coding",
    deny: ["group:runtime"],              // 全局禁止运行时工具
    byProvider: {
      "google-antigravity": { 
        profile: "minimal"                // 特定模型用最小权限
      },
    },
  },
}

2. 循环检测

防止智能体陷入无限工具调用:

代码语言:javascript
复制
{
  tools: {
    loopDetection: {
      enabled: true,
      warningThreshold: 10,    // 10 次重复时警告
      criticalThreshold: 20,   // 20 次时阻止
    },
  },
}

说实话,这个功能我遇到过:智能体在尝试修复代码时,不断重复相同的编辑操作。循环检测帮我及时发现了这个问题。

3. 拒绝 PATH 覆盖

防止二进制劫持:

代码语言:javascript
复制
# 这些环境变量会被拒绝
export PATH=/malicious/path:$PATH
export LD_LIBRARY_PATH=/malicious/lib

与 Skills 系统的协作

Tools 提供能力,Skills 提供知识。两者配合才能让智能体真正"聪明"。

Skills 的作用

Skills 是 AgentSkills 兼容的 SKILL.md 文件,用于:

  1. 教会智能体使用工具:告诉它什么时候用 browser,什么时候用 exec
  2. 注入领域知识:比如"处理电商订单时,先检查库存"
  3. 配置环境变量:API 密钥、服务器地址等
代码语言:javascript
复制
# SKILL.md 示例

## 使用 browser 工具的正确方式

1. 先用 snapshot 获取元素引用
2. 用 ref 而不是坐标点击
3. 复杂操作前先截图确认

## 环境变量

- OPENAI_API_KEY: 用于 web_search
- GITHUB_TOKEN: 用于仓库操作

ClawHub:技能市场

OpenClaw 有个公共技能市场 ClawHub,类似 npm 之于 Node.js。

你可以直接使用社区贡献的 Skills:

代码语言:javascript
复制
# 安装一个 skill
openclaw skill install github-pr-reviewer

# 查看已安装的 skills
openclaw skill list

扩展性:插件和自定义工具

插件系统

插件可以注册额外的工具和 CLI 命令:

代码语言:javascript
复制
// openclaw.plugin.json
{
  name: "my-custom-tools",
  tools: [
    {
      name: "slack_notify",
      description: "发送 Slack 通知",
      params: {
        channel: "string",
        message: "string"
      }
    }
  ]
}

自定义工具组

除了内置的 group:*,你也可以定义自己的工具组:

代码语言:javascript
复制
{
  tools: {
    groups: {
      "custom:devops": ["exec", "web_fetch", "message"]
    }
  }
}

最佳实践

用了一段时间后,我总结了几个建议:

1. 最小权限原则

不要给智能体超过必要的权限:

代码语言:javascript
复制
// 代码助手配置
{
  tools: {
    profile: "coding",
    deny: ["gateway", "cron", "group:nodes"]  // 禁止网关和设备控制
  }
}

2. 使用白名单而非黑名单

代码语言:javascript
复制
// 推荐:明确允许什么
{
  exec: {
    security: "allowlist",
    allowlist: ["npm", "git", "rg"]
  }
}

// 不推荐:猜测可能危险的命令
{
  exec: {
    security: "full",
    deny: ["rm", "sudo", "chmod"]  // 永远猜不全
  }
}

3. 开启审批模式

代码语言:javascript
复制
{
  defaults: {
    ask: "on-miss",  // 不在白名单时询问
  }
}

这会稍微降低效率,但能避免意外。

4. 浏览器操作的最佳实践

代码语言:javascript
复制
// 1. 总是先获取快照
await browser.snapshot({ mode: "ai" })

// 2. 用 ref 而非坐标
await browser.click({ ref: "12" })

// 3. 关键操作后截图确认
await browser.screenshot()

5. 复杂任务拆分

如果一个任务需要多个工具配合,考虑用子智能体:

代码语言:javascript
复制
{
  "tool": "sessions_spawn",
  "prompt": "帮我分析这个网页的内容,总结要点",
  "context": {
    "url": "https://example.com/article"
  }
}

子智能体有独立的工具权限,不会相互干扰。

总结

OpenClaw 的 Tools 体系给我最大的感受是:它在安全性和易用性之间找到了平衡。

从技术角度:

  • 类型化设计:避免了 shell 注入等安全问题
  • 多层安全机制:exec approvals、沙箱、工具策略
  • 灵活配置:三级权限、预设 profile、自定义工具组
  • 生态友好:Skills 系统、ClawHub 市场

从使用角度:

  • 我可以放心让 AI 操作浏览器,因为它是隔离环境
  • 我可以控制它能执行什么命令,不会担心 rm -rf
  • 我可以随时查看审计日志,知道它做了什么

说到底,Tools 体系解决了一个核心问题:如何让 AI 安全地获得"手脚"。 这不是简单的 API 调用,而是一套经过深思熟虑的设计。

如果你也在探索 AI Agent 开发,OpenClaw 的 Tools 体系值得仔细研究。

相关资源

OpenClaw 官方文档:https://docs.openclaw.ai/tools

中文文档:https://docs.openclaw.ai/zh-CN/tools

GitHub 仓库:https://github.com/OpenClawAI/openclaw

ClawHub 技能市场:https://github.com/OpenClawAI/clawhub

好啦,谢谢你观看我的文章,如果喜欢可以点赞转发给需要的朋友,我们下一期再见!敬请期待!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维有术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从一个真实的开发场景说起
  • Tools 是什么?AI 智能体的能力层
    • Tools vs Skills:能力与知识
    • 类型化设计:告别 Shell 注入
  • 10 大工具组:从文件操作到设备控制
    • 工具配置文件(Profiles)
  • Browser 工具:浏览器自动化的正确姿势
    • 推荐的使用流程
    • 多配置文件:隔离你的浏览器
    • 快照系统:AI 如何"看懂"网页
  • Exec 工具:命令执行的安全边界
    • 安全检查流程
    • 白名单配置
    • 沙箱隔离
  • 安全机制:多层防护体系
    • 1. 工具策略(Tool Policy)
    • 2. 循环检测
    • 3. 拒绝 PATH 覆盖
  • 与 Skills 系统的协作
    • Skills 的作用
    • ClawHub:技能市场
  • 扩展性:插件和自定义工具
    • 插件系统
    • 自定义工具组
  • 最佳实践
    • 1. 最小权限原则
    • 2. 使用白名单而非黑名单
    • 3. 开启审批模式
    • 4. 浏览器操作的最佳实践
    • 5. 复杂任务拆分
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档