Node to urządzenie towarzyszące (macOS/iOS/Android/headless), które łączy się z WebSocket Gateway (ten sam port co operatorzy) zDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
role: "node" i udostępnia powierzchnię poleceń (np. canvas.*, camera.*, device.*, notifications.*, system.*) przez node.invoke. Szczegóły protokołu: protokół Gateway.
Starszy transport: protokół Bridge (TCP JSONL;
tylko historycznie dla obecnych nodów).
macOS może też działać w trybie node: aplikacja na pasku menu łączy się z serwerem
WS Gateway i udostępnia swoje lokalne polecenia canvas/camera jako node (dzięki czemu
openclaw nodes … działa względem tego Maca). W trybie zdalnego gatewaya automatyzacja
przeglądarki jest obsługiwana przez host node CLI (openclaw node run albo
zainstalowaną usługę node), a nie przez node aplikacji natywnej.
Uwagi:
- Nody są peryferiami, nie gatewayami. Nie uruchamiają usługi gatewaya.
- Wiadomości Telegram/WhatsApp/itp. trafiają do gatewaya, nie do nodów.
- Runbook rozwiązywania problemów: /nodes/troubleshooting
Parowanie + status
Nody WS używają parowania urządzeń. Nody przedstawiają tożsamość urządzenia podczasconnect; Gateway
tworzy żądanie parowania urządzenia dla role: node. Zatwierdź przez CLI urządzeń (albo UI).
Szybkie CLI:
requestId. Uruchom ponownie
openclaw devices list przed zatwierdzeniem.
Uwagi:
nodes statusoznacza node jako sparowany, gdy jego rola parowania urządzenia obejmujenode.- Rekord parowania urządzenia jest trwałym kontraktem zatwierdzonej roli. Rotacja tokenów pozostaje w ramach tego kontraktu; nie może podnieść sparowanego node do innej roli, której zatwierdzenie parowania nigdy nie nadało.
node.pair.*(CLI:openclaw nodes pending/approve/reject/remove/rename) to osobny, należący do gatewaya magazyn parowania nodów; nie bramkuje uzgadniania WSconnect.openclaw nodes remove --node <id|name|ip>usuwa nieaktualne wpisy z tego osobnego, należącego do gatewaya magazynu parowania nodów.- Zakres zatwierdzenia wynika z poleceń zadeklarowanych przez oczekujące żądanie:
- żądanie bez poleceń:
operator.pairing - polecenia node inne niż exec:
operator.pairing+operator.write system.run/system.run.prepare/system.which:operator.pairing+operator.admin
- żądanie bez poleceń:
Zdalny host node (system.run)
Użyj hosta node, gdy Gateway działa na jednej maszynie, a chcesz, aby polecenia wykonywały się na innej. Model nadal rozmawia z gatewayem; gateway przekazuje wywołaniaexec do hosta node, gdy wybrano host=node.
Co działa gdzie
- Host Gateway: odbiera wiadomości, uruchamia model, kieruje wywołania narzędzi.
- Host node: wykonuje
system.run/system.whichna maszynie node. - Zatwierdzenia: egzekwowane na hoście node przez
~/.openclaw/exec-approvals.json.
- Uruchomienia node oparte na zatwierdzeniach wiążą dokładny kontekst żądania.
- Dla bezpośrednich wykonań plików powłoki/runtime OpenClaw dodatkowo, w miarę możliwości, wiąże jeden konkretny lokalny operand pliku i odmawia uruchomienia, jeśli ten plik zmieni się przed wykonaniem.
- Jeśli OpenClaw nie może wskazać dokładnie jednego konkretnego lokalnego pliku dla polecenia interpretera/runtime, wykonanie oparte na zatwierdzeniu jest odmawiane zamiast udawać pełne pokrycie runtime. Użyj sandboxingu, osobnych hostów albo jawnej zaufanej listy allowlist/pełnego workflow dla szerszej semantyki interpretera.
Uruchom host node (pierwszy plan)
Na maszynie node:Zdalny gateway przez tunel SSH (powiązanie loopback)
Jeśli Gateway wiąże się z loopback (gateway.bind=loopback, domyślnie w trybie lokalnym),
zdalne hosty node nie mogą połączyć się bezpośrednio. Utwórz tunel SSH i skieruj
host node na lokalny koniec tunelu.
Przykład (host node -> host gateway):
openclaw node runobsługuje uwierzytelnianie tokenem albo hasłem.- Preferowane są zmienne środowiskowe:
OPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD. - Fallback konfiguracji to
gateway.auth.token/gateway.auth.password. - W trybie lokalnym host node celowo ignoruje
gateway.remote.token/gateway.remote.password. - W trybie zdalnym
gateway.remote.token/gateway.remote.passwordkwalifikują się zgodnie z regułami pierwszeństwa zdalnego. - Jeśli aktywne lokalne SecretRefs
gateway.auth.*są skonfigurowane, ale nierozwiązane, uwierzytelnianie hosta node kończy się bezpieczną odmową. - Rozwiązywanie uwierzytelniania hosta node honoruje tylko zmienne środowiskowe
OPENCLAW_GATEWAY_*.
Uruchom host node (usługa)
Sparuj + nazwij
Na hoście gatewaya:openclaw devices list
i zatwierdź bieżący requestId.
Opcje nazewnictwa:
--display-namewopenclaw node run/openclaw node install(utrwalane w~/.openclaw/node.jsonna node).openclaw nodes rename --node <id|name|ip> --name "Build Node"(nadpisanie po stronie gatewaya).
Dodaj polecenia do allowlist
Zatwierdzenia exec są per host node. Dodaj wpisy allowlist z gatewaya:~/.openclaw/exec-approvals.json.
Skieruj exec na node
Skonfiguruj domyślne wartości (konfiguracja gatewaya):exec z host=node działa na hoście node (z zastrzeżeniem
allowlist/zatwierdzeń node).
host=auto nie wybierze domyślnie node samodzielnie, ale jawne żądanie host=node dla pojedynczego wywołania jest dozwolone z auto. Jeśli chcesz, aby exec na node był domyślny dla sesji, ustaw jawnie tools.exec.host=node albo /exec host=node ....
Powiązane:
Wywoływanie poleceń
Niski poziom (surowe RPC):Polityka poleceń
Polecenia node muszą przejść dwie bramki, zanim mogą zostać wywołane:- Node musi zadeklarować polecenie na swojej liście WebSocket
connect.commands. - Polityka platformy gatewaya musi zezwalać na zadeklarowane polecenie.
canvas.*, camera.list, location.get i screen.snapshot.
Niebezpieczne albo mocno związane z prywatnością polecenia, takie jak camera.snap, camera.clip i
screen.record, nadal wymagają jawnego włączenia przez
gateway.nodes.allowCommands. gateway.nodes.denyCommands zawsze wygrywa z
domyślnymi wartościami i dodatkowymi wpisami allowlist.
Polecenia node należące do Plugin mogą dodać politykę node-invoke Gateway. Ta polityka
działa po sprawdzeniu allowlist i przed przekazaniem do node, więc surowe
node.invoke, pomocniki CLI i dedykowane narzędzia agentów współdzielą tę samą granicę
uprawnień Plugin. Niebezpieczne polecenia node Plugin nadal wymagają jawnego
włączenia przez gateway.nodes.allowCommands.
Po zmianie listy zadeklarowanych poleceń przez node odrzuć stare parowanie urządzenia
i zatwierdź nowe żądanie, aby gateway zapisał zaktualizowaną migawkę poleceń.
Zrzuty ekranu (migawki canvas)
Jeśli node wyświetla Canvas (WebView),canvas.snapshot zwraca { format, base64 }.
Pomocnik CLI (zapisuje do pliku tymczasowego i wypisuje MEDIA:<path>):
Elementy sterujące Canvas
canvas presentakceptuje adresy URL albo lokalne ścieżki plików (--target), plus opcjonalne--x/--y/--width/--heightdo pozycjonowania.canvas evalakceptuje wbudowany JS (--js) albo argument pozycyjny.
A2UI (Canvas)
- Obsługiwany jest tylko A2UI v0.8 JSONL (v0.9/createSurface jest odrzucane).
Zdjęcia + filmy (kamera node)
Zdjęcia (jpg):
mp4):
- Node musi być na pierwszym planie dla
canvas.*icamera.*(wywołania w tle zwracająNODE_BACKGROUND_UNAVAILABLE). - Czas trwania klipu jest ograniczany (obecnie
<= 60s), aby uniknąć zbyt dużych payloadów base64. - Android wyświetli prośbę o uprawnienia
CAMERA/RECORD_AUDIO, gdy to możliwe; odmowa uprawnień kończy się błędem*_PERMISSION_REQUIRED.
Nagrania ekranu (nody)
Obsługiwane nody udostępniająscreen.record (mp4). Przykład:
- Dostępność
screen.recordzależy od platformy node. - Nagrania ekranu są ograniczane do
<= 60s. --no-audiowyłącza przechwytywanie mikrofonu na obsługiwanych platformach.- Użyj
--screen <index>, aby wybrać wyświetlacz, gdy dostępnych jest wiele ekranów.
Lokalizacja (nody)
Nody udostępniająlocation.get, gdy Lokalizacja jest włączona w ustawieniach.
Pomocnik CLI:
- Lokalizacja jest domyślnie wyłączona.
- „Zawsze” wymaga uprawnień systemowych; pobieranie w tle działa w miarę możliwości.
- Odpowiedź zawiera lat/lon, dokładność (metry) oraz znacznik czasu.
SMS (nody Android)
Nody Android mogą udostępniaćsms.send, gdy użytkownik przyzna uprawnienie SMS, a urządzenie obsługuje telefonię.
Wywołanie niskiego poziomu:
- Monit o uprawnienia musi zostać zaakceptowany na urządzeniu Android, zanim capability zostanie ogłoszona.
- Urządzenia tylko Wi-Fi bez telefonii nie będą ogłaszać
sms.send.
Polecenia urządzenia Android + danych osobistych
Nody Android mogą ogłaszać dodatkowe rodziny poleceń, gdy odpowiednie capability są włączone. Dostępne rodziny:device.status,device.info,device.permissions,device.healthnotifications.list,notifications.actionsphotos.latestcontacts.search,contacts.addcalendar.events,calendar.addcallLog.searchsms.searchmotion.activity,motion.pedometer
- Polecenia ruchu są ograniczane dostępnością funkcji przez dostępne sensory.
Polecenia systemowe (host Node / Node Mac)
Node macOS udostępniasystem.run, system.notify oraz system.execApprovals.get/set.
Bezinterfejsowy host Node udostępnia system.run, system.which oraz system.execApprovals.get/set.
Przykłady:
system.runzwraca stdout/stderr/kod wyjścia w ładunku.- Wykonywanie powłoki przechodzi teraz przez narzędzie
execzhost=node;nodespozostaje bezpośrednią powierzchnią RPC dla jawnych poleceń Node. nodes invokenie udostępniasystem.runanisystem.run.prepare; pozostają one tylko na ścieżce exec.- Ścieżka exec przygotowuje kanoniczny
systemRunPlanprzed zatwierdzeniem. Po udzieleniu zgody gateway przekazuje ten zapisany plan, a nie później edytowane przez wywołującego pola command/cwd/session. system.notifyrespektuje stan uprawnień do powiadomień w aplikacji macOS.- Nierozpoznane metadane Node
platform/deviceFamilyużywają konserwatywnej domyślnej listy dozwolonych poleceń, która wykluczasystem.runisystem.which. Jeśli celowo potrzebujesz tych poleceń dla nieznanej platformy, dodaj je jawnie przezgateway.nodes.allowCommands. system.runobsługuje--cwd,--env KEY=VAL,--command-timeoutoraz--needs-screen-recording.- Dla wrapperów powłoki (
bash|sh|zsh ... -c/-lc) wartości--envograniczone do żądania są redukowane do jawnej listy dozwolonych (TERM,LANG,LC_*,COLORTERM,NO_COLOR,FORCE_COLOR). - Dla decyzji zawsze zezwalających w trybie listy dozwolonych znane wrappery uruchamiania (
env,nice,nohup,stdbuf,timeout) utrwalają ścieżki wewnętrznych plików wykonywalnych zamiast ścieżek wrapperów. Jeśli odpakowanie wrappera nie jest bezpieczne, żaden wpis listy dozwolonych nie jest automatycznie utrwalany. - Na hostach Node Windows w trybie listy dozwolonych uruchomienia wrappera powłoki przez
cmd.exe /cwymagają zatwierdzenia (sam wpis listy dozwolonych nie zezwala automatycznie na tę formę wrappera). system.notifyobsługuje--priority <passive|active|timeSensitive>i--delivery <system|overlay|auto>.- Hosty Node ignorują nadpisania
PATHi usuwają niebezpieczne klucze uruchomieniowe/powłoki (DYLD_*,LD_*,NODE_OPTIONS,PYTHON*,PERL*,RUBYOPT,SHELLOPTS,PS4). Jeśli potrzebujesz dodatkowych wpisów PATH, skonfiguruj środowisko usługi hosta Node (lub zainstaluj narzędzia w standardowych lokalizacjach) zamiast przekazywaćPATHprzez--env. - W trybie Node macOS
system.runjest ograniczane zatwierdzeniami exec w aplikacji macOS (Ustawienia → Zatwierdzenia exec). Ask/allowlist/full działają tak samo jak bezinterfejsowy host Node; odrzucone monity zwracająSYSTEM_RUN_DENIED. - Na bezinterfejsowym hoście Node
system.runjest ograniczane zatwierdzeniami exec (~/.openclaw/exec-approvals.json).
Powiązanie Node exec
Gdy dostępnych jest wiele Node, możesz powiązać exec z konkretnym Node. Ustawia to domyślny Node dlaexec host=node (i może zostać nadpisane dla danego agenta).
Domyślne globalne:
Mapa uprawnień
Node mogą zawierać mapępermissions w node.list / node.describe, indeksowaną nazwą uprawnienia (np. screenRecording, accessibility) z wartościami logicznymi (true = przyznane).
Bezinterfejsowy host Node (wieloplatformowy)
OpenClaw może uruchamiać bezinterfejsowy host Node (bez UI), który łączy się z Gateway WebSocket i udostępniasystem.run / system.which. Jest to przydatne na Linux/Windows
lub do uruchamiania minimalnego Node obok serwera.
Uruchom go:
- Parowanie jest nadal wymagane (Gateway pokaże monit parowania urządzenia).
- Host Node przechowuje swój identyfikator Node, token, nazwę wyświetlaną i informacje o połączeniu z gateway w
~/.openclaw/node.json. - Zatwierdzenia exec są wymuszane lokalnie przez
~/.openclaw/exec-approvals.json(zobacz Zatwierdzenia exec). - Na macOS bezinterfejsowy host Node domyślnie wykonuje
system.runlokalnie. UstawOPENCLAW_NODE_EXEC_HOST=app, aby kierowaćsystem.runprzez host exec aplikacji towarzyszącej; dodajOPENCLAW_NODE_EXEC_FALLBACK=0, aby wymagać hosta aplikacji i zakończyć niepowodzeniem w trybie zamkniętym, jeśli jest niedostępny. - Dodaj
--tls/--tls-fingerprint, gdy Gateway WS używa TLS.
Tryb Node Mac
- Aplikacja paska menu macOS łączy się z serwerem Gateway WS jako Node (więc
openclaw nodes …działa względem tego Maca). - W trybie zdalnym aplikacja otwiera tunel SSH dla portu Gateway i łączy się z
localhost.