Narzędzia (OpenClaw)
OpenClaw udostępnia natywne narzędzia agenta dla przeglądarki, canvas, węzłów i cron. Zastępują one stare skillsopenclaw-*: narzędzia są typowane, bez wywołań powłoki,
a agent powinien polegać na nich bezpośrednio.
Wyłączanie narzędzi
Możesz globalnie zezwalać/odmawiać narzędzi za pomocątools.allow / tools.deny w openclaw.json
(priorytet ma odmowa). Zapobiega to wysyłaniu niedozwolonych narzędzi do dostawców modeli.
- Dopasowanie jest niewrażliwe na wielkość liter.
- Obsługiwane są symbole wieloznaczne
*("*"oznacza wszystkie narzędzia). - Jeśli
tools.allowodwołuje się wyłącznie do nieznanych lub niezaładowanych nazw narzędzi wtyczek, OpenClaw zapisuje ostrzeżenie i ignoruje listę dozwolonych, aby narzędzia rdzeniowe pozostały dostępne.
Profile narzędzi (bazowa lista dozwolonych)
tools.profile ustawia bazową listę dozwolonych narzędzi przed tools.allow/tools.deny.
Nadpisanie per-agent: agents.list[].tools.profile.
Profile:
minimal: tylkosession_statuscoding:group:fs,group:runtime,group:sessions,group:memory,imagemessaging:group:messaging,sessions_list,sessions_history,sessions_send,session_statusfull: brak ograniczeń (tak samo jak brak ustawienia)
Polityka narzędzi specyficzna dla dostawcy
Użyjtools.byProvider, aby dodatkowo zawęzić narzędzia dla konkretnych dostawców
(lub pojedynczego provider/model) bez zmiany globalnych domyślnych ustawień.
Nadpisanie per-agent: agents.list[].tools.byProvider.
Jest to stosowane po bazowym profilu narzędzi i przed listami zezwalania/odmowy,
więc może jedynie zawężać zestaw narzędzi.
Klucze dostawców akceptują zarówno provider (np. google-antigravity), jak i
provider/model (np. openai/gpt-5.2).
Przykład (zachowaj globalny profil programistyczny, ale minimalne narzędzia dla Google Antigravity):
Grupy narzędzi (skróty)
Polityki narzędzi (globalne, per-agent, sandbox) obsługują wpisygroup:*, które rozwijają się do wielu narzędzi.
Używaj ich w tools.allow / tools.deny.
Dostępne grupy:
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: wszystkie wbudowane narzędzia OpenClaw (z wyłączeniem wtyczek dostawców)
Wtyczki + narzędzia
Wtyczki mogą rejestrować dodatkowe narzędzia (oraz polecenia CLI) poza zestawem rdzeniowym. Zobacz Plugins dla instalacji i konfiguracji oraz Skills, aby dowiedzieć się, jak wskazówki użycia narzędzi są wstrzykiwane do promptów. Niektóre wtyczki dostarczają własne skills obok narzędzi (na przykład wtyczka połączeń głosowych). Opcjonalne narzędzia wtyczek:- Lobster: typowany runtime przepływów pracy z wznawialnymi zatwierdzeniami (wymaga Lobster CLI na hoście gateway).
- LLM Task: krok LLM wyłącznie JSON dla ustrukturyzowanego wyjścia przepływu pracy (opcjonalna walidacja schematu).
Inwentarz narzędzi
apply_patch
Stosuj ustrukturyzowane łatki do jednego lub wielu plików. Używaj do edycji wielohunkowych.
Eksperymentalne: włącz przez tools.exec.applyPatch.enabled (tylko modele OpenAI).
tools.exec.applyPatch.workspaceOnly domyślnie ma wartość true (ograniczone do workspace). Ustaw na false tylko jeśli celowo chcesz, aby apply_patch zapisywał/usuwał poza katalogiem workspace.
exec
Uruchamiaj polecenia powłoki w obszarze roboczym.
Podstawowe parametry:
command(wymagane)yieldMs(automatyczne tło po przekroczeniu limitu czasu, domyślnie 10000)background(natychmiastowe uruchomienie w tle)timeout(sekundy; zabija proces po przekroczeniu, domyślnie 1800)elevated(bool; uruchom na hoście, jeśli tryb podwyższony jest włączony/dozwolony; zmienia zachowanie tylko gdy agent jest w sandbox)host(sandbox | gateway | node)security(deny | allowlist | full)ask(off | on-miss | always)node(id/nazwa węzła dlahost=node)- Potrzebny prawdziwy TTY? Ustaw
pty: true.
- Zwraca
status: "running"zsessionIdpo uruchomieniu w tle. - Użyj
process, aby odpytywać/logować/zapisywać/zabijać/czyścić sesje w tle. - Jeśli
processjest niedozwolone,execdziała synchronicznie i ignorujeyieldMs/background. elevatedjest ograniczone przeztools.elevatedoraz ewentualne nadpisanieagents.list[].tools.elevated(oba muszą zezwalać) i jest aliasem dlahost=gateway+security=full.elevatedzmienia zachowanie tylko gdy agent jest w sandbox (w przeciwnym razie brak efektu).host=nodemoże wskazywać aplikację towarzyszącą na macOS lub bezgłowy host węzła (openclaw node run).- Zatwierdzanie gateway/węzłów i listy dozwolonych: Exec approvals.
process
Zarządzaj sesjami exec w tle.
Podstawowe akcje:
list,poll,log,write,kill,clear,remove
pollzwraca nowe wyjście i status zakończenia po ukończeniu.logobsługuje linioweoffset/limit(pomińoffset, aby pobrać ostatnie N linii).processjest zakresowane per-agent; sesje innych agentów nie są widoczne.
web_search
Wyszukuj w sieci za pomocą Brave Search API.
Podstawowe parametry:
query(wymagane)count(1–10; domyślnie ztools.web.search.maxResults)
- Wymaga klucza Brave API (zalecane:
openclaw configure --section weblub ustawBRAVE_API_KEY). - Włącz przez
tools.web.search.enabled. - Odpowiedzi są buforowane (domyślnie 15 min).
- Zobacz Web tools dla konfiguracji.
web_fetch
Pobieraj i wyodrębniaj czytelną treść z URL (HTML → markdown/tekst).
Podstawowe parametry:
url(wymagane)extractMode(markdown|text)maxChars(przycinanie długich stron)
- Włącz przez
tools.web.fetch.enabled. maxCharsjest ograniczane przeztools.web.fetch.maxCharsCap(domyślnie 50000).- Odpowiedzi są buforowane (domyślnie 15 min).
- Dla stron intensywnie wykorzystujących JS preferuj narzędzie przeglądarki.
- Zobacz Web tools dla konfiguracji.
- Zobacz Firecrawl dla opcjonalnego obejścia anty-botów.
browser
Steruj dedykowaną przeglądarką zarządzaną przez OpenClaw.
Podstawowe akcje:
status,start,stop,tabs,open,focus,closesnapshot(aria/ai)screenshot(zwraca blok obrazu +MEDIA:<path>)act(akcje UI: click/type/press/hover/drag/select/fill/resize/wait/evaluate)navigate,console,pdf,upload,dialog
profiles— lista wszystkich profili przeglądarki ze statusemcreate-profile— utwórz nowy profil z automatycznie przydzielonym portem (lubcdpUrl)delete-profile— zatrzymaj przeglądarkę, usuń dane użytkownika, usuń z konfiguracji (tylko lokalnie)reset-profile— zabij osierocony proces na porcie profilu (tylko lokalnie)
profile(opcjonalne; domyślniebrowser.defaultProfile)target(sandbox|host|node)node(opcjonalne; wybiera konkretny id/nazwę węzła) Uwagi:- Wymaga
browser.enabled=true(domyślnietrue; ustawfalse, aby wyłączyć). - Wszystkie akcje akceptują opcjonalny parametr
profiledla obsługi wielu instancji. - Gdy
profilejest pominięte, używany jestbrowser.defaultProfile(domyślnie „chrome”). - Nazwy profili: tylko małe litery alfanumeryczne + myślniki (maks. 64 znaki).
- Zakres portów: 18800–18899 (~maks. 100 profili).
- Profile zdalne są tylko do podłączania (bez start/stop/reset).
- Jeśli podłączony jest węzeł z obsługą przeglądarki, narzędzie może automatycznie do niego kierować (chyba że przypniesz
target). snapshotdomyślnie używaaigdy zainstalowany jest Playwright; użyjariadla drzewa dostępności.snapshotobsługuje także opcje migawki ról (interactive,compact,depth,selector), które zwracają odwołania takie jake12.actwymagarefzsnapshot(numeryczne12z migawek AI lube12z migawek ról); użyjevaluatedla rzadkich potrzeb selektora CSS.- Domyślnie unikaj
act→wait; używaj tylko w wyjątkowych przypadkach (brak wiarygodnego stanu UI do oczekiwania). uploadmoże opcjonalnie przekazaćrefdo automatycznego kliknięcia po uzbrojeniu.uploadobsługuje takżeinputRef(ref aria) lubelement(selektor CSS), aby ustawić<input type="file">bezpośrednio.
canvas
Steruj Canvas węzła (present, eval, snapshot, A2UI).
Podstawowe akcje:
present,hide,navigate,evalsnapshot(zwraca blok obrazu +MEDIA:<path>)a2ui_push,a2ui_reset
- Pod spodem używa
node.invokeGateway. - Jeśli nie podano
node, narzędzie wybiera domyślny (pojedynczy podłączony węzeł lub lokalny węzeł mac). - A2UI jest tylko v0.8 (brak
createSurface); CLI odrzuca JSONL v0.9 z błędami linii. - Szybki test:
openclaw nodes canvas a2ui push --node <id> --text "Hello from A2UI".
nodes
Wykrywaj i adresuj sparowane węzły; wysyłaj powiadomienia; przechwytuj kamerę/ekran.
Podstawowe akcje:
status,describepending,approve,reject(parowanie)notify(macOSsystem.notify)run(macOSsystem.run)camera_snap,camera_clip,screen_recordlocation_get
- Polecenia kamery/ekranu wymagają, aby aplikacja węzła była na pierwszym planie.
- Obrazy zwracają bloki obrazu +
MEDIA:<path>. - Wideo zwraca
FILE:<path>(mp4). - Lokalizacja zwraca ładunek JSON (lat/lon/dokładność/znacznik czasu).
- Parametry
run: tablica argvcommand; opcjonalnecwd,env(KEY=VAL),commandTimeoutMs,invokeTimeoutMs,needsScreenRecording.
run):
image
Analizuj obraz za pomocą skonfigurowanego modelu obrazu.
Podstawowe parametry:
image(wymagana ścieżka lub URL)prompt(opcjonalne; domyślnie „Describe the image.”)model(opcjonalne nadpisanie)maxBytesMb(opcjonalny limit rozmiaru)
- Dostępne tylko gdy skonfigurowano
agents.defaults.imageModel(główny lub zapasowe), albo gdy można wnioskować implicytny model obrazu z domyślnego modelu + skonfigurowanego uwierzytelniania (parowanie best-effort). - Używa bezpośrednio modelu obrazu (niezależnie od głównego modelu czatu).
message
Wysyłaj wiadomości i akcje kanałów w Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams.
Podstawowe akcje:
send(tekst + opcjonalne media; MS Teams obsługuje teżcarddla Adaptive Cards)poll(ankiety 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
sendkieruje WhatsApp przez Gateway; pozostałe kanały idą bezpośrednio.pollużywa Gateway dla WhatsApp i MS Teams; ankiety Discord idą bezpośrednio.- Gdy wywołanie narzędzia wiadomości jest powiązane z aktywną sesją czatu, wysyłki są ograniczone do celu tej sesji, aby uniknąć wycieków między kontekstami.
cron
Zarządzaj zadaniami cron i wybudzeniami Gateway.
Podstawowe akcje:
status,listadd,update,remove,run,runswake(kolejkuj zdarzenie systemowe + opcjonalny natychmiastowy heartbeat)
addoczekuje pełnego obiektu zadania cron (ten sam schemat co RPCcron.add).updateużywa{ jobId, patch }(idakceptowane dla kompatybilności).
gateway
Restartuj lub stosuj aktualizacje do działającego procesu Gateway (in-place).
Podstawowe akcje:
restart(autoryzuje + wysyłaSIGUSR1do restartu w procesie;openclaw gatewayrestart in-place)config.get/config.schemaconfig.apply(waliduj + zapisz konfigurację + restart + wybudź)config.patch(scal częściową aktualizację + restart + wybudź)update.run(uruchom aktualizację + restart + wybudź)
- Użyj
delayMs(domyślnie 2000), aby nie przerywać odpowiedzi w toku. restartjest domyślnie wyłączone; włącz przezcommands.restart: true.
sessions_list / sessions_history / sessions_send / sessions_spawn / session_status
Wyświetl listę sesji, przejrzyj historię transkryptów lub wyślij do innej sesji.
Podstawowe parametry:
sessions_list:kinds?,limit?,activeMinutes?,messageLimit?(0 = brak)sessions_history:sessionKey(lubsessionId),limit?,includeTools?sessions_send:sessionKey(lubsessionId),message,timeoutSeconds?(0 = fire-and-forget)sessions_spawn:task,label?,agentId?,model?,runTimeoutSeconds?,cleanup?session_status:sessionKey?(domyślnie bieżąca; akceptujesessionId),model?(defaultczyści nadpisanie)
mainjest kanonicznym kluczem czatu bezpośredniego; globalne/nieznane są ukryte.messageLimit > 0pobiera ostatnie N wiadomości na sesję (wiadomości narzędzi są filtrowane).sessions_sendczeka na ostateczne zakończenie, gdytimeoutSeconds > 0.- Dostarczenie/ogłoszenie następuje po zakończeniu i jest best-effort;
status: "ok"potwierdza zakończenie uruchomienia agenta, a nie dostarczenie ogłoszenia. sessions_spawnuruchamia pod-agenta i publikuje odpowiedź-ogłoszenie z powrotem do czatu żądającego.sessions_spawnjest nieblokujące i natychmiast zwracastatus: "accepted".sessions_senduruchamia ping‑pong odpowiedzi (odpowiedzREPLY_SKIP, aby zatrzymać; maks. tury przezsession.agentToAgent.maxPingPongTurns, 0–5).- Po ping‑pongu agent docelowy wykonuje krok ogłoszenia; odpowiedz
ANNOUNCE_SKIP, aby stłumić ogłoszenie.
agents_list
Wyświetl listę identyfikatorów agentów, które bieżąca sesja może wskazać za pomocą sessions_spawn.
Uwagi:
- Wynik jest ograniczony do list dozwolonych per-agent (
agents.list[].subagents.allowAgents). - Gdy skonfigurowano
["*"], narzędzie uwzględnia wszystkich skonfigurowanych agentów i oznaczaallowAny: true.
Parametry (wspólne)
Narzędzia oparte o Gateway (canvas, nodes, cron):
gatewayUrl(domyślniews://127.0.0.1:18789)gatewayToken(jeśli uwierzytelnianie włączone)timeoutMs
gatewayUrl, dołącz gatewayToken jawnie. Narzędzia nie dziedziczą konfiguracji
ani poświadczeń środowiskowych dla nadpisań, a brak jawnych poświadczeń jest błędem.
Narzędzie przeglądarki:
profile(opcjonalne; domyślniebrowser.defaultProfile)target(sandbox|host|node)node(opcjonalne; przypnij konkretny id/nazwę węzła)
Zalecane przepływy agenta
Automatyzacja przeglądarki:browser→status/startsnapshot(ai lub aria)act(click/type/press)screenshot, jeśli potrzebujesz potwierdzenia wizualnego
canvas→presenta2ui_push(opcjonalne)snapshot
nodes→statusdescribena wybranym węźlenotify/run/camera_snap/screen_record
Bezpieczeństwo
- Unikaj bezpośredniego
system.run; używajnodes→runtylko za wyraźną zgodą użytkownika. - Szanuj zgodę użytkownika na przechwytywanie kamery/ekranu.
- Użyj
status/describe, aby upewnić się co do uprawnień przed wywołaniem poleceń multimediów.
Jak narzędzia są prezentowane agentowi
Narzędzia są udostępniane w dwóch równoległych kanałach:- Tekst promptu systemowego: lista czytelna dla człowieka + wskazówki.
- Schemat narzędzi: ustrukturyzowane definicje funkcji wysyłane do API modelu.