Skip to content

本页全面介绍 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 有三个协同工作的层次:

第一层:工具是代理调用的内容

工具是代理可以调用的类型化函数(如 execbrowserweb_searchmessage)。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.asktools.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无限制(与未设置相同)
codinggroup:fsgroup:runtimegroup:webgroup:sessionsgroup:memorycronimageimage_generatemusic_generatevideo_generate
messaginggroup:messagingsessions_listsessions_historysessions_sendsession_status
minimalsession_status

工具分组

在允许/拒绝列表中使用 group:* 简写:

分组包含的工具
group:runtimeexec、process、code_execution(bashexec 的别名)
group:fsread、write、edit、apply_patch
group:sessionssessions_list、sessions_history、sessions_send、sessions_spawn、sessions_yield、subagents、session_status
group:memorymemory_search、memory_get
group:webweb_search、x_search、web_fetch
group:uibrowser、canvas
group:automationcron、gateway
group:messagingmessage
group:nodesnodes
group:agentsagents_list
group:mediaimage、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:mediagroup: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 不包含 ttsgroup: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 列表中包含了该工具。