工具是 Agent 的手和眼
OpenClaw Agent 生成文字只是第一步,真正让它"做事"的是工具(Tools)。工具是 Agent 调用外部系统的接口——读写文件、运行命令、控制浏览器、搜索网页、发送消息,都通过工具完成。
理解 OpenClaw 的工具系统,是掌握 Agent 自动化能力的关键。
三层架构:工具 / Skills / 插件
OpenClaw 的工具体系分为三个相互配合的层次:
工具(Tool)= Agent 具体能调用的函数
Skills = 什么时候、怎么用这些工具的指导手册
插件(Plugin)= 打包工具和 Skills 的分发单元
工具层:Agent 直接调用的函数
工具是 Agent API 层面的函数定义。当 Agent 需要"做某事"时,LLM 会生成一个工具调用请求,OpenClaw 执行对应函数后把结果返回给 Agent。
工具的定义包含:
- 名称(如
exec、browser、read) - 参数 schema(参数类型和约束)
- 执行函数(实际运行的代码)
- 权限要求(是否需要 elevated 权限)
Skills 层:教 Agent 怎么用工具
Skill 是一份 Markdown 指导文件(SKILL.md),在 Agent 启动时被注入到 system prompt 里,告诉它某个工具在什么场景下如何使用、有哪些坑要避开。
举例:一个 xianyu-automation Skill 会告诉 Agent:
- 闲鱼发布页的 CSS selector 是什么
- 图片上传的正确流程(不能用 setInputFiles,要用 upload)
- 遇到验证弹窗怎么处理
Skill 存放在:
~/.openclaw/workspace/skills/(用户自定义)- 插件包内(第三方 Skill)
- OpenClaw 内置 Skill
插件层:工具和 Skills 的打包单元
插件是一个 npm 包,可以注册任意组合的:频道、模型提供商、工具、Skills、语音、图像生成能力。
OpenClaw 自身是一个插件体系,核心功能通过内置插件提供,扩展功能由社区插件提供。
内置工具详解
OpenClaw 开箱即提供以下内置工具:
文件操作工具
| 工具 | 功能 |
|---|---|
read |
读取文件内容,支持大文件分片 |
write |
覆盖写入文件 |
edit |
精确替换文件中一段文本 |
apply_patch |
应用多段补丁 |
典型使用场景:
- 读取配置文件、分析日志
- 写入脚本、生成文章
- 批量修改代码
执行工具
| 工具 | 功能 |
|---|---|
exec |
运行 shell 命令,支持 PTY |
process |
管理后台进程 |
# 运行命令并获取输出
exec(command="ls -la ~/Desktop", timeout=30)
浏览器工具
| 工具 | 功能 |
|---|---|
browser |
控制 Chromium 浏览器(导航、点击、截图) |
canvas |
控制 Node Canvas(展示、截图) |
这是闲鱼自动化的核心工具。典型流程:
browser.navigate("https://www.xianyu.com")
browser.click("发布按钮的 selector")
browser.snapshot() # 获取当前页面元素状态
browser.type("textarea", "商品描述文字")
browser.upload({ paths: ["/tmp/product.jpg"] })
网络工具
| 工具 | 功能 |
|---|---|
web_search |
搜索网页获取信息 |
x_search |
搜索 X(Twitter)帖子 |
web_fetch |
抓取页面内容为 Markdown |
消息工具
| 工具 | 功能 |
|---|---|
message |
跨所有已配置频道发送消息 |
agent-send |
向指定 Agent 发送消息 |
会话管理工具
| 工具 | 功能 |
|---|---|
sessions_spawn |
创建新的 SubAgent 会话 |
sessions_send |
向指定会话发送消息 |
sessions_list |
列出所有活跃会话 |
agents_list |
列出所有可用的 SubAgent |
其他工具
| 工具 | 功能 |
|---|---|
image |
分析图片内容 |
image_generate |
生成或编辑图片 |
cron |
管理定时任务 |
gateway |
重启 Gateway、查看状态 |
nodes |
发现和定位配对设备 |
工具权限控制
工具默认按配置的 tools.allow 和 tools.deny 列表进行过滤。常见的权限配置:
完全关闭 exec(最安全)
{
tools: {
allow: ["read", "write", "web_search", "web_fetch", "browser"]
deny: ["exec", "process"]
}
}
只允许只读操作
{
tools: {
allow: ["read", "web_search", "web_fetch"]
deny: ["write", "exec", "browser"]
}
}
只允许浏览器自动化
{
tools: {
allow: ["browser", "read", "write"]
deny: ["exec"]
}
}
插件工具生态
OpenClaw 社区有大量插件扩展工具能力:
polymarket 插件
交易预测市场的专业工具,可以查询市场数据、下单、管理仓位。
openclaw skill install polymarket
tavily-search 插件
AI 优化的搜索引擎,比普通搜索更精准地获取高质量信息源。
浏览器相关插件
browser-use 和 agent-browser:提供更高级的浏览器自动化能力,支持复杂表单填写、验证码处理、多标签页管理。
如何编写自己的工具
OpenClaw 支持通过插件注册自定义工具。以一个简单工具为例:
// my-plugin/tools/hello.js
export const helloTool = {
name: "hello",
description: "向指定用户打招呼",
parameters: {
properties: {
name: { type: "string", description: "用户名" }
},
required: ["name"]
},
async run({ name }) {
return `你好,${name}!我是 OpenClaw Agent。`;
}
};
注册到插件的 index.js:
import { helloTool } from "./tools/hello.js";
export default {
tools: [helloTool]
};
安装插件后,Agent 就能在对话中调用 hello 工具了。
工具与 Skills 的配合
工具决定了 Agent"能做什么",Skills 决定了 Agent"什么时候做、怎么做"。
举一个完整的例子:闲鱼自动化的 Skill 会告诉 Agent:
当用户要求"帮我上架商品"时:
1. 用 browser 导航到发布页面
2. 用 snapshot 获取"添加图片"按钮的 selector
3. 用 browser.upload 上传图片(不能用 setInputFiles)
4. 用 type 逐字输入商品描述(slowly=true 防检测)
5. 用 click 选择成色分类
6. 用 snapshot 确认商品已发布
没有 Skill,Agent 不知道闲鱼的特殊上传流程;有了 Skill,Agent 每次都能正确执行。
总结
OpenClaw 的工具系统三层配合:
- 工具是执行器:提供真实世界交互能力
- Skills是教练:告诉 Agent 在什么场景用什么工具、怎么用
- 插件是生态:社区贡献工具和 Skills,扩展系统能力
掌握这套体系,你就能把 OpenClaw 打造成任何场景的自动化助手——从网页操作到文件处理,从消息发送到定时监控,工具系统提供了无限扩展的可能性。