Appearance
本页全面介绍 OpenClaw 的工具体系。工具是代理调用的函数(exec、browser、web_search、tts、music_generate、video_generate 等),技能(SKILL.md)告诉代理如何使用工具,插件将能力打包在一起。通过 tools.allow/tools.deny、工具配置文件(full/coding/messaging/minimal)和工具分组(group:fs、group:media 等)精细控制代理能力。
工具与插件
代理在生成文本之外的所有操作都通过工具完成。工具是代理读取文件、运行命令、浏览网页、发送消息和与设备交互的方式。
工具、技能与插件
OpenClaw 有三个协同工作的层次:
第一层:工具是代理调用的内容
工具是代理可以调用的类型化函数(如 exec、browser、web_search、message)。OpenClaw 自带一套内置工具,插件可以注册额外的工具。代理将工具视为发送给模型 API 的结构化函数定义。
第二层:技能告诉代理何时及如何使用工具
技能是注入到系统提示中的 Markdown 文件(SKILL.md)。技能为代理提供上下文、约束和使用工具的分步指导。技能存储在工作区、共享文件夹中,或随插件一起提供。
第三层:插件将一切打包在一起
插件是可以注册任意能力组合的包:频道、模型提供商、工具、技能、语音、实时转录、实时语音、媒体理解、图像生成、视频生成、网页抓取、网页搜索等。部分插件是核心插件(随 OpenClaw 一起提供),其他是外部插件(由社区发布在 npm 上)。
内置工具
这些工具随 OpenClaw 一起提供,无需安装任何插件即可使用:
| 工具 | 功能 | 文档页面 |
|---|---|---|
exec / process | 运行 Shell 命令,管理后台进程 | Exec |
code_execution | 运行沙箱远程 Python 分析 | Code Execution |
browser | 控制 Chromium 浏览器(导航、点击、截图) | Browser |
web_search / x_search / web_fetch | 搜索网页、搜索 X 帖子、获取页面内容 | Web |
read / write / edit | 工作区文件 I/O | |
apply_patch | 多块文件补丁 | Apply Patch |
message | 跨所有频道发送消息 | Agent Send |
canvas | 驱动节点 Canvas(展示、执行、截图) | |
nodes | 发现和定位配对设备 | |
cron / gateway | 管理定时任务;检查、修补、重启或更新 gateway | |
image / image_generate | 分析或生成图像 | Image Generation |
music_generate | 生成音乐曲目 | Music Generation |
video_generate | 生成视频 | Video Generation |
tts | 一次性文字转语音 | TTS |
sessions_* / subagents / agents_list | 会话管理、状态和子代理编排 | 子代理 |
session_status | 轻量 /status 风格读回和会话模型覆盖 | 会话工具 |
图像工作使用 image 进行分析,image_generate 进行生成或编辑。如果目标为 openai/*、google/*、fal/* 或其他非默认图像提供商,请先配置该提供商的认证/API key。
音乐工作使用 music_generate。如果目标为 google/*、minimax/* 或其他非默认音乐提供商,请先配置该提供商的认证/API key。
视频工作使用 video_generate。如果目标为 qwen/* 或其他非默认视频提供商,请先配置该提供商的认证/API key。
session_status 是会话组中的轻量状态/读回工具。它响应 /status 风格的当前会话查询,并可设置每会话的模型覆盖;model=default 可清除该覆盖。
gateway 是仅供所有者使用的运行时工具,用于 gateway 操作:
config.schema.lookup:编辑前查询一个路径范围的配置子树config.get:获取当前配置快照 + 哈希config.patch:带重启的部分配置更新config.apply:仅用于完整配置替换update.run:显式自更新 + 重启
对于部分变更,优先使用 config.schema.lookup 然后 config.patch。只有在有意替换整个配置时才使用 config.apply。该工具还拒绝更改 tools.exec.ask 或 tools.exec.security。
插件提供的工具
插件可以注册额外工具。示例:
- Lobster — 带可恢复审批的类型化工作流运行时
- LLM Task — 结构化输出的纯 JSON LLM 步骤
- Music Generation — 带工作流支持的提供商共享
music_generate工具 - Diffs — 差异查看器和渲染器
- OpenProse — 以 Markdown 为中心的工作流编排
工具配置
允许和拒绝列表
通过配置中的 tools.allow / tools.deny 控制代理可以调用的工具。拒绝始终优先于允许。
json5
{
tools: {
allow: ["group:fs", "browser", "web_search"],
deny: ["exec"],
},
}工具配置文件(Profile)
tools.profile 在应用 allow/deny 之前设置基础允许列表。每代理覆盖:agents.list[].tools.profile。
| 配置文件 | 包含内容 |
|---|---|
full | 无限制(与未设置相同) |
coding | group:fs、group:runtime、group:web、group:sessions、group:memory、cron、image、image_generate、music_generate、video_generate |
messaging | group:messaging、sessions_list、sessions_history、sessions_send、session_status |
minimal | 仅 session_status |
工具分组
在允许/拒绝列表中使用 group:* 简写:
| 分组 | 包含的工具 |
|---|---|
group:runtime | exec、process、code_execution(bash 是 exec 的别名) |
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、x_search、web_fetch |
group:ui | browser、canvas |
group:automation | cron、gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list |
group:media | image、image_generate、music_generate、video_generate、tts |
group:openclaw | 所有内置 OpenClaw 工具(不含插件工具) |
sessions_history 返回有界、经安全过滤的历史视图,会剥离 thinking 标签、<relevant-memories> 脚手架、工具调用 XML 载荷,以及格式错误的模型控制 token 等,不作为原始记录转储。
按提供商限制
使用 tools.byProvider 为特定提供商限制工具,而不更改全局默认值:
json5
{
tools: {
profile: "coding",
byProvider: {
"google-antigravity": { profile: "minimal" },
},
},
}养龙虾配置技巧:新手建议从
profile: "coding"开始,既给了文件和运行时权限,又不会暴露所有工具。等熟悉了再按需用allow/deny精细调整,比一上来就profile: "full"要安全得多。
常见问题
Q: group:media 和 group:web 分别包含哪些工具?
A: group:media 包含 image、image_generate、music_generate、video_generate、tts 五个媒体工具。group:web 包含 web_search、x_search、web_fetch 三个网页工具。x_search 是搜索 X(原 Twitter)帖子的新工具,tts 是一次性文字转语音工具。这两个分组在旧版文档中不完整,现在已全面更新。
Q: coding profile 不包含 tts 和 group:media,这正常吗?
A: 是的,这是设计决策。coding profile 专注于文件操作、运行时和会话管理,不包含媒体生成工具(music_generate、video_generate、tts 等)以减小代理的工具范围。如果需要这些工具,可以在 coding 基础上再用 tools.allow: ["group:media"] 补充。
Q: 如何完全禁用某个内置工具但保留其他工具?
A: 使用 tools.deny: ["exec"] 可以禁用 exec 工具同时保留其他所有工具。也可以使用 profile: "minimal" 只保留 session_status,或 profile: "messaging" 只保留消息相关工具。deny 始终优先于 allow,即使 allow 列表中包含了该工具。