tools.toolSearch。
為 OpenClaw 執行啟用時,模型預設會收到一個 tool_search_code 工具。該工具會在隔離的 節點 子行程中執行一小段 JavaScript 主體,並透過 openclaw.tools 橋接:
一次回合如何執行
在規劃時,OpenClaw 內嵌 runner 會為此次執行建立有效目錄:- 解析代理、profile、sandbox 和 session 的作用中工具政策。
- 列出符合資格的 OpenClaw 和外掛工具。
- 透過 session MCP 執行階段列出符合資格的 MCP 工具。
- 加入目前執行所提供且符合資格的用戶端工具。
- 為搜尋索引精簡描述項。
- 向模型公開 OpenClaw 程式碼橋接、結構化 fallback 工具,或精簡目錄介面。
openclaw.tools.call(...) 會跨過橋接回到 閘道,在那裡仍會套用一般的政策、核准、hook、記錄和結果處理。
模式
tools.toolSearch 有三種面向模型的模式:
code:公開tool_search_code,預設的精簡 JavaScript 橋接。tools:將tool_search、tool_describe和tool_call作為純結構化工具公開,適用於不應接收程式碼的提供者。directory:公開tool_search、tool_describe和tool_call,並提供可用工具名稱與描述的有界 prompt 目錄,適用於應看見工具名稱但不應看見每個完整 schema 的提供者。OpenClaw 也可以直接為目前回合公開一小組有界的可能或必要工具 schema。
code 模式會在目錄壓縮前 fallback 到 tools。在 directory 模式中,用戶端提供的工具會在目前執行中保持直接可見,而 OpenClaw 工具、外掛工具和 MCP 工具可以壓縮到目錄目錄後方。對精確隱藏目錄名稱的直接呼叫,會在執行前從同一個已授權目錄中 hydration。
所有模式都是實驗性的。小型 OpenClaw 工具目錄應優先使用直接工具公開,而 Codex harness 執行應優先使用 Codex 原生穩定介面。
沒有個別的來源選擇設定。啟用 Tool Search 時,目錄會在一般政策篩選後包含符合資格的 OpenClaw、MCP 和用戶端工具。
這為什麼存在
大型目錄很有用,但成本高。將每個工具 schema 傳送給模型會讓請求變大、拖慢規劃,並增加意外選擇工具的機率。 Tool Search 會改變形態:- 直接工具:模型在第一個 token 前會看到每個選定的 schema
- Tool Search 程式碼模式:模型會看到一個精簡程式碼工具和一段短 API 合約
- Tool Search 工具模式:模型會看到三個精簡的結構化 fallback 工具
- Tool Search 目錄模式:模型會看到有界目錄加上搜尋/描述/呼叫控制項,以及一小組有界的可能或必要 schema
- 回合期間:模型可視需要載入其餘 schema
API
openclaw.tools.search(query, options?)
搜尋目前執行的有效目錄。結果是精簡的,且可安全放回 prompt context。
openclaw.tools.describe(id)
載入一個搜尋結果的完整中繼資料,包括精確的輸入 schema。
openclaw.tools.call(id, args)
透過 OpenClaw 呼叫選定的工具。
tool_searchtool_describetool_call
tool_searchtool_describetool_call
tool_search 尋找它們。如果模型直接要求精確的隱藏目錄工具名稱,OpenClaw 會在一般執行前從已授權目錄中 hydration。
目錄模式的用戶端工具名稱不得與 OpenClaw、外掛或 MCP 工具名稱衝突,因為精確的延遲 dispatch 會使用這些名稱。
執行階段邊界
程式碼橋接會在短生命週期的 節點 子行程中執行。子行程啟動時會啟用 節點 權限模式,使用空環境,沒有檔案系統或網路授權,也沒有子行程或 worker 授權。OpenClaw 會強制執行父行程 wall-clock timeout,並在逾時時終止子行程,包括非同步延續之後。 執行階段只公開:console.log、console.warn和console.erroropenclaw.tools.searchopenclaw.tools.describeopenclaw.tools.call
- 工具允許與拒絕政策
- 每代理和每 sandbox 的工具限制
- channel/執行階段工具政策
- 核准 hook
- 外掛
before_tool_callhook - session 身分、記錄和遙測
設定
使用預設程式碼橋接為 OpenClaw 執行啟用 Tool Search:codeTimeoutMs 夾限在 1000-60000、maxSearchLimit 夾限在 1-50,並將 searchDefaultLimit 夾限在 1..maxSearchLimit。
停用它:
Prompt 和遙測
Tool Search 會記錄足夠的遙測,以便與直接工具公開比較:- 傳送到 harness 的序列化工具與 prompt 總位元組數
- 目錄大小和來源細分
- 搜尋、描述和呼叫次數
- 透過 OpenClaw 執行的最終工具呼叫
- 選定的工具 ID 和來源
- 模型一開始看到多少工具 schema
- 它執行了多少搜尋和描述操作
- 呼叫了哪個最終工具
- 結果是來自 OpenClaw、MCP,還是用戶端工具
E2E 驗證
QA Lab 閘道 場景會以 OpenClaw 執行階段證明兩條路徑:- 直接模式可以呼叫假外掛工具。
- Tool Search 可以呼叫同一個假外掛工具。
- 直接模式會直接向提供者公開假外掛工具 schema。
- Tool Search 只公開精簡橋接。
- 對於大型假目錄,Tool Search 請求 payload 較小。
- Session 記錄會顯示預期的工具呼叫次數和橋接呼叫遙測。
失敗行為
Tool Search 應 fail closed:- 如果工具不在有效政策中,搜尋不應傳回它
- 如果選定的工具變成不可用,
tool_call應失敗 - 如果政策或核准阻止執行,呼叫結果應回報該阻擋,而不是繞過它
- 如果程式碼橋接無法建立隔離執行階段,請使用
mode: "tools",或對該部署停用 Tool Search