15.13 TOOLS模板

OpenClaw 提供一流的代理工具,用于浏览器自动化、画布渲染、节点管理和计划任务。这些工具取代了旧的基于技能的方法,提供不需要 shell 命令的类型化直接集成。

工具管理

启用/禁用工具

工具通过 openclaw.json 使用 tools.allowtools.deny 指令控制。当两个列表同时存在时,"deny 优先"。匹配不区分大小写,支持通配符。

// openclaw.json 配置示例
{
  "tools": {
    "allow": ["exec", "read", "write", "browser"],
    "deny": ["gateway", "cron"]
  }
}

工具配置文件

可以使用预定义配置文件设置基础允许列表:

配置文件说明
minimalsession_status
coding文件系统、运行时、会话和记忆工具
messaging消息和会话管理
full无限制(默认)

配置文件可以全局应用或按代理应用,allow/deny 列表在其之上叠加。

提供商特定策略

tools.byProvider 配置可以为特定 LLM 提供商缩小工具访问范围,而不改变全局默认值。这在基础配置文件之后但在 allow/deny 列表之前应用。

工具组(简写)

策略支持 group:* 条目以方便使用:

组名包含的工具
group:runtimeShell 执行工具
group:fs文件操作
group:sessions会话管理
group:memory记忆搜索/检索
group:web网络搜索和获取
group:ui浏览器和画布工具
group:messaging消息发送
group:automationCron 和网关管理

核心工具

执行与进程

exec:运行 shell 命令,参数包括超时、后台执行和可选的 TTY 支持。后台运行时返回"running"状态和用于轮询的 sessionId。

// exec 工具示例
{
  "command": "npm install",
  "timeout": 60000,
  "background": true
}

process:管理后台会话,支持 poll、log、kill 和 clear 等操作。支持基于行的 offset/limit 进行输出检索。

网络工具

web_search:使用 Brave Search API;需要配置,缓存默认为 15 分钟。

web_fetch:通过 HTML 转 Markdown 从 URL 提取可读内容。对于 JavaScript 密集型站点,回退到 Firecrawl。

浏览器自动化

browser:控制专用的托管浏览器,支持端口 18800-18899 上的多个配置文件。核心操作包括快照、截图、导航和通过 act 命令进行的 UI 交互。快照可以返回 AI 或无障碍树表示。

推荐工作流
浏览器自动化:status -> snapshot -> act -> screenshot

画布渲染

canvas:驱动节点 Canvas 用于演示和评估。使用网关节点调用,支持 A2UI 可视化(仅 v0.8)。

推荐工作流
画布渲染:present -> a2ui_push -> snapshot

节点管理

nodes:发现配对的节点并启用通知、命令执行和媒体捕获。相机/屏幕操作需要明确的前台处理和用户同意。

推荐工作流
节点定位:status -> describe -> notify/run/camera_snap

文件操作

apply_patch:应用多文件结构化补丁(实验性;仅限 OpenAI 模型)。

消息传递

message:跨 Discord、Slack、Telegram、WhatsApp、Signal、iMessage、MS Teams 和 Google Chat 发送通信。支持表情反应、置顶、线程和投票。

调度与基础设施

cron:管理网关 cron 作业和系统唤醒。

gateway:重启网关进程或就地应用配置更新。

会话管理

sessions_list/history/send/spawnsession_status:启用会话间通信、记录检查和子代理生成,支持可选的 ping-pong 回复模式。

图像分析

image:使用配置的图像模型分析图像(需要 agents.defaults.imageModel)。

安全注意事项

安全警告
  • 避免在没有明确用户同意的情况下直接执行系统命令
  • 媒体捕获命令需要确认的权限
  • 敏感操作前应先进行状态检查

工具呈现

工具出现在两个通道中:

  • 系统提示文本 - 人类可读的指导
  • 结构化模式 - API 定义

如果工具在这两个通道中都不出现,模型将无法访问它。