Tools
Rozwiązywanie problemów z WSL2 + Windows + zdalnym Chrome CDP
W typowej konfiguracji z rozdzielonym hostem OpenClaw Gateway działa wewnątrz WSL2, Chrome działa w Windows, a sterowanie przeglądarką musi przekraczać granicę między WSL2 i Windows. Warstwowy wzorzec awarii z issue #39369 oznacza, że kilka niezależnych problemów może pojawić się jednocześnie, przez co najpierw za uszkodzoną można uznać niewłaściwą warstwę.
Najpierw wybierz właściwy tryb przeglądarki
Masz dwa prawidłowe wzorce:
Opcja 1: Bezpośredni zdalny CDP z WSL2 do Windows
Użyj zdalnego profilu przeglądarki, który wskazuje z WSL2 na punkt końcowy Chrome CDP w Windows.
Wybierz to, gdy:
- Gateway pozostaje wewnątrz WSL2
- Chrome działa w Windows
- sterowanie przeglądarką musi przekraczać granicę WSL2/Windows
Opcja 2: Chrome MCP lokalny dla hosta
Używaj existing-session / user tylko wtedy, gdy sam Gateway działa na tym samym hoście co Chrome.
Wybierz to, gdy:
- OpenClaw i Chrome są na tej samej maszynie
- chcesz lokalnego stanu zalogowanej przeglądarki
- nie potrzebujesz transportu przeglądarki między hostami
- nie potrzebujesz zaawansowanych tras zarządzanych ani dostępnych tylko przez bezpośredni CDP, takich jak
responsebody, eksport PDF, przechwytywanie pobierania lub akcje wsadowe
Dla WSL2 Gateway + Windows Chrome preferuj bezpośredni zdalny CDP. Chrome MCP jest lokalny dla hosta, a nie mostem z WSL2 do Windows.
Działająca architektura
Kształt referencyjny:
- WSL2 uruchamia Gateway na
127.0.0.1:18789 - Windows otwiera interfejs sterowania 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 osiągnąć ten punkt końcowy 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 osiągnąć punktu końcowego CDP w Windows
- interfejs sterowania jest otwarty z niezabezpieczonego originu
gateway.controlUi.allowedOriginsnie pasuje do originu strony- brakuje tokena lub parowania
- profil przeglądarki wskazuje niewłaściwy adres
Z tego powodu naprawienie jednej warstwy nadal może zostawić widoczny inny błąd.
Krytyczna reguła dla interfejsu sterowania
Gdy UI jest otwierany z Windows, używaj localhost Windows, chyba że masz celową konfigurację HTTPS.
Użyj:
http://127.0.0.1:18789/
Nie ustawiaj domyślnie adresu IP sieci LAN dla interfejsu sterowania. Zwykły HTTP na adresie LAN lub tailnet może wywołać zachowanie niezabezpieczonego originu / uwierzytelniania urządzenia, które nie jest związane z samym CDP. Zobacz Interfejs sterowania.
Waliduj warstwami
Pracuj od góry do dołu. Nie przeskakuj dalej.
Warstwa 1: Sprawdź, czy Chrome udostępnia CDP w Windows
Uruchom Chrome w Windows z włączonym zdalnym debugowaniem:
chrome.exe --remote-debugging-port=9222
Najpierw sprawdź samego Chrome z Windows:
curl http://127.0.0.1:9222/json/version
curl http://127.0.0.1:9222/json/list
Jeśli to zawodzi w Windows, OpenClaw nie jest jeszcze problemem.
Warstwa 2: Sprawdź, czy WSL2 może osiągnąć ten punkt końcowy Windows
Z WSL2 przetestuj dokładny adres, którego planujesz użyć w cdpUrl:
curl http://WINDOWS_HOST_OR_IP:9222/json/version
curl http://WINDOWS_HOST_OR_IP:9222/json/list
Dobry wynik:
/json/versionzwraca JSON z metadanymi Browser / Protocol-Version/json/listzwraca JSON (pusta tablica jest w porządku, jeśli nie ma otwartych stron)
Jeśli to zawodzi:
- Windows jeszcze nie udostępnia portu dla WSL2
- adres jest błędny po stronie WSL2
- nadal brakuje zapory / przekierowania portu / lokalnego proxy
Napraw to przed dotykaniem konfiguracji OpenClaw.
Warstwa 3: Skonfiguruj prawidłowy profil przeglądarki
Dla bezpośredniego zdalnego CDP wskaż OpenClaw adres osiągalny z WSL2:
{
browser: {
enabled: true,
defaultProfile: "remote",
profiles: {
remote: {
cdpUrl: "http://WINDOWS_HOST_OR_IP:9222",
attachOnly: true,
color: "#00AA00",
},
},
},
}
Uwagi:
- użyj adresu osiągalnego z WSL2, a nie tego, co działa tylko w Windows
- zachowaj
attachOnly: truedla przeglądarek zarządzanych zewnętrznie cdpUrlmoże być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 adres URL gniazda DevTools
- przetestuj ten sam adres URL za pomocą
curl, zanim oczekujesz sukcesu OpenClaw
Warstwa 4: Zweryfikuj warstwę interfejsu sterowania osobno
Otwórz UI z Windows:
http://127.0.0.1:18789/
Następnie sprawdź:
- origin strony pasuje do tego, czego oczekuje
gateway.controlUi.allowedOrigins - uwierzytelnianie tokenem lub parowanie jest poprawnie skonfigurowane
- nie diagnozujesz problemu uwierzytelniania interfejsu sterowania tak, jakby był problemem przeglądarki
Pomocna strona:
Warstwa 5: Zweryfikuj sterowanie przeglądarką od końca do końca
Z WSL2:
openclaw browser open https://example.com --browser-profile remote
openclaw browser tabs --browser-profile remote
Dobry wynik:
- karta otwiera się w Windows Chrome
openclaw browser tabszwraca cel- późniejsze akcje (
snapshot,screenshot,navigate) działają z tego samego profilu
Częste mylące błędy
Traktuj każdy komunikat jako wskazówkę specyficzną dla warstwy:
control-ui-insecure-auth- problem originu UI / bezpiecznego kontekstu, a nie problem transportu CDP
token_missing- problem konfiguracji uwierzytelniania
pairing required- problem zatwierdzenia urządzenia
Remote CDP for profile "remote" is not reachable- WSL2 nie może osiągnąć skonfigurowanego
cdpUrl
- WSL2 nie może osiągnąć skonfigurowanego
Browser attachOnly is enabled and CDP websocket for profile "remote" is not reachable- punkt końcowy HTTP odpowiedział, ale WebSocket DevTools nadal nie mógł zostać otwarty
- nieaktualne ustawienia viewportu / trybu ciemnego / locale / offline po sesji zdalnej
- uruchom
openclaw browser stop --browser-profile remote - zamyka to 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 jest to osiągalność CDP albo powolny lub nieosiągalny zdalny punkt końcowy
No Chrome tabs found for profile="user"- wybrano lokalny dla hosta profil Chrome MCP, gdy nie ma dostępnych lokalnych kart hosta
Szybka lista triage
- Windows: czy
curl http://127.0.0.1:9222/json/versiondziała? - WSL2: czy
curl http://WINDOWS_HOST_OR_IP:9222/json/versiondziała? - Konfiguracja OpenClaw: czy
browser.profiles.<name>.cdpUrlużywa dokładnie tego adresu osiągalnego z WSL2? - Interfejs sterowania: czy otwierasz
http://127.0.0.1:18789/zamiast adresu IP sieci LAN? - Czy próbujesz używać
existing-sessionmiędzy WSL2 i Windows zamiast bezpośredniego zdalnego CDP?
Praktyczny wniosek
Ta konfiguracja zwykle jest wykonalna. Trudność polega na tym, że transport przeglądarki, bezpieczeństwo originu interfejsu sterowania oraz token/parowanie mogą zawodzić niezależnie, wyglądając podobnie od strony użytkownika.
W razie wątpliwości:
- najpierw zweryfikuj lokalnie punkt końcowy Windows Chrome
- potem zweryfikuj ten sam punkt końcowy z WSL2
- dopiero potem debuguj konfigurację OpenClaw lub uwierzytelnianie interfejsu sterowania