Aplikacja Android (Węzeł)
Migawka wsparcia
- Rola: aplikacja węzła towarzyszącego (Android nie hostuje Gateway).
- Wymagany Gateway: tak (uruchom na macOS, Linux lub Windows przez WSL2).
- Instalacja: Pierwsze kroki + Parowanie.
- Gateway: Runbook + Konfiguracja.
- Protokoły: Protokół Gateway (węzły + płaszczyzna sterowania).
Kontrola systemu
Kontrola systemu (launchd/systemd) znajduje się na hoście Gateway. Zobacz Gateway.Runbook połączenia
Aplikacja węzła Android ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway Android łączy się bezpośrednio z WebSocket Gateway (domyślniews://<host>:18789) i używa parowania należącego do Gateway.
Wymagania wstępne
- Możesz uruchomić Gateway na „głównej” maszynie.
- Urządzenie/emulator Android może osiągnąć WebSocket gateway:
- Ta sama sieć LAN z mDNS/NSD, lub
- Ten sam tailnet Tailscale z użyciem Wide-Area Bonjour / unicast DNS-SD (zobacz poniżej), lub
- Ręczne ustawienie hosta/portu gateway (awaryjne)
- Możesz uruchomić CLI (
openclaw) na maszynie gateway (lub przez SSH).
1. Uruchom Gateway
listening on ws://0.0.0.0:18789
- Ustaw
gateway.bind: "tailnet"w~/.openclaw/openclaw.jsonna hoście gateway. - Zrestartuj Gateway / aplikację paska menu macOS.
2. Zweryfikuj wykrywanie (opcjonalne)
Z maszyny gateway:Wykrywanie w tailnecie (Wiedeń ⇄ Londyn) przez unicast DNS-SD
Wykrywanie NSD/mDNS na Androidzie nie przechodzi między sieciami. Jeśli węzeł Android i gateway są w różnych sieciach, ale połączone przez Tailscale, użyj Wide-Area Bonjour / unicast DNS-SD:- Skonfiguruj strefę DNS-SD (przykład
openclaw.internal.) na hoście gateway i opublikuj rekordy_openclaw-gw._tcp. - Skonfiguruj split DNS w Tailscale dla wybranej domeny, wskazując ten serwer DNS.
3. Połącz z Androida
W aplikacji Android:- Aplikacja utrzymuje połączenie z gateway przez usługę pierwszoplanową (stałe powiadomienie).
- Otwórz Ustawienia.
- W sekcji Discovered Gateways wybierz swój gateway i naciśnij Connect.
- Jeśli mDNS jest blokowane, użyj Advanced → Manual Gateway (host + port) i Connect (Manual).
- Ręczny endpoint (jeśli włączony), w przeciwnym razie
- Ostatnio wykryty gateway (best-effort).
4. Zatwierdź parowanie (CLI)
Na maszynie gateway:5. Sprawdź, czy węzeł jest połączony
-
Przez status węzłów:
-
Przez Gateway:
6. Czat + historia
Arkusz Czat w węźle Android używa klucza sesji podstawowej gateway (main), więc historia i odpowiedzi są współdzielone z WebChat i innymi klientami:
- Historia:
chat.history - Wysyłanie:
chat.send - Aktualizacje push (best-effort):
chat.subscribe→event:"chat"
7. Canvas + kamera
Host Canvas Gateway (zalecane dla treści webowych)
Jeśli chcesz, aby węzeł wyświetlał prawdziwe HTML/CSS/JS, które agent może edytować na dysku, skieruj węzeł na host Canvas Gateway. Uwaga: węzły używają samodzielnego hosta canvas nacanvasHost.port (domyślnie 18793).
-
Utwórz
~/.openclaw/workspace/canvas/index.htmlna hoście gateway. - Przejdź do niego z węzła (LAN):
.local, np. http://<gateway-magicdns>:18793/__openclaw__/canvas/.
Ten serwer wstrzykuje klient live-reload do HTML i przeładowuje przy zmianach plików.
Host A2UI znajduje się pod adresem http://<gateway-host>:18793/__openclaw__/a2ui/.
Polecenia Canvas (tylko na pierwszym planie):
canvas.eval,canvas.snapshot,canvas.navigate(użyj{"url":""}lub{"url":"/"}, aby wrócić do domyślnego szablonu).canvas.snapshotzwraca{ format, base64 }(domyślnieformat="jpeg").- A2UI:
canvas.a2ui.push,canvas.a2ui.reset(canvas.a2ui.pushJSONL— alias starszy)
camera.snap(jpg)camera.clip(mp4)