Rozwiązywanie problemów z WSL2 + Windows + zdalnym Chrome CDP
Ten przewodnik opisuje typową konfigurację z rozdzielonymi hostami, w której:- OpenClaw Gateway działa wewnątrz WSL2
- Chrome działa w Windows
- sterowanie przeglądarką musi przekraczać granicę WSL2/Windows
Najpierw wybierz właściwy tryb przeglądarki
Masz dwa prawidłowe wzorce:Opcja 1: Surowy zdalny CDP z WSL2 do Windows
Użyj zdalnego profilu przeglądarki, który wskazuje z WSL2 na punkt końcowy CDP Chrome w Windows. Wybierz to, gdy:- Gateway pozostaje wewnątrz WSL2
- Chrome działa w Windows
- potrzebujesz sterowania przeglądarką przez granicę WSL2/Windows
Opcja 2: Host-local Chrome MCP
Używajexisting-session / user tylko wtedy, gdy sam Gateway działa na tym samym hoście co Chrome.
Wybierz to, gdy:
- OpenClaw i Chrome działają na tej samej maszynie
- chcesz używać lokalnego, zalogowanego stanu przeglądarki
- nie potrzebujesz transportu przeglądarki między hostami
- nie potrzebujesz zaawansowanych tras tylko dla managed/raw-CDP, takich jak
responsebody, eksport PDF, przechwytywanie pobrań lub działania wsadowe
Działająca architektura
Model referencyjny:- WSL2 uruchamia Gateway na
127.0.0.1:18789 - Windows otwiera Control UI w zwykłej przeglądarce pod adresem
http://127.0.0.1:18789/ - Windows Chrome udostępnia punkt końcowy CDP na porcie
9222 - WSL2 może połączyć się z tym punktem końcowym CDP w Windows
- OpenClaw wskazuje profil przeglądarki na adres osiągalny z WSL2
Dlaczego ta konfiguracja jest myląca
Kilka awarii może się nakładać:- WSL2 nie może połączyć się z punktem końcowym CDP w Windows
- Control UI jest otwierany z niezabezpieczonego origin
gateway.controlUi.allowedOriginsnie pasuje do origin strony- brakuje tokenu lub parowania
- profil przeglądarki wskazuje niewłaściwy adres
Kluczowa zasada dla Control UI
Gdy interfejs jest otwierany z Windows, używaj localhost Windows, chyba że masz świadomie skonfigurowane HTTPS. Użyj:http://127.0.0.1:18789/
Nie używaj domyślnie adresu LAN dla Control UI. Zwykłe HTTP na adresie LAN lub tailnet może wywołać zachowanie insecure-origin/device-auth niezwiązane z samym CDP. Zobacz Control UI.
Weryfikuj warstwami
Pracuj od góry do dołu. Nie przeskakuj naprzód.Warstwa 1: Sprawdź, czy Chrome udostępnia CDP w Windows
Uruchom Chrome w Windows z włączonym zdalnym debugowaniem:Warstwa 2: Sprawdź, czy WSL2 może połączyć się z tym punktem końcowym Windows
Z poziomu WSL2 przetestuj dokładny adres, którego chcesz użyć wcdpUrl:
/json/versionzwraca JSON z metadanymi Browser / Protocol-Version/json/listzwraca JSON (pusta tablica jest w porządku, jeśli nie ma otwartych stron)
- Windows nie udostępnia jeszcze portu dla WSL2
- adres jest niewłaściwy po stronie WSL2
- nadal brakuje konfiguracji firewalla / przekierowania portów / lokalnego proxy
Warstwa 3: Skonfiguruj prawidłowy profil przeglądarki
Dla surowego zdalnego CDP wskaż w OpenClaw adres osiągalny z WSL2:- użyj adresu osiągalnego z WSL2, a nie takiego, który działa tylko w Windows
- zachowaj
attachOnly: truedla przeglądarek zarządzanych zewnętrznie cdpUrlmoże używaćhttp://,https://,ws://lubwss://- używaj HTTP(S), gdy chcesz, aby OpenClaw wykrywał
/json/version - używaj WS(S) tylko wtedy, gdy dostawca przeglądarki podaje bezpośredni URL gniazda DevTools
- przetestuj ten sam URL za pomocą
curl, zanim oczekujesz, że OpenClaw zadziała
Warstwa 4: Osobno sprawdź warstwę Control UI
Otwórz interfejs z Windows:http://127.0.0.1:18789/
Następnie sprawdź:
- czy origin strony pasuje do tego, czego oczekuje
gateway.controlUi.allowedOrigins - czy auth tokenem lub parowanie są poprawnie skonfigurowane
- czy nie debugujesz problemu auth Control UI tak, jakby był problemem przeglądarki
Warstwa 5: Sprawdź pełne sterowanie przeglądarką end-to-end
Z poziomu WSL2:- karta otwiera się w Windows Chrome
openclaw browser tabszwraca cel- późniejsze działania (
snapshot,screenshot,navigate) działają z tego samego profilu
Typowe mylące błędy
Traktuj każdy komunikat jako wskazówkę specyficzną dla warstwy:control-ui-insecure-auth- problem z origin interfejsu / secure-context, a nie z transportem CDP
token_missing- problem z konfiguracją auth
pairing required- problem z zatwierdzeniem urządzenia
Remote CDP for profile "remote" is not reachable- WSL2 nie może połączyć się ze skonfigurowanym
cdpUrl
- WSL2 nie może połączyć się ze skonfigurowanym
Browser attachOnly is enabled and CDP websocket for profile "remote" is not reachable- punkt końcowy HTTP odpowiedział, ale nadal nie udało się otworzyć WebSocketu DevTools
- nieaktualne nadpisania viewport / dark-mode / locale / offline po zdalnej sesji
- uruchom
openclaw browser stop --browser-profile remote - to zamyka aktywną sesję sterowania i zwalnia stan emulacji Playwright/CDP bez restartowania gateway ani zewnętrznej przeglądarki
- uruchom
gateway timeout after 1500ms- często nadal problem z osiągalnością CDP albo wolnym/niedostępnym zdalnym punktem końcowym
No Chrome tabs found for profile="user"- wybrano lokalny profil Chrome MCP tam, gdzie nie ma dostępnych kart host-local
Szybka lista kontroli
- Windows: czy działa
curl http://127.0.0.1:9222/json/version? - WSL2: czy działa
curl http://WINDOWS_HOST_OR_IP:9222/json/version? - Konfiguracja OpenClaw: czy
browser.profiles.<name>.cdpUrlużywa dokładnie tego adresu osiągalnego z WSL2? - Control UI: czy otwierasz
http://127.0.0.1:18789/, a nie adres LAN? - Czy próbujesz używać
existing-sessionprzez WSL2 i Windows zamiast surowego zdalnego CDP?
Praktyczny wniosek
Ta konfiguracja jest zwykle wykonalna. Trudność polega na tym, że transport przeglądarki, bezpieczeństwo origin Control UI i token/parowanie mogą zawodzić niezależnie, a z perspektywy użytkownika wyglądać podobnie. W razie wątpliwości:- najpierw zweryfikuj lokalnie punkt końcowy Windows Chrome
- potem zweryfikuj ten sam punkt końcowy z WSL2
- dopiero wtedy debuguj konfigurację OpenClaw lub auth Control UI