Skip to content

第8章:内置工具——AI 的"瑞士军刀"

到目前为止,你的 AI 助手能聊天、能记忆、能在多个渠道响应你。但本质上,它还只是一个"嘴上厉害"的存在——说得头头是道,却什么都做不了。

工具(Tools)是改变这一切的分水岭。

有了工具,AI 可以执行终端命令、控制浏览器、搜索网络、发送消息、调用设备摄像头。它从一个对话伙伴,变成了一个真正能帮你干活的助手。


工具全景

OpenClaw 的工具按功能分成九大组:

工具组包含工具能做什么
runtimeexec, process执行终端命令,管理后台进程
fsread, write, edit, apply_patch读写和编辑本地文件
websearch, fetch搜索网络,抓取网页内容
uibrowser, canvas控制浏览器,操作可视化画布
messagingmessage跨平台发送消息(WhatsApp/Slack/Discord 等)
memorymemory_search, memory_get读写记忆文件
sessionssession_*跨 Agent 通信,生成子 Agent
automationcron, webhook管理定时任务和 Webhook
nodesnode_*控制配对的手机和电脑设备

默认配置(full 画像)下,所有工具组都是开放的。AI 会根据你的请求自行判断该用哪个工具。

接下来重点介绍三个你最先会用到的工具组。


exec:让 AI 执行终端命令

exec 工具让 AI 在你的机器上运行 shell 命令。这是工具箱里权力最大的一把——也因此最需要谨慎对待。

把终端命令能力交给 AI,大多数时候它用的是 lscatgit status 这类温和的命令。但如果你没有设置任何边界,它偶尔会认为 rm -rf 是解决问题的好办法。不是因为它坏,是因为它觉得这样最有效。

能做什么

帮我查看一下 ~/projects 目录下有哪些文件
运行 pytest,看看有没有失败的测试
把 nginx 的错误日志最后 50 行给我看看

这些都是 exec 的典型使用场景。AI 会在执行前告诉你它要运行什么命令,执行后把输出返回给你。

后台执行

对于耗时的任务,可以让 AI 在后台运行:

帮我在后台运行 npm run build,完成后通知我

AI 会启动进程,继续和你对话,等任务完成再告知结果。

安全边界

重要:不要让 exec 裸奔

默认配置下,exec 可以运行任何命令,包括删文件、修改系统配置、访问敏感目录。

在开始大量使用 exec 之前,建议做两件事:

1. 配置工具策略(本章末尾会讲):明确哪些命令允许,哪些不允许。

2. 启用 Docker 沙箱(第10章详细讲):让 AI 的命令在隔离容器里运行,即使它做了什么"过激"的操作,影响也被限制在容器内,不会波及你的宿主机。


browser:控制一个完整的浏览器

browser 工具给 AI 配了一台它自己的无头电脑——屏幕你看不见,但鼠标和键盘它全能控制。

这是最能让人"哇"一声的工具。

能做什么

截图和快照:

帮我截一下 https://news.ycombinator.com 的首页

AI 会打开浏览器,导航到这个地址,截图后发给你。

网页交互:

打开 GitHub,帮我搜索 "vitepress",截图搜索结果

AI 可以在网页上点击、输入文字、按回车——和真人操作浏览器完全一样,只是它的"眼睛"靠截图来看页面内容。

数据抓取:

打开这个招聘页面,把所有职位名称和薪资范围整理成表格

生成 PDF:

把 https://example.com/report 保存成 PDF,放到我的桌面

自动化流程:

帮我登录 Tesco 网站(账号密码在 USER.md 里),
把购物车里的商品清单发给我看看

多个浏览器 Profile

browser 工具支持多个独立的 Profile,每个 Profile 有独立的 Cookie 和登录状态。这样 AI 可以同时管理多个网站的登录会话,互不干扰。

浏览器工具的工作原理

OpenClaw 的 browser 工具管理一个独立的 Chrome/Chromium 实例,通过 Chrome DevTools Protocol(CDP)控制它。AI 每次操作后会获取页面快照(无障碍树 + 截图),据此判断下一步该怎么操作——就像一个用截图来"看"屏幕的盲打高手。


web:搜索与网页抓取

web 工具解决一个根本问题:AI 的训练数据有截止日期,它不知道昨天发生了什么。

有了 web 工具,AI 可以实时搜索网络,获取最新信息。

网络搜索

帮我搜一下 Claude 4.6 最新的定价信息
最近有没有关于树莓派 5 的新测评?

OpenClaw 支持多个搜索提供商:Brave Search、Firecrawl、Gemini、Grok 等。使用搜索功能需要配置至少一个提供商的 API Key。

推荐从 Brave Search 开始,免费额度慷慨,申请简单:在 Brave Search API 注册后,把 Key 写入配置:

json
{
  "braveSearch": {
    "apiKey": "你的BraveSearchAPIKey"
  }
}

网页抓取

除了搜索,web 工具还可以直接抓取指定页面的内容:

帮我读一下这篇文章的主要内容:https://example.com/article

AI 会抓取页面,提取正文,以 Markdown 格式返回——不用你手动复制粘贴。


工具策略:设定边界

工具很强大,但并非每个场景都需要全部工具。工具策略让你精确控制 AI 能用什么、不能用什么。

allow / deny 配置

openclaw.json 里,tools.allowtools.deny 控制工具的开关:

json
{
  "agents": {
    "defaults": {
      "tools": {
        "deny": ["exec", "group:nodes"]
      }
    }
  }
}

规则说明:

  • deny 优先于 allow——如果一个工具同时出现在两个列表里,以 deny 为准
  • 可以指定单个工具名(如 exec),也可以指定整组(如 group:nodes
  • 支持通配符

四种内置工具画像

除了手动配置,OpenClaw 提供了四种开箱即用的工具画像,适合不同场景:

画像开放的工具组适合场景
minimal仅会话状态最严格限制,适合对外开放的 Bot
coding文件系统、终端、会话、记忆编程助手场景
messaging消息发送、会话历史纯消息场景
full(默认)全部工具个人使用,自己对自己负责

切换画像:

json
{
  "agents": {
    "defaults": {
      "tools": {
        "profile": "coding"
      }
    }
  }
}

个人使用 vs 对外开放

如果这个 Bot 只有你自己用,full 画像完全合理。如果你把 Bot 分享给别人,或者接入了公开群组,强烈建议切换到更严格的画像,再根据需要逐步放开,而不是从 full 开始往回收。


动手练习

依次尝试以下两个请求:

测试 exec:

帮我看一下当前系统的 Node.js 版本和 npm 版本

AI 应该会执行 node --versionnpm --version,把结果告诉你。

测试 browser(需要先确认 browser 工具已启用):

帮我截一张 https://docs.openclaw.ai 首页的图

AI 应该会打开浏览器,访问这个地址,截图后发给你。

如果两个都成功了,说明你的工具配置是通畅的。


本章检查清单

  • [ ] 你知道 execbrowser 的主要区别是什么吗?(一个在终端,一个在浏览器)
  • [ ] 你了解为什么 exec 需要特别注意安全边界吗?
  • [ ] 你知道如何用工具画像(profile)快速切换工具权限吗?

基于 CC BY-NC-SA 4.0 许可证发布