Skip to content
广告 · 本站推荐广告

工具(OpenClaw) ​

OpenClaw 提供一流的智能体工具,涵盖浏览器、画布、节点和定时任务等功能。这些工具取代了旧版 openclaw-* 技能:工具具备完整的类型定义、无需调用 shell,智能体可以直接依赖它们。

禁用工具 ​

你可以通过 openclaw.json 中的 tools.allow / tools.deny 全局允许或拒绝工具(deny 优先级更高)。被拒绝的工具不会发送给模型提供商。

json5
{
  tools: { deny: ["browser"] },
}

注意事项:

  • 匹配不区分大小写。
  • 支持 * 通配符("*" 表示所有工具)。
  • 如果 tools.allow 仅引用了未知或未加载的插件工具名称,OpenClaw 会记录警告并忽略该允许列表,以确保核心工具仍然可用。

工具配置文件(基础允许列表) ​

tools.profile 在 tools.allow/tools.deny 之前设置基础工具允许列表。 可通过每个智能体单独覆盖:agents.list[].tools.profile。

配置文件类型:

  • minimal:仅 session_status
  • coding:group:fs、group:runtime、group:sessions、group:memory、image
  • messaging:group:messaging、sessions_list、sessions_history、sessions_send、session_status
  • full:无限制(等同于未设置)

示例(默认仅消息功能,同时允许 Slack + Discord 工具):

json5
{
  tools: {
    profile: "messaging",
    allow: ["slack", "discord"],
  },
}

示例(coding 配置文件,但全局拒绝 exec/process):

json5
{
  tools: {
    profile: "coding",
    deny: ["group:runtime"],
  },
}

示例(全局 coding 配置文件,消息专用的支持智能体):

json5
{
  tools: { profile: "coding" },
  agents: {
    list: [
      {
        id: "support",
        tools: { profile: "messaging", allow: ["slack"] },
      },
    ],
  },
}

提供商特定的工具策略 ​

使用 tools.byProvider 为特定提供商(或单个 provider/model)进一步限制工具,而无需更改全局默认设置。 可通过每个智能体单独覆盖:agents.list[].tools.byProvider。

此策略在基础工具配置文件之后、allow/deny 列表之前应用,因此它只能缩小工具集。 提供商键接受 provider(例如 google-antigravity)或 provider/model(例如 openai/gpt-5.2)。

示例(保持全局 coding 配置文件,但 Google Antigravity 使用 minimal 工具):

json5
{
  tools: {
    profile: "coding",
    byProvider: {
      "google-antigravity": { profile: "minimal" },
    },
  },
}

示例(针对不稳定端点的提供商/模型特定允许列表):

json5
{
  tools: {
    allow: ["group:fs", "group:runtime", "sessions_list"],
    byProvider: {
      "openai/gpt-5.2": { allow: ["group:fs", "sessions_list"] },
    },
  },
}

示例(针对单个提供商的智能体级覆盖):

json5
{
  agents: {
    list: [
      {
        id: "support",
        tools: {
          byProvider: {
            "google-antigravity": { allow: ["message", "sessions_list"] },
          },
        },
      },
    ],
  },
}

工具组(快捷方式) ​

工具策略(全局、智能体、沙箱)支持 group:* 条目,可展开为多个工具。 可在 tools.allow / tools.deny 中使用。

可用分组:

  • group:runtime:exec、bash、process
  • group:fs:read、write、edit、apply_patch
  • group:sessions:sessions_list、sessions_history、sessions_send、sessions_spawn、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 工具(不包括提供商插件)

示例(仅允许文件工具 + 浏览器):

json5
{
  tools: {
    allow: ["group:fs", "browser"],
  },
}

插件与工具 ​

插件可以在核心工具集之外注册额外的工具(和 CLI 命令)。 参见 插件 了解安装和配置,以及 技能 了解工具使用指南如何注入到提示词中。一些插件会随工具一起附带自己的技能(例如语音通话插件)。

可选的插件工具:

  • Lobster:带有可恢复审批的类型化工作流运行时(需要 Gateway 主机上的 Lobster CLI)。
  • LLM Task:用于结构化工作流输出的仅 JSON LLM 步骤(可选模式验证)。
  • Diffs:只读差异查看器和 PNG 或 PDF 文件渲染器,用于前后文本对比或统一补丁。

工具清单 ​

apply_patch ​

在一个或多个文件上应用结构化补丁。用于多代码块编辑。 实验性功能:通过 tools.exec.applyPatch.enabled 启用(仅限 OpenAI 模型)。 tools.exec.applyPatch.workspaceOnly 默认为 true(限于工作区内)。仅当你确实需要 apply_patch 在工作区目录之外写入/删除时,才将其设置为 false。

exec ​

在工作区中运行 shell 命令。

核心参数:

  • command(必填)
  • yieldMs(超时后自动转后台,默认 10000)
  • background(立即转后台)
  • timeout(秒;超时后终止进程,默认 1800)
  • elevated(布尔值;如果提升模式已启用/允许,则在主机上运行;仅在智能体处于沙箱中时改变行为)
  • host(sandbox | gateway | node)
  • security(deny | allowlist | full)
  • ask(off | on-miss | always)
  • node(host=node 时的节点 id/名称)
  • 需要真正的 TTY?设置 pty: true。

注意事项:

  • 转入后台时返回 status: "running" 和 sessionId。
  • 使用 process 来轮询/查看日志/写入/终止/清除后台会话。
  • 如果 process 被禁止,exec 将同步运行并忽略 yieldMs/background。
  • elevated 受 tools.elevated 和 agents.list[].tools.elevated 覆盖的约束(两者都必须允许),且等同于 host=gateway + security=full。
  • elevated 仅在智能体处于沙箱中时改变行为(否则为空操作)。
  • host=node 可以指向 macOS 伴侣应用或无头节点主机(openclaw node run)。
  • Gateway/节点审批和允许列表:Exec 审批。

process ​

管理后台 exec 会话。

核心操作:

  • list、poll、log、write、kill、clear、remove

注意事项:

  • poll 返回新输出,完成时返回退出状态。
  • log 支持基于行的 offset/limit(省略 offset 可获取最后 N 行)。
  • process 按智能体隔离;来自其他智能体的会话不可见。

loop-detection(工具调用循环保护) ​

OpenClaw 跟踪最近的工具调用历史,并在检测到重复无进展循环时阻止或发出警告。 通过 tools.loopDetection.enabled: true 启用(默认为 false)。

json5
{
  tools: {
    loopDetection: {
      enabled: true,
      warningThreshold: 10,
      criticalThreshold: 20,
      globalCircuitBreakerThreshold: 30,
      historySize: 30,
      detectors: {
        genericRepeat: true,
        knownPollNoProgress: true,
        pingPong: true,
      },
    },
  },
}
  • genericRepeat:重复相同工具 + 相同参数的调用模式。
  • knownPollNoProgress:重复轮询类工具且输出相同。
  • pingPong:交替的 A/B/A/B 无进展模式。
  • 可按智能体覆盖:agents.list[].tools.loopDetection。

使用 Brave Search API 搜索网页。

核心参数:

  • query(必填)
  • count(1–10;默认取自 tools.web.search.maxResults)

注意事项:

  • 需要 Brave API 密钥(推荐使用 openclaw configure --section web,或设置 BRAVE_API_KEY)。
  • 通过 tools.web.search.enabled 启用。
  • 响应默认缓存 15 分钟。
  • 参见 Web 工具 了解设置方法。

web_fetch ​

获取 URL 内容并提取可读内容(HTML → markdown/文本)。

核心参数:

  • url(必填)
  • extractMode(markdown | text)
  • maxChars(截断长页面)

注意事项:

  • 通过 tools.web.fetch.enabled 启用。
  • maxChars 受 tools.web.fetch.maxCharsCap 限制(默认 50000)。
  • 响应默认缓存 15 分钟。
  • 对于 JS 密集型网站,建议使用浏览器工具。
  • 参见 Web 工具 了解设置方法。
  • 参见 Firecrawl 了解可选的反机器人回退方案。

browser ​

控制 OpenClaw 管理的专用浏览器。

核心操作:

  • status、start、stop、tabs、open、focus、close
  • snapshot(aria/ai)
  • screenshot(返回图像块 + MEDIA:<path>)
  • act(UI 操作:click/type/press/hover/drag/select/fill/resize/wait/evaluate)
  • navigate、console、pdf、upload、dialog

配置文件管理:

  • profiles — 列出所有浏览器配置文件及状态
  • create-profile — 创建新配置文件并自动分配端口(或 cdpUrl)
  • delete-profile — 停止浏览器,删除用户数据,从配置中移除(仅限本地)
  • reset-profile — 终止配置文件端口上的孤立进程(仅限本地)

通用参数:

  • profile(可选;默认为 browser.defaultProfile)
  • target(sandbox | host | node)
  • node(可选;指定特定节点 id/名称)

注意事项:

  • 需要 browser.enabled=true(默认为 true;设置为 false 可禁用)。
  • 所有操作接受可选的 profile 参数以支持多实例。
  • 省略 profile 时,使用 browser.defaultProfile(默认为 "chrome")。
  • 配置文件名称:仅限小写字母数字 + 连字符(最多 64 个字符)。
  • 端口范围:18800-18899(最多约 100 个配置文件)。
  • 远程配置文件仅支持附加模式(不支持 start/stop/reset)。
  • 如果连接了支持浏览器的节点,工具可能会自动路由到该节点(除非你指定了 target)。
  • snapshot 在安装了 Playwright 时默认为 ai;使用 aria 获取无障碍树。
  • snapshot 还支持角色快照选项(interactive、compact、depth、selector),返回类似 e12 的引用。
  • act 需要来自 snapshot 的 ref(AI 快照返回数字 12,角色快照返回 e12);对于少数需要 CSS 选择器的情况使用 evaluate。
  • 默认情况下避免 act → wait;仅在特殊情况下使用(没有可靠的 UI 状态可等待时)。
  • upload 可以选择性地传递 ref 以在准备后自动点击。
  • upload 还支持 inputRef(aria 引用)或 element(CSS 选择器)来直接设置 <input type="file">。

canvas ​

驱动节点画布(展示、评估、快照、A2UI)。

核心操作:

  • present、hide、navigate、eval
  • snapshot(返回图像块 + MEDIA:<path>)
  • a2ui_push、a2ui_reset

注意事项:

  • 底层使用 Gateway 的 node.invoke。
  • 如果未提供 node,工具会选择默认节点(单个已连接节点或本地 Mac 节点)。
  • A2UI 仅支持 v0.8(不支持 createSurface);CLI 会拒绝带行错误的 v0.9 JSONL。
  • 快速测试:openclaw nodes canvas a2ui push --node <id> --text "Hello from A2UI"。

nodes ​

发现并定位已配对的节点;发送通知;捕获摄像头/屏幕。

核心操作:

  • status、describe
  • pending、approve、reject(配对)
  • notify(macOS system.notify)
  • run(macOS system.run)
  • camera_list、camera_snap、camera_clip、screen_record
  • location_get、notifications_list、notifications_action
  • device_status、device_info、device_permissions、device_health

注意事项:

  • 摄像头/屏幕命令需要节点应用处于前台。
  • 图像返回图像块 + MEDIA:<path>。
  • 视频返回 FILE:<path>(mp4)。
  • 位置信息返回 JSON 负载(lat/lon/accuracy/timestamp)。
  • run 参数:command argv 数组;可选 cwd、env(KEY=VAL)、commandTimeoutMs、invokeTimeoutMs、needsScreenRecording。

示例(run):

json
{
  "action": "run",
  "node": "office-mac",
  "command": ["echo", "Hello"],
  "env": ["FOO=bar"],
  "commandTimeoutMs": 12000,
  "invokeTimeoutMs": 45000,
  "needsScreenRecording": false
}

image ​

使用配置的图像模型分析图像。

核心参数:

  • image(必填,路径或 URL)
  • prompt(可选;默认为 "Describe the image.")
  • model(可选覆盖)
  • maxBytesMb(可选大小上限)

注意事项:

  • 仅在配置了 agents.defaults.imageModel(主模型或回退模型)时可用,或者当可以从默认模型 + 已配置的认证中推断出隐式图像模型时(尽力匹配)。
  • 直接使用图像模型(独立于主聊天模型)。

pdf ​

分析一个或多个 PDF 文档。

完整的行为、限制、配置和示例,请参见 PDF 工具。

message ​

通过 Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams 发送消息和频道操作。

核心操作:

  • send(文本 + 可选媒体;MS Teams 还支持 card 用于自适应卡片)
  • poll(WhatsApp/Discord/MS Teams 投票)
  • react / reactions / read / edit / delete
  • pin / unpin / list-pins
  • permissions
  • thread-create / thread-list / thread-reply
  • search
  • sticker
  • member-info / role-info
  • emoji-list / emoji-upload / sticker-upload
  • role-add / role-remove
  • channel-info / channel-list
  • voice-status
  • event-list / event-create
  • timeout / kick / ban

注意事项:

  • send 通过 Gateway 路由 WhatsApp 消息;其他频道直接发送。
  • poll 对 WhatsApp 和 MS Teams 使用 Gateway;Discord 投票直接发送。
  • 当消息工具调用绑定到活跃的聊天会话时,发送操作被限制在该会话的目标范围内,以避免跨上下文泄露。

cron ​

管理 Gateway 定时任务和唤醒。

核心操作:

  • status、list
  • add、update、remove、run、runs
  • wake(入队系统事件 + 可选的立即心跳)

注意事项:

  • add 期望一个完整的 cron 任务对象(与 cron.add RPC 相同的模式)。
  • update 使用 { jobId, patch }(为兼容性也接受 id)。

gateway ​

重启或为运行中的 Gateway 进程应用更新(原地更新)。

核心操作:

  • restart(授权 + 发送 SIGUSR1 进行进程内重启;openclaw gateway 原地重启)
  • config.get / config.schema
  • config.apply(验证 + 写入配置 + 重启 + 唤醒)
  • config.patch(合并部分更新 + 重启 + 唤醒)
  • update.run(运行更新 + 重启 + 唤醒)

注意事项:

  • 使用 delayMs(默认 2000)以避免中断正在进行的回复。
  • restart 默认启用;设置 commands.restart: false 可禁用。

sessions_list / sessions_history / sessions_send / sessions_spawn / session_status ​

列出会话、查看对话历史记录,或向另一个会话发送消息。

核心参数:

  • sessions_list:kinds?、limit?、activeMinutes?、messageLimit?(0 = 无)
  • sessions_history:sessionKey(或 sessionId)、limit?、includeTools?
  • sessions_send:sessionKey(或 sessionId)、message、timeoutSeconds?(0 = 即发即弃)
  • sessions_spawn:task、label?、runtime?、agentId?、model?、thinking?、cwd?、runTimeoutSeconds?、thread?、mode?、cleanup?、sandbox?、streamTo?、attachments?、attachAs?
  • session_status:sessionKey?(默认当前会话;接受 sessionId)、model?(default 清除覆盖)

注意事项:

  • main 是规范的直接聊天键;global/unknown 被隐藏。
  • messageLimit > 0 获取每个会话的最后 N 条消息(工具消息被过滤)。
  • 会话目标由 tools.sessions.visibility 控制(默认 tree:当前会话 + 生成的子智能体会话)。如果你运行面向多个用户的共享智能体,考虑将 tools.sessions.visibility 设置为 "self" 以防止跨会话浏览。
  • sessions_send 在 timeoutSeconds > 0 时等待最终完成。
  • 交付/通知在完成后发生,属于尽力而为;status: "ok" 确认智能体运行已完成,而非通知已送达。
  • sessions_spawn 支持 runtime: "subagent" | "acp"(默认 subagent)。有关 ACP 运行时行为,请参见 ACP 智能体。
  • 对于 ACP 运行时,streamTo: "parent" 将初始运行进度摘要路由回请求者会话作为系统事件,而非直接子级交付。
  • sessions_spawn 启动子智能体运行并将通知回复发送回请求者聊天。
    • 支持一次性模式(mode: "run")和持久的线程绑定模式(mode: "session" 搭配 thread: true)。
    • 如果 thread: true 且 mode 未指定,模式默认为 session。
    • mode: "session" 需要 thread: true。
    • 如果省略 runTimeoutSeconds,OpenClaw 在设置了 agents.defaults.subagents.runTimeoutSeconds 时使用该值;否则超时默认为 0(无超时)。
    • Discord 线程绑定流程依赖 session.threadBindings.* 和 channels.discord.threadBindings.*。
    • 回复格式包含 Status、Result 和简洁统计信息。
    • Result 是助手完成文本;如果缺失,使用最新的 toolResult 作为回退。
  • 手动完成模式的 spawn 先直接发送,在临时失败时使用队列回退和重试(status: "ok" 意味着运行完成,而非通知已送达)。
  • sessions_spawn 仅对 subagent 运行时支持内联文件附件(ACP 会拒绝)。每个附件有 name、content,以及可选的 encoding(utf8 或 base64)和 mimeType。文件被实体化到子工作区的 .openclaw/attachments/<uuid>/ 路径下,并附带 .manifest.json 元数据文件。工具返回包含 count、totalBytes、每个文件 sha256 和 relDir 的回执。附件内容会自动从对话持久化中删除。
    • 通过 tools.sessions_spawn.attachments 配置限制(enabled、maxTotalBytes、maxFiles、maxFileBytes、retainOnSessionKeep)。
    • attachAs.mountPath 是为未来挂载实现预留的提示。
  • sessions_spawn 是非阻塞的,立即返回 status: "accepted"。
  • ACP streamTo: "parent" 响应可能包含 streamLogPath(会话范围的 *.acp-stream.jsonl)用于追踪进度历史。
  • sessions_send 运行回复往返乒乓(回复 REPLY_SKIP 可停止;最大轮次通过 session.agentToAgent.maxPingPongTurns 控制,0–5)。
  • 乒乓之后,目标智能体运行一个通知步骤;回复 ANNOUNCE_SKIP 可抑制通知。
  • 沙箱约束:当当前会话被沙箱化且 agents.defaults.sandbox.sessionToolsVisibility: "spawned" 时,OpenClaw 将 tools.sessions.visibility 限制为 tree。

agents_list ​

列出当前会话可以通过 sessions_spawn 指向的智能体 ID。

注意事项:

  • 结果受每个智能体的允许列表限制(agents.list[].subagents.allowAgents)。
  • 当配置为 ["*"] 时,工具包含所有已配置的智能体并标记 allowAny: true。

通用参数 ​

Gateway 支持的工具(canvas、nodes、cron):

  • gatewayUrl(默认 ws://127.0.0.1:18789)
  • gatewayToken(如果启用了认证)
  • timeoutMs

注意:设置 gatewayUrl 时,请明确包含 gatewayToken。工具不会继承配置或环境凭据用于覆盖,缺少明确凭据将导致错误。

浏览器工具:

  • profile(可选;默认为 browser.defaultProfile)
  • target(sandbox | host | node)
  • node(可选;指定特定节点 id/名称)

推荐的智能体流程 ​

浏览器自动化:

  1. browser → status / start
  2. snapshot(ai 或 aria)
  3. act(click/type/press)
  4. 如果需要视觉确认,使用 screenshot

画布渲染:

  1. canvas → present
  2. a2ui_push(可选)
  3. snapshot

节点定位:

  1. nodes → status
  2. 对选定节点执行 describe
  3. notify / run / camera_snap / screen_record

安全 ​

  • 避免直接使用 system.run;仅在获得明确用户同意后使用 nodes → run。
  • 尊重用户对摄像头/屏幕捕获的同意。
  • 在调用媒体命令前,使用 status/describe 确保权限。

工具如何呈现给智能体 ​

工具通过两个并行通道暴露:

  1. 系统提示文本:人类可读的列表 + 指导。
  2. 工具模式(Schema):发送给模型 API 的结构化函数定义。

这意味着智能体既能看到"有哪些工具可用",也能看到"如何调用它们"。如果某个工具未出现在系统提示或模式中,模型将无法调用它。

基于MIT协议开源 | 内容翻译自 官方文档,同步更新