Tools
Wyszukiwanie narzędzi
Wyszukiwanie narzędzi to eksperymentalna funkcja środowiska uruchomieniowego agenta OpenClaw. Daje agentom jeden kompaktowy sposób odkrywania i wywoływania dużych katalogów narzędzi. Jest przydatne, gdy uruchomienie ma wiele dostępnych narzędzi, ale model prawdopodobnie będzie potrzebował tylko kilku z nich.
Ta strona dokumentuje wyszukiwanie narzędzi OpenClaw. Nie jest to natywna dla Codex
powierzchnia wyszukiwania narzędzi ani narzędzi dynamicznych. Natywny tryb kodu Codex, wyszukiwanie narzędzi, odroczone
narzędzia dynamiczne i zagnieżdżone wywołania narzędzi są stabilnymi powierzchniami środowiska Codex i
nie zależą od tools.toolSearch.
Po włączeniu dla uruchomień OpenClaw model domyślnie otrzymuje jedno narzędzie tool_search_code.
To narzędzie uruchamia krótki kod JavaScript w izolowanym podprocesie Node
z mostkiem openclaw.tools:
const hits = await openclaw.tools.search("create a GitHub issue");const tool = await openclaw.tools.describe(hits[0].id);return await openclaw.tools.call(tool.id, { title: "Crash on startup", body: "Steps to reproduce...",});Katalog może obejmować narzędzia OpenClaw, narzędzia Plugin, narzędzia MCP oraz narzędzia dostarczone przez klienta. Model nie widzi z góry każdego pełnego schematu. Zamiast tego przeszukuje kompaktowe deskryptory, opisuje jedno wybrane narzędzie, gdy potrzebuje dokładnego schematu, i wywołuje to narzędzie przez OpenClaw.
Uruchomienia środowiska Codex nie otrzymują tych eksperymentalnych kontrolek wyszukiwania narzędzi OpenClaw. OpenClaw przekazuje możliwości produktu do Codex jako narzędzia dynamiczne, a Codex odpowiada za stabilny natywny tryb kodu, natywne wyszukiwanie narzędzi, odroczone narzędzia dynamiczne i zagnieżdżone wywołania narzędzi.
Jak przebiega tura
W czasie planowania osadzony runner OpenClaw buduje efektywny katalog dla uruchomienia:
- Rozwiązuje aktywną politykę narzędzi dla agenta, profilu, sandboxa i sesji.
- Wyświetla kwalifikujące się narzędzia OpenClaw i Plugin.
- Wyświetla kwalifikujące się narzędzia MCP przez środowisko uruchomieniowe MCP sesji.
- Dodaje kwalifikujące się narzędzia klienta dostarczone dla bieżącego uruchomienia.
- Indeksuje kompaktowe deskryptory do wyszukiwania.
- Udostępnia modelowi mostek kodu OpenClaw, strukturalne narzędzia awaryjne albo kompaktową powierzchnię katalogu.
W czasie wykonania każde rzeczywiste wywołanie narzędzia wraca do OpenClaw. Izolowane środowisko Node
nie przechowuje implementacji Plugin, obiektów klienta MCP ani sekretów.
openclaw.tools.call(...) przechodzi przez mostek z powrotem do Gateway, gdzie
nadal obowiązuje normalna polityka, zatwierdzanie, haki, logowanie i obsługa wyników.
Tryby
tools.toolSearch ma trzy tryby widoczne dla modelu:
code: udostępniatool_search_code, domyślny kompaktowy mostek JavaScript.tools: udostępniatool_search,tool_describeitool_calljako zwykłe narzędzia strukturalne dla dostawców, którzy nie powinni otrzymywać kodu.directory: udostępniatool_search,tool_describeitool_calloraz ograniczony katalog promptu z nazwami i opisami dostępnych narzędzi dla dostawców, którzy powinni widzieć nazwy narzędzi bez każdego pełnego schematu. OpenClaw może także bezpośrednio udostępnić mały ograniczony zestaw prawdopodobnych lub wymaganych schematów narzędzi dla bieżącej tury.
Wszystkie tryby używają tego samego katalogu filtrowanego przez politykę i normalnej ścieżki wykonania
OpenClaw. Jeśli bieżące środowisko uruchomieniowe nie może uruchomić izolowanego procesu potomnego Node
dla trybu kodu, domyślny tryb code przechodzi awaryjnie na tools przed
kompaktowaniem katalogu. W trybie directory narzędzia dostarczone przez klienta pozostają bezpośrednio widoczne
dla bieżącego uruchomienia, podczas gdy narzędzia OpenClaw, narzędzia Plugin i narzędzia MCP mogą być
skompaktowane za katalogiem. Bezpośrednie wywołanie dokładnej ukrytej
nazwy katalogowej jest przed wykonaniem hydratowane z tego samego autoryzowanego katalogu.
Wszystkie tryby są eksperymentalne. Preferuj bezpośrednie udostępnianie narzędzi dla małych katalogów narzędzi OpenClaw i preferuj natywne stabilne powierzchnie Codex dla uruchomień środowiska Codex.
Nie ma osobnej konfiguracji wyboru źródeł. Gdy wyszukiwanie narzędzi jest włączone, katalog obejmuje kwalifikujące się narzędzia OpenClaw, MCP i klienta po normalnym filtrowaniu przez politykę.
Dlaczego to istnieje
Duże katalogi są użyteczne, ale kosztowne. Wysyłanie każdego schematu narzędzia do modelu powiększa żądanie, spowalnia planowanie i zwiększa ryzyko przypadkowego wyboru narzędzia.
Wyszukiwanie narzędzi zmienia kształt:
- narzędzia bezpośrednie: model widzi każdy wybrany schemat przed pierwszym tokenem
- tryb kodu wyszukiwania narzędzi: model widzi jedno kompaktowe narzędzie kodu i krótką umowę API
- tryb narzędzi wyszukiwania narzędzi: model widzi trzy kompaktowe strukturalne narzędzia awaryjne
- tryb katalogu wyszukiwania narzędzi: model widzi ograniczony katalog oraz kontrolki wyszukiwania/opisu/wywołania i mały ograniczony zestaw prawdopodobnych lub wymaganych schematów
- podczas tury: model może ładować pozostałe schematy w razie potrzeby
Bezpośrednie udostępnianie narzędzi nadal jest właściwą wartością domyślną dla małych katalogów. Wyszukiwanie narzędzi sprawdza się najlepiej, gdy jedno uruchomienie może widzieć wiele narzędzi, szczególnie z serwerów MCP lub narzędzi aplikacji dostarczonych przez klienta.
API
openclaw.tools.search(query, options?)
Przeszukuje efektywny katalog dla bieżącego uruchomienia. Wyniki są kompaktowe i bezpieczne do ponownego umieszczenia w kontekście promptu.
const hits = await openclaw.tools.search("calendar event", { limit: 5 });openclaw.tools.describe(id)
Ładuje pełne metadane dla jednego wyniku wyszukiwania, w tym dokładny schemat wejściowy.
const calendarCreate = await openclaw.tools.describe("mcp:calendar:create_event");openclaw.tools.call(id, args)
Wywołuje wybrane narzędzie przez OpenClaw.
await openclaw.tools.call(calendarCreate.id, { summary: "Planning", start: "2026-05-09T14:00:00Z",});Strukturalny tryb awaryjny udostępnia te same operacje jako narzędzia:
tool_searchtool_describetool_call
Tryb katalogu udostępnia:
tool_searchtool_describetool_call
Zachowuje też bezpośrednią widoczność narzędzi dostarczonych przez klienta i może bezpośrednio udostępnić mały
ograniczony zestaw prawdopodobnych lub wymaganych schematów narzędzi katalogu dla bieżącej
tury. Jeśli ograniczony katalog pomija wpisy, użyj tool_search, aby je znaleźć. Jeśli
model zażąda bezpośrednio dokładnej ukrytej nazwy narzędzia katalogowego, OpenClaw
hydratuje je z autoryzowanego katalogu przed normalnym wykonaniem.
Nazwy narzędzi klienta w trybie katalogu nie mogą kolidować z nazwami narzędzi OpenClaw, Plugin ani MCP,
ponieważ dokładne odroczone przekierowanie używa tych nazw.
Granica środowiska uruchomieniowego
Mostek kodu działa w krótkotrwałym podprocesie Node. Podproces startuje z włączonym trybem uprawnień Node, pustym środowiskiem, bez uprawnień do systemu plików ani sieci oraz bez uprawnień do procesów potomnych lub workerów. OpenClaw wymusza limit czasu zegarowego procesu nadrzędnego i zabija podproces po przekroczeniu limitu, także po asynchronicznych kontynuacjach.
Środowisko uruchomieniowe udostępnia tylko:
console.log,console.warniconsole.erroropenclaw.tools.searchopenclaw.tools.describeopenclaw.tools.call
Normalne zachowanie OpenClaw nadal obowiązuje dla końcowych wywołań:
- polityki dopuszczania i blokowania narzędzi
- ograniczenia narzędzi na agenta i sandbox
- polityka narzędzi kanału/środowiska uruchomieniowego
- haki zatwierdzania
- haki Plugin
before_tool_call - tożsamość sesji, logi i telemetria
Konfiguracja
Włącz wyszukiwanie narzędzi dla uruchomień OpenClaw z domyślnym mostkiem kodu:
openclaw config set tools.toolSearch trueRównoważny JSON:
{ tools: { toolSearch: true, },}Zamiast tego użyj strukturalnych narzędzi awaryjnych dla uruchomień OpenClaw:
{ tools: { toolSearch: { mode: "tools", }, },}Zamiast tego użyj kompaktowej powierzchni katalogu dla uruchomień OpenClaw:
{ tools: { toolSearch: { mode: "directory", }, },}Dostosuj limit czasu trybu kodu i limity wyników wyszukiwania:
{ tools: { toolSearch: { mode: "code", codeTimeoutMs: 10000, searchDefaultLimit: 8, maxSearchLimit: 20, }, },}Wyłącz:
{ tools: { toolSearch: false, },}Prompt i telemetria
Wyszukiwanie narzędzi rejestruje wystarczającą telemetrię, aby porównać je z bezpośrednim udostępnianiem narzędzi:
- łączna liczba zserializowanych bajtów narzędzi i promptu wysłanych do środowiska
- rozmiar katalogu i podział według źródeł
- liczby wyszukiwań, opisów i wywołań
- końcowe wywołania narzędzi wykonane przez OpenClaw
- wybrane identyfikatory narzędzi i źródła
Logi sesji powinny pozwalać odpowiedzieć:
- ile schematów narzędzi model zobaczył z góry
- ile operacji wyszukiwania i opisu wykonał
- które końcowe narzędzie zostało wywołane
- czy wynik pochodził z OpenClaw, MCP, czy narzędzia klienta
Walidacja E2E
Scenariusz Gateway w QA Lab potwierdza obie ścieżki ze środowiskiem uruchomieniowym OpenClaw:
pnpm openclaw qa suite --provider-mode mock-openai --scenario tool-search-gateway-e2eTworzy tymczasowy fałszywy Plugin z dużym katalogiem narzędzi, uruchamia pozorowanego dostawcę OpenAI, uruchamia Gateway raz w trybie bezpośrednim i raz z włączonym wyszukiwaniem narzędzi, a następnie porównuje ładunki żądań dostawcy i logi sesji.
Regresja dowodzi, że:
- Tryb bezpośredni może wywołać narzędzie fałszywego Plugin.
- Wyszukiwanie narzędzi może wywołać to samo narzędzie fałszywego Plugin.
- Tryb bezpośredni udostępnia schematy narzędzi fałszywego Plugin bezpośrednio dostawcy.
- Wyszukiwanie narzędzi udostępnia tylko kompaktowy mostek.
- Ładunek żądania wyszukiwania narzędzi jest mniejszy dla dużego fałszywego katalogu.
- Logi sesji pokazują oczekiwane liczby wywołań narzędzi i telemetrię wywołań przez mostek.
Zachowanie w razie błędu
Wyszukiwanie narzędzi powinno kończyć się w sposób zamknięty:
- jeśli narzędzia nie ma w efektywnej polityce, wyszukiwanie nie powinno go zwracać
- jeśli wybrane narzędzie przestanie być dostępne,
tool_callpowinno się nie powieść - jeśli polityka lub zatwierdzanie blokuje wykonanie, wynik wywołania powinien zgłosić tę blokadę zamiast ją omijać
- jeśli mostek kodu nie może utworzyć izolowanego środowiska uruchomieniowego, użyj
mode: "tools"albo wyłącz wyszukiwanie narzędzi dla tego wdrożenia