Tools
Risoluzione dei problemi di WSL2 + Windows + Chrome CDP remoto
Nella configurazione comune con host separati, OpenClaw Gateway viene eseguito dentro WSL2, Chrome viene eseguito su Windows e il controllo del browser deve attraversare il confine tra WSL2 e Windows. Il modello di errore stratificato da issue #39369 significa che più problemi indipendenti possono presentarsi contemporaneamente, facendo sembrare guasto per primo il livello sbagliato.
Scegli prima la modalità browser corretta
Hai due schemi validi:
Opzione 1: CDP remoto grezzo da WSL2 a Windows
Usa un profilo browser remoto che punti da WSL2 a un endpoint CDP di Chrome su Windows.
Scegli questa opzione quando:
- il Gateway rimane dentro WSL2
- Chrome viene eseguito su Windows
- hai bisogno che il controllo del browser attraversi il confine WSL2/Windows
Opzione 2: Chrome MCP locale all'host
Usa existing-session / user solo quando il Gateway stesso viene eseguito sullo stesso host di Chrome.
Scegli questa opzione quando:
- OpenClaw e Chrome sono sulla stessa macchina
- vuoi lo stato del browser locale con sessione avviata
- non hai bisogno del trasporto browser tra host
- non hai bisogno di percorsi avanzati gestiti/solo raw-CDP come
responsebody, esportazione PDF, intercettazione dei download o azioni in batch
Per Gateway in WSL2 + Chrome su Windows, preferisci CDP remoto grezzo. Chrome MCP è locale all'host, non un bridge da WSL2 a Windows.
Architettura funzionante
Forma di riferimento:
- WSL2 esegue il Gateway su
127.0.0.1:18789 - Windows apre l'interfaccia di controllo in un browser normale 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 crea confusione
Diversi errori possono sovrapporsi:
- WSL2 non riesce a raggiungere l'endpoint CDP di Windows
- l'interfaccia di controllo viene aperta da un'origine non sicura
gateway.controlUi.allowedOriginsnon corrisponde all'origine della pagina- token o abbinamento mancanti
- il profilo browser punta all'indirizzo sbagliato
Per questo motivo, correggere un livello può comunque lasciare visibile un errore diverso.
Regola critica per l'interfaccia di controllo
Quando l'UI viene aperta da Windows, usa il localhost di Windows a meno che tu non abbia una configurazione HTTPS deliberata.
Usa:
http://127.0.0.1:18789/
Non usare come impostazione predefinita un IP LAN per l'interfaccia di controllo. HTTP semplice su un indirizzo LAN o tailnet può attivare comportamenti di origine non sicura/autenticazione dispositivo che non sono collegati a CDP stesso. Vedi interfaccia di controllo.
Convalida per livelli
Procedi dall'alto verso il basso. Non saltare passaggi.
Livello 1: Verifica che Chrome stia servendo CDP su Windows
Avvia Chrome su Windows con il debug remoto abilitato:
chrome.exe --remote-debugging-port=9222
Da Windows, verifica prima Chrome stesso:
curl http://127.0.0.1:9222/json/version
curl http://127.0.0.1:9222/json/list
Se questo fallisce su Windows, OpenClaw non è ancora il problema.
Livello 2: Verifica che WSL2 possa raggiungere quell'endpoint Windows
Da WSL2, testa l'indirizzo esatto che intendi usare in cdpUrl:
curl http://WINDOWS_HOST_OR_IP:9222/json/version
curl http://WINDOWS_HOST_OR_IP:9222/json/list
Risultato corretto:
/json/versionrestituisce JSON con metadati Browser / Protocol-Version/json/listrestituisce JSON (un array vuoto va bene se non ci sono pagine aperte)
Se questo fallisce:
- Windows non sta ancora esponendo la porta a WSL2
- l'indirizzo è sbagliato dal lato WSL2
- firewall / port forwarding / proxy locale sono ancora mancanti
Correggi questo prima di toccare la configurazione di OpenClaw.
Livello 3: Configura il profilo browser corretto
Per CDP remoto grezzo, punta OpenClaw all'indirizzo raggiungibile da WSL2:
{
browser: {
enabled: true,
defaultProfile: "remote",
profiles: {
remote: {
cdpUrl: "http://WINDOWS_HOST_OR_IP:9222",
attachOnly: true,
color: "#00AA00",
},
},
},
}
Note:
- usa l'indirizzo raggiungibile da WSL2, non quello che funziona solo su Windows
- mantieni
attachOnly: trueper browser gestiti esternamente cdpUrlpuò esserehttp://,https://,ws://owss://- usa HTTP(S) quando vuoi che OpenClaw scopra
/json/version - usa WS(S) solo quando il provider browser ti fornisce un URL diretto del socket DevTools
- testa lo stesso URL con
curlprima di aspettarti che OpenClaw riesca
Livello 4: Verifica separatamente il livello dell'interfaccia di controllo
Apri l'UI da Windows:
http://127.0.0.1:18789/
Poi verifica:
- l'origine della pagina corrisponde a ciò che
gateway.controlUi.allowedOriginssi aspetta - l'autenticazione con token o l'abbinamento sono configurati correttamente
- non stai facendo debug di un problema di autenticazione dell'interfaccia di controllo come se fosse un problema del browser
Pagina utile:
Livello 5: Verifica il controllo del browser end-to-end
Da WSL2:
openclaw browser open https://example.com --browser-profile remote
openclaw browser tabs --browser-profile remote
Risultato corretto:
- la scheda si apre in Chrome su Windows
openclaw browser tabsrestituisce il target- le azioni successive (
snapshot,screenshot,navigate) funzionano dallo stesso profilo
Errori fuorvianti comuni
Tratta ogni messaggio come un indizio specifico del livello:
control-ui-insecure-auth- problema di origine UI / contesto sicuro, non un problema 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 ha comunque potuto essere aperto
- override obsoleti di viewport / modalità scura / 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 raggiungibilità CDP o un endpoint remoto lento/non raggiungibile
No Chrome tabs found for profile="user"- profilo Chrome MCP locale selezionato quando non sono disponibili schede locali all'host
Checklist di triage rapida
- 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? - Interfaccia di controllo: stai aprendo
http://127.0.0.1:18789/invece di un IP LAN? - Stai cercando di usare
existing-sessionattraverso WSL2 e Windows invece di CDP remoto grezzo?
Indicazione pratica
La configurazione di solito è praticabile. La parte difficile è che trasporto del browser, sicurezza dell'origine dell'interfaccia di controllo e token/abbinamento possono fallire ciascuno in modo indipendente, pur apparendo simili dal lato utente.
In caso di dubbio:
- verifica prima localmente l'endpoint Chrome di Windows
- verifica poi lo stesso endpoint da WSL2
- solo dopo fai debug della configurazione OpenClaw o dell'autenticazione dell'interfaccia di controllo