Risoluzione dei problemi di WSL2 + Windows + Chrome remoto tramite CDP
Questa guida copre la comune configurazione con host separati in cui:- OpenClaw Gateway viene eseguito dentro WSL2
- Chrome viene eseguito su Windows
- il controllo del browser deve attraversare il confine tra WSL2 e Windows
Scegli prima la modalità browser corretta
Hai due modelli validi:Opzione 1: CDP remoto puro da WSL2 a Windows
Usa un profilo browser remoto che punti da WSL2 a un endpoint CDP di Chrome su Windows. Sceglilo quando:- il Gateway resta dentro WSL2
- Chrome viene eseguito su Windows
- hai bisogno che il controllo del browser attraversi il confine tra WSL2 e Windows
Opzione 2: Chrome MCP locale sull’host
Usaexisting-session / user solo quando il Gateway stesso viene eseguito sullo stesso host di Chrome.
Sceglilo quando:
- OpenClaw e Chrome si trovano sulla stessa macchina
- vuoi lo stato locale del browser già autenticato
- non hai bisogno del trasporto browser tra host diversi
- non hai bisogno di percorsi avanzati gestiti/solo raw-CDP come
responsebody, esportazione PDF, intercettazione dei download o azioni batch
Architettura funzionante
Configurazione di riferimento:- WSL2 esegue il Gateway su
127.0.0.1:18789 - Windows apre la Control UI in un normale browser su
http://127.0.0.1:18789/ - Chrome su Windows espone un endpoint CDP sulla porta
9222 - WSL2 può raggiungere quell’endpoint CDP di Windows
- OpenClaw punta un profilo browser all’indirizzo raggiungibile da WSL2
Perché questa configurazione è confusa
Diversi errori possono sovrapporsi:- WSL2 non riesce a raggiungere l’endpoint CDP di Windows
- la Control UI viene aperta da un’origine non sicura
gateway.controlUi.allowedOriginsnon corrisponde all’origine della pagina- manca il token o il pairing
- il profilo browser punta all’indirizzo sbagliato
Regola critica per la Control UI
Quando l’interfaccia viene aperta da Windows, usa localhost di Windows a meno che tu non abbia una configurazione HTTPS intenzionale. Usa:http://127.0.0.1:18789/
Non usare per impostazione predefinita un IP LAN per la Control UI. HTTP semplice su un indirizzo LAN o tailnet può attivare comportamenti di origine non sicura/autenticazione del dispositivo non correlati al CDP stesso. Vedi Control UI.
Convalida a livelli
Procedi dall’alto verso il basso. Non saltare avanti.Livello 1: verifica che Chrome stia servendo CDP su Windows
Avvia Chrome su Windows con il debug remoto abilitato:Livello 2: verifica che WSL2 possa raggiungere quell’endpoint Windows
Da WSL2, testa l’indirizzo esatto che intendi usare incdpUrl:
/json/versionrestituisce JSON con metadati Browser / Protocol-Version/json/listrestituisce JSON (un array vuoto va bene se non ci sono pagine aperte)
- Windows non sta ancora esponendo la porta a WSL2
- l’indirizzo è sbagliato per il lato WSL2
- mancano ancora firewall / port forwarding / proxy locale
Livello 3: configura il profilo browser corretto
Per CDP remoto puro, punta OpenClaw all’indirizzo raggiungibile da WSL2:- usa l’indirizzo raggiungibile da WSL2, non quello che funziona solo su Windows
- mantieni
attachOnly: trueper i browser gestiti esternamente cdpUrlpuò esserehttp://,https://,ws://owss://- usa HTTP(S) quando vuoi che OpenClaw rilevi
/json/version - usa WS(S) solo quando il provider browser ti fornisce un URL socket DevTools diretto
- testa lo stesso URL con
curlprima di aspettarti che OpenClaw funzioni
Livello 4: verifica separatamente il livello della Control UI
Apri l’interfaccia da Windows:http://127.0.0.1:18789/
Poi verifica:
- l’origine della pagina corrisponde a quanto si aspetta
gateway.controlUi.allowedOrigins - l’autenticazione tramite token o il pairing sono configurati correttamente
- non stai analizzando un problema di autenticazione della Control UI come se fosse un problema del browser
Livello 5: verifica il controllo browser end-to-end
Da WSL2:- la scheda si apre in Chrome su Windows
openclaw browser tabsrestituisce la destinazione- le azioni successive (
snapshot,screenshot,navigate) funzionano dallo stesso profilo
Errori comuni ma fuorvianti
Tratta ogni messaggio come un indizio specifico del livello:control-ui-insecure-auth- problema di origine dell’interfaccia / contesto sicuro, non di trasporto CDP
token_missing- problema di configurazione dell’autenticazione
pairing required- problema di approvazione del dispositivo
Remote CDP for profile "remote" is not reachable- WSL2 non riesce a raggiungere il
cdpUrlconfigurato
- WSL2 non riesce a raggiungere il
Browser attachOnly is enabled and CDP websocket for profile "remote" is not reachable- l’endpoint HTTP ha risposto, ma il WebSocket DevTools non è comunque stato aperto
- override obsoleti di viewport / dark mode / locale / offline dopo una sessione remota
- esegui
openclaw browser stop --browser-profile remote - questo chiude la sessione di controllo attiva e rilascia lo stato di emulazione Playwright/CDP senza riavviare il gateway o il browser esterno
- esegui
gateway timeout after 1500ms- spesso è ancora un problema di raggiungibilità CDP o un endpoint remoto lento/non raggiungibile
No Chrome tabs found for profile="user"- è stato selezionato un profilo Chrome MCP locale dove non sono disponibili schede locali all’host
Checklist rapida di triage
- Windows:
curl http://127.0.0.1:9222/json/versionfunziona? - WSL2:
curl http://WINDOWS_HOST_OR_IP:9222/json/versionfunziona? - Configurazione OpenClaw:
browser.profiles.<name>.cdpUrlusa esattamente quell’indirizzo raggiungibile da WSL2? - Control UI: stai aprendo
http://127.0.0.1:18789/invece di un IP LAN? - Stai cercando di usare
existing-sessiontra WSL2 e Windows invece di CDP remoto puro?
Conclusione pratica
La configurazione di solito è praticabile. La parte difficile è che il trasporto del browser, la sicurezza dell’origine della Control UI e token/pairing possono tutti fallire in modo indipendente pur sembrando simili dal lato dell’utente. In caso di dubbio:- verifica prima localmente l’endpoint Chrome su Windows
- verifica poi lo stesso endpoint da WSL2
- solo dopo esegui il debug della configurazione OpenClaw o dell’autenticazione della Control UI