工具 (OpenClaw)
OpenClaw 为浏览器、画布、节点和定时任务暴露一流的代理工具。 这些工具替代了旧的 openclaw-* 技能:工具具有类型检查,无需 shell 调用, 代理应该直接依赖它们。
禁用工具
您可以通过 openclaw.json 中的 tools.allow / tools.deny 全局允许/拒绝工具 (拒绝优先)。这可以防止不允许的工具被发送给模型提供商。
{
tools: { deny: ["browser"] },
}注意事项:
- 匹配不区分大小写。
- 支持
*通配符("*"表示所有工具)。 - 如果
tools.allow仅引用未知或未加载的插件工具名称,OpenClaw 会记录警告并忽略允许列表,以便核心工具保持可用。
工具配置文件(基础允许列表)
tools.profile 在 tools.allow/tools.deny 之前设置基础工具允许列表。 每代理覆盖:agents.list[].tools.profile。
配置文件:
minimal:仅session_statuscoding:group:fs、group:runtime、group:sessions、group:memory、imagemessaging:group:messaging、sessions_list、sessions_history、sessions_send、session_statusfull:无限制(与未设置相同)
示例(默认仅消息,也允许 Slack + Discord 工具):
{
tools: {
profile: "messaging",
allow: ["slack", "discord"],
},
}示例(编码配置文件,但在各处拒绝 exec/process):
{
tools: {
profile: "coding",
deny: ["group:runtime"],
},
}示例(全局编码配置文件,仅消息支持代理):
{
tools: { profile: "coding" },
agents: {
list: [
{
id: "support",
tools: { profile: "messaging", allow: ["slack"] },
},
],
},
}提供商特定的工具策略
使用 tools.byProvider 来进一步限制特定提供商的工具 (或单个 provider/model),而无需更改全局默认设置。 每代理覆盖:agents.list[].tools.byProvider。
这在基础工具配置文件之后和允许/拒绝列表之前应用, 因此它只能缩小工具集。 提供商键接受 provider(例如 google-antigravity)或 provider/model(例如 openai/gpt-5.2)。
示例(保持全局编码配置文件,但为 Google Antigravity 使用最小工具):
{
tools: {
profile: "coding",
byProvider: {
"google-antigravity": { profile: "minimal" },
},
},
}示例(针对不稳定端点的提供商/模型特定允许列表):
{
tools: {
allow: ["group:fs", "group:runtime", "sessions_list"],
byProvider: {
"openai/gpt-5.2": { allow: ["group:fs", "sessions_list"] },
},
},
}示例(针对单个提供商的代理特定覆盖):
{
agents: {
list: [
{
id: "support",
tools: {
byProvider: {
"google-antigravity": { allow: ["message", "sessions_list"] },
},
},
},
],
},
}工具组(快捷方式)
工具策略(全局、代理、沙盒)支持展开为多个工具的 group:* 条目。 在 tools.allow / tools.deny 中使用这些。
可用组:
group:runtime:exec、bash、processgroup:fs:read、write、edit、apply_patchgroup:sessions:sessions_list、sessions_history、sessions_send、sessions_spawn、session_statusgroup:memory:memory_search、memory_getgroup:web:web_search、web_fetchgroup:ui:browser、canvasgroup:automation:cron、gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw:所有内置 OpenClaw 工具(不包括提供商插件)
示例(仅允许文件工具 + 浏览器):
{
tools: {
allow: ["group:fs", "browser"],
},
}插件 + 工具
插件可以注册核心工具集之外的附加工具(和 CLI 命令)。 请参见 插件 了解安装 + 配置,以及 技能 了解 如何将工具使用指导注入提示中。一些插件随工具一起提供自己的技能 (例如,语音通话插件)。
可选插件工具:
工具清单
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)。- 網關/節點審批和允許列表:執行審批。
process
管理後台執行會話。
核心操作:
list、poll、log、write、kill、clear、remove
注意事項:
poll完成時返回新輸出和退出狀態。log支持基於行的offset/limit(省略offset以獲取最後 N 行)。process按代理範圍劃分;其他代理的會話不可見。
web_search
使用 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_fetch
從 URL 獲取並提取可讀內容(HTML → markdown/text)。
核心參數:
url(必需)extractMode(markdown|text)maxChars(截斷長頁面)
注意事項:
- 通過
tools.web.fetch.enabled啟用。 maxChars受tools.web.fetch.maxCharsCap限制(默認 50000)。- 響應被緩存(默認 15 分鐘)。
- 對於 JS 密集型網站,優先使用瀏覽器工具。
- 請參見 網絡工具 進行設置。
- 請參見 Firecrawl 了解可選的反機器人備用方案。
browser
控制專門的 OpenClaw 管理瀏覽器。
核心操作:
status、start、stop、tabs、open、focus、closesnapshot(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 個配置文件)。
- 遠程配置文件僅支持附加(無啟動/停止/重置)。
- 如果連接了支持瀏覽器的節點,工具可能會自動路由到它(除非您固定
target)。 - 安裝 Playwright 時,
snapshot默認為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、evalsnapshot(返回圖像塊 +MEDIA:\<path\>)a2ui_push、a2ui_reset
注意事項:
- 底層使用網關
node.invoke。 - 如果未提供
node,工具會選擇默認值(單個連接節點或本地 mac 節點)。 - A2UI 僅限 v0.8(無
createSurface);CLI 拒絕帶行錯誤的 v0.9 JSONL。 - 快速測試:
openclaw nodes canvas a2ui push --node \<id\> --text "來自 A2UI 的問候"。
nodes
發現和定位配對節點;發送通知;捕獲相機/屏幕。
核心操作:
status、describepending、approve、reject(配對)notify(macOSsystem.notify)run(macOSsystem.run)camera_snap、camera_clip、screen_recordlocation_get
注意事項:
- 相機/屏幕命令要求節點應用處於前臺。
- 圖像返回圖像塊 +
MEDIA:\<path\>。 - 視頻返回
FILE:\<path\>(mp4)。 - 位置返回 JSON 載荷(緯度/經度/精度/時間戳)。
run參數:commandargv 數組;可選cwd、env(KEY=VAL)、commandTimeoutMs、invokeTimeoutMs、needsScreenRecording。
示例(run):
{
"action": "run",
"node": "office-mac",
"command": ["echo", "你好"],
"env": ["FOO=bar"],
"commandTimeoutMs": 12000,
"invokeTimeoutMs": 45000,
"needsScreenRecording": false
}image
使用配置的圖像模型分析圖像。
核心參數:
image(必需路徑或 URL)prompt(可選;默認為 "描述圖像。")model(可選覆蓋)maxBytesMb(可選大小上限)
注意事項:
- 僅當配置了
agents.defaults.imageModel(主要或備用)時可用,或者當可以從您的默認模型 + 配置的認證推斷出隱式圖像模型時可用(盡力配對)。 - 直接使用圖像模型(獨立於主要聊天模型)。
message
跨 Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams 發送消息和頻道操作。
核心操作:
send(文本 + 可選媒體;MS Teams 還支持card用於自適應卡)poll(WhatsApp/Discord/MS Teams 投票)react/reactions/read/edit/deletepin/unpin/list-pinspermissionsthread-create/thread-list/thread-replysearchstickermember-info/role-infoemoji-list/emoji-upload/sticker-uploadrole-add/role-removechannel-info/channel-listvoice-statusevent-list/event-createtimeout/kick/ban
注意事項:
send通過網關路由 WhatsApp;其他頻道直連。poll對 WhatsApp 和 MS Teams 使用網關;Discord 投票直連。- 當消息工具調用綁定到活動聊天會話時,發送被限制到該會話的目標以避免跨上下文洩漏。
cron
管理網關定時任務和喚醒。
核心操作:
status、listadd、update、remove、run、runswake(排隊系統事件 + 可選立即心跳)
注意事項:
add期望完整的定時任務對象(與cron.addRPC 相同模式)。update使用{ jobId, patch }(為了兼容性接受id)。
gateway
重新啟動或應用更新到正在運行的網關進程(原地)。
核心操作:
restart(授權 + 發送SIGUSR1進行進程內重啟;openclaw gateway原地重啟)config.get/config.schemaconfig.apply(驗證 + 寫入配置 + 重啟 + 喚醒)config.patch(合併部分更新 + 重啟 + 喚醒)update.run(運行更新 + 重啟 + 喚醒)
注意事項:
- 使用
delayMs(默認為 2000)以避免中斷正在進行的回復。 restart默認禁用;通過commands.restart: true啟用。
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?、agentId?、model?、runTimeoutSeconds?、cleanup?session_status:sessionKey?(默認當前;接受sessionId)、model?(default清除覆蓋)
注意事項:
main是規範的直接聊天鍵;全局/未知的被隱藏。messageLimit > 0獲取每個會話的最後 N 條消息(過濾工具消息)。sessions_send當timeoutSeconds > 0時等待最終完成。- 交付/公告在完成後發生且盡力而為;
status: "ok"確認代理運行完成,而不是公告已交付。 sessions_spawn啟動子代理運行並向請求者聊天發布公告回復。sessions_spawn是非阻塞的,立即返回status: "accepted"。sessions_send運行回復乒乓(回復REPLY_SKIP停止;通過session.agentToAgent.maxPingPongTurns最大回合數,0–5)。- 乒乓之後,目標代理運行公告步驟;回復
ANNOUNCE_SKIP以抑制公告。
agents_list
列出當前會話可能通過 sessions_spawn 定向的代理 ID。
注意事項:
- 結果受限於每代理允許列表(
agents.list[].subagents.allowAgents)。 - 當配置了
["*"]時,工具包含所有配置的代理並標記allowAny: true。
參數(通用)
網關支持的工具(canvas、nodes、cron):
gatewayUrl(默認ws://127.0.0.1:18789)gatewayToken(如果啟用了認證)timeoutMs
注意:當設置 gatewayUrl 時,顯式包含 gatewayToken。工具不會繼承配置 或環境憑據進行覆蓋,缺少顯式憑據是錯誤。
瀏覽器工具:
profile(可選;默認為browser.defaultProfile)target(sandbox|host|node)node(可選;固定特定節點 ID/名稱)
推薦的代理流程
瀏覽器自動化:
browser→status/startsnapshot(ai 或 aria)act(click/type/press)- 如需視覺確認則
screenshot
畫布渲染:
canvas→presenta2ui_push(可選)snapshot
節點定向:
nodes→status- 對所選節點
describe notify/run/camera_snap/screen_record
安全
- 避免直接
system.run;僅在明確用戶同意下使用nodes→run。 - 尊重用戶對相機/屏幕捕獲的同意。
- 在調用媒體命令前使用
status/describe確保權限。
工具如何呈現給代理
工具通過兩個並行通道暴露:
- 系統提示文本:人類可讀的列表 + 指導。
- 工具模式:發送到模型 API 的結構化函數定義。
這意味著代理既能看到「存在哪些工具」也能看到「如何調用它們」。如果工具 不出現在系統提示或模式中,模型無法調用它。