工具搜尋為 PI 代理提供一種精簡方式來探索並呼叫大型工具 目錄。當執行階段有許多可用工具,但模型可能只需要其中少數幾個時, 它很有用。 為 PI 啟用時,模型預設會收到一個Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
tool_search_code 工具。
該工具會在隔離的 Node 子行程中執行一段簡短的 JavaScript 主體,並透過
openclaw.tools 橋接:
回合如何執行
在規劃階段,PI 嵌入式執行器會為該次執行建構有效目錄:- 解析代理、設定檔、沙箱和工作階段的作用中工具政策。
- 列出符合資格的 OpenClaw 和 Plugin 工具。
- 透過工作階段 MCP 執行階段列出符合資格的 MCP 工具。
- 加入目前執行所提供且符合資格的用戶端工具。
- 為搜尋索引精簡描述項。
- 向模型公開 PI 程式碼橋接或結構化後援工具。
openclaw.tools.call(...) 會跨越橋接回到 Gateway,正常的
政策、核准、hook、記錄和結果處理仍會套用。
模式
tools.toolSearch 有兩種面向模型的模式:
code:公開tool_search_code,預設的精簡 JavaScript 橋接。tools:將tool_search、tool_describe和tool_call公開為一般 結構化工具,供不應接收程式碼的提供者使用。
code 模式會在目錄壓縮前後援至 tools。
沒有個別的來源選擇設定。啟用工具搜尋時,目錄會在正常政策
篩選後,包含符合資格的 OpenClaw、MCP 和用戶端工具。
為什麼存在
大型目錄很有用,但成本高。將每個工具結構描述都傳送給模型 會讓請求變大、拖慢規劃,並增加意外選取工具的機率。 工具搜尋會改變形狀:- 直接工具:模型在第一個 token 前看到每個選定的結構描述
- 工具搜尋程式碼模式:模型看到一個精簡程式碼工具和一份簡短 API 契約
- 工具搜尋工具模式:模型看到三個精簡的結構化後援工具
- 回合期間:模型只載入實際需要的工具結構描述
API
openclaw.tools.search(query, options?)
搜尋目前執行的有效目錄。結果是精簡且安全的,可以放回提示詞脈絡中。
openclaw.tools.describe(id)
載入一個搜尋結果的完整中繼資料,包括精確的輸入結構描述。
openclaw.tools.call(id, args)
透過 OpenClaw 呼叫選定工具。
tool_searchtool_describetool_call
執行階段邊界
程式碼橋接會在短暫存在的 Node 子行程中執行。子行程啟動時會啟用 Node 權限模式、使用空環境、沒有檔案系統或網路授權,也沒有 子行程或 worker 授權。OpenClaw 會強制執行父行程牆鐘逾時, 並在逾時時終止子行程,包括非同步延續之後。 執行階段只公開:console.log、console.warn和console.erroropenclaw.tools.searchopenclaw.tools.describeopenclaw.tools.call
- 工具允許與拒絕政策
- 每代理和每沙箱工具限制
- 僅擁有者閘控
- 核准 hook
- Plugin
before_tool_callhook - 工作階段身分、記錄和遙測
設定
使用預設程式碼橋接為 PI 執行啟用工具搜尋:提示詞與遙測
工具搜尋會記錄足夠的遙測,以便與直接工具公開比較:- 傳送給 harness 的序列化工具和提示詞總位元組數
- 目錄大小和來源細分
- 搜尋、描述和呼叫次數
- 透過 OpenClaw 執行的最終工具呼叫
- 選定的工具 ID 和來源
- 模型一開始看到多少工具結構描述
- 它執行了多少次搜尋和描述操作
- 哪個最終工具被呼叫
- 結果是來自 OpenClaw、MCP,還是用戶端工具
E2E 驗證
Gateway E2E 執行器會使用 PI harness 證明兩條路徑:- 直接模式可以呼叫假 Plugin 工具。
- 工具搜尋可以呼叫相同的假 Plugin 工具。
- 直接模式會將假 Plugin 工具結構描述直接公開給提供者。
- 工具搜尋只公開精簡橋接。
- 對於大型假目錄,工具搜尋請求 payload 較小。
- 工作階段記錄會顯示預期的工具呼叫次數和橋接呼叫遙測。
失敗行為
工具搜尋應該封閉失敗:- 如果工具不在有效政策中,搜尋不應回傳它
- 如果選定工具變得無法使用,
tool_call應失敗 - 如果政策或核准阻擋執行,呼叫結果應回報該阻擋, 而不是繞過它
- 如果程式碼橋接無法建立隔離執行階段,請使用
mode: "tools", 或對該部署停用工具搜尋