工具是 Agent 的手和眼
OpenClaw 中,Agent 除了生成文字之外的一切操作,都通过**工具(Tools)**完成。工具是 Agent 调用 typed function 的方式——读文件、跑命令、浏览网页、发消息、控制设备,全部靠工具。
三层架构:工具 → 技能 → 插件
OpenClaw 有三层协同工作的机制:
第一层:工具(Tools)——Agent 可以调用什么
工具是 Agent 可以调用的 typed function(如 exec、browser、web_search、message)。OpenClaw 自带一组内置工具,插件也可以注册额外工具。Agent 把工具视为发给模型 API 的结构化函数定义。
第二层:技能(Skills)——Agent 何时、如何使用
技能是一个 markdown 文件(SKILL.md),注入到系统提示词中。技能赋予 Agent 上下文、约束和分步指导,让工具被有效地使用。技能存在于 workspace、共享文件夹,或内置在插件中。
第三层:插件(Plugins)——把所有东西打包
插件是一个包,可以注册任意组合的能力:频道、模型提供商、工具、技能、语音、图片生成等。部分插件是核心的(随 OpenClaw 一起发布),部分是外部的(由社区发布到 npm)。
内置工具一览
这些工具随 OpenClaw 发布,无需安装任何插件即可使用:
| 工具 | 功能 |
|---|---|
exec / process |
运行 shell 命令,管理后台进程 |
browser |
控制 Chromium 浏览器(导航、点击、截图) |
web_search / web_fetch |
搜索网页,获取页面内容 |
read / write / edit |
Workspace 内文件读写 |
apply_patch |
多 hunk 文件补丁 |
message |
跨所有频道发消息 |
canvas |
驱动节点 Canvas(展示、eval、快照) |
nodes |
发现并定向已配对设备 |
cron / gateway |
管理定时任务,重启 Gateway |
image / image_generate |
分析或生成图片 |
图片工具的正确用法
- 分析图片:用
image工具 - 生成/编辑图片:用
image_generate工具 - 如果目标是非默认图片提供商(如
openai/*、google/*、fal/*),需先配置该提供商的 auth/API key
插件提供的工具
插件可以注册额外工具,官方插件示例:
- Lobster — 带可恢复审批的 typed 工作流运行时
- LLM Task — JSON 专属 LLM 步骤(结构化输出)
- Diffs — diff 查看器和渲染器
- OpenProse — markdown 优先工作流编排
工具配置:Allow 和 Deny 列表
通过配置中的 tools.allow / tools.deny 控制 Agent 可以调用哪些工具。Deny 优先级始终高于 Allow。
{
tools: {
allow: ["group:fs", "browser", "web_search"],
deny: ["exec"],
},
}
工具配置集(Tool Profiles)
tools.profile 在 allow/deny 应用之前设置基础允许列表:
| Profile | 包含内容 |
|---|---|
full |
所有工具(默认) |
coding |
文件 I/O、运行时、会话、内存、图片 |
messaging |
消息、会话列表/历史/发送/状态 |
minimal |
仅 session_status |
工具组快捷方式
在 allow/deny 列表中使用 group:* 简写:
| 组 | 包含工具 |
|---|---|
group:runtime |
exec, bash, process |
group:fs |
read, write, edit, apply_patch |
group:sessions |
sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status |
group:memory |
memory_search, memory_get |
group:web |
web_search, web_fetch |
group:ui |
browser, canvas |
group:automation |
cron, gateway |
group:messaging |
message |
group:nodes |
nodes |
group:openclaw |
所有内置 OpenClaw 工具(不含插件工具) |
按提供商限制工具
使用 tools.byProvider 对特定提供商限制工具,而不影响全局默认值:
{
tools: {
profile: "coding",
byProvider: {
"google-antigravity": { profile: "minimal" },
},
},
}
Agent 如何"看到"工具
Agent 把工具视为结构化函数定义,由 OpenClaw 发送给模型 API。这些定义告诉模型:有哪些工具可用、每个工具接受什么参数、返回什么结果。
模型根据对话上下文自主决定调用哪个工具、传什么参数。这是 OpenClaw Agent 的核心机制——不是预设的工作流,而是模型根据情况判断。
工具 vs 技能:关键区别
| 工具(Tool) | 技能(Skill) | |
|---|---|---|
| 本质 | 可以调用的函数 | 何时/如何使用工具的指导 |
| 格式 | 代码(函数定义) | Markdown 文本(SKILL.md) |
| 作用 | 执行动作 | 提供上下文和约束 |
技能通过在系统提示词中注入指令来"教会"Agent 更好地使用工具——比如告诉 Agent 在什么情况下应该用哪个工具、参数怎么填、结果怎么解读。
本指南综合编译自 OpenClaw 官方文档