Solução de problemas de WSL2 + Windows + Chrome remoto via CDP
Este guia cobre a configuração comum de hosts divididos em que:- o Gateway OpenClaw é executado dentro do WSL2
- o Chrome é executado no Windows
- o controle do navegador precisa atravessar o limite entre WSL2 e Windows
Escolha primeiro o modo de navegador correto
Você tem dois padrões válidos:Opção 1: CDP remoto bruto do WSL2 para o Windows
Use um perfil de navegador remoto que aponte do WSL2 para um endpoint CDP do Chrome no Windows. Escolha isso quando:- o Gateway permanece dentro do WSL2
- o Chrome é executado no Windows
- você precisa que o controle do navegador atravesse o limite entre WSL2 e Windows
Opção 2: Chrome MCP local ao host
Useexisting-session / user somente quando o próprio Gateway for executado no mesmo host que o Chrome.
Escolha isso quando:
- o OpenClaw e o Chrome estão na mesma máquina
- você quer o estado local já autenticado do navegador
- você não precisa de transporte de navegador entre hosts
- você não precisa de rotas avançadas apenas de CDP bruto/gerenciado, como
responsebody, exportação de PDF, interceptação de download ou ações em lote
Arquitetura funcional
Formato de referência:- o WSL2 executa o Gateway em
127.0.0.1:18789 - o Windows abre a UI de controle em um navegador normal em
http://127.0.0.1:18789/ - o Chrome no Windows expõe um endpoint CDP na porta
9222 - o WSL2 consegue alcançar esse endpoint CDP do Windows
- o OpenClaw aponta um perfil de navegador para o endereço que pode ser alcançado a partir do WSL2
Por que essa configuração é confusa
Várias falhas podem se sobrepor:- o WSL2 não consegue alcançar o endpoint CDP do Windows
- a UI de controle foi aberta a partir de uma origem não segura
gateway.controlUi.allowedOriginsnão corresponde à origem da página- faltam token ou emparelhamento
- o perfil do navegador aponta para o endereço errado
Regra crítica para a UI de controle
Quando a UI é aberta a partir do Windows, use localhost do Windows, a menos que você tenha uma configuração deliberada com HTTPS. Use:http://127.0.0.1:18789/
Não use por padrão um IP de LAN para a UI de controle. HTTP simples em um endereço de LAN ou tailnet pode disparar comportamento de origem não segura/autenticação de dispositivo que não está relacionado ao próprio CDP. Veja UI de controle.
Valide em camadas
Trabalhe de cima para baixo. Não pule etapas.Camada 1: verificar se o Chrome está servindo CDP no Windows
Inicie o Chrome no Windows com depuração remota habilitada:Camada 2: verificar se o WSL2 consegue alcançar esse endpoint do Windows
No WSL2, teste o endereço exato que você pretende usar emcdpUrl:
/json/versionretorna JSON com metadados de Browser / Protocol-Version/json/listretorna JSON (um array vazio é aceitável se nenhuma página estiver aberta)
- o Windows ainda não está expondo a porta para o WSL2
- o endereço está errado para o lado do WSL2
- firewall / encaminhamento de porta / proxy local ainda estão faltando
Camada 3: configurar o perfil de navegador correto
Para CDP remoto bruto, aponte o OpenClaw para o endereço que pode ser alcançado a partir do WSL2:- use o endereço alcançável a partir do WSL2, não o que só funciona no Windows
- mantenha
attachOnly: truepara navegadores gerenciados externamente cdpUrlpode serhttp://,https://,ws://ouwss://- use HTTP(S) quando quiser que o OpenClaw descubra
/json/version - use WS(S) apenas quando o provedor do navegador fornecer uma URL direta de socket DevTools
- teste a mesma URL com
curlantes de esperar que o OpenClaw funcione
Camada 4: verificar separadamente a camada da UI de controle
Abra a UI a partir do Windows:http://127.0.0.1:18789/
Depois verifique:
- a origem da página corresponde ao que
gateway.controlUi.allowedOriginsespera - a autenticação por token ou o emparelhamento está configurado corretamente
- você não está depurando um problema de autenticação da UI de controle como se fosse um problema de navegador
Camada 5: verificar o controle de navegador de ponta a ponta
No WSL2:- a aba abre no Chrome do Windows
openclaw browser tabsretorna o alvo- ações posteriores (
snapshot,screenshot,navigate) funcionam a partir do mesmo perfil
Erros enganosos comuns
Trate cada mensagem como uma pista específica da camada:control-ui-insecure-auth- problema de origem da UI / contexto seguro, não de transporte CDP
token_missing- problema de configuração de autenticação
pairing required- problema de aprovação do dispositivo
Remote CDP for profile "remote" is not reachable- o WSL2 não consegue alcançar o
cdpUrlconfigurado
- o WSL2 não consegue alcançar o
Browser attachOnly is enabled and CDP websocket for profile "remote" is not reachable- o endpoint HTTP respondeu, mas ainda não foi possível abrir o WebSocket DevTools
- substituições obsoletas de viewport / modo escuro / localidade / offline após uma sessão remota
- execute
openclaw browser stop --browser-profile remote - isso fecha a sessão de controle ativa e libera o estado de emulação do Playwright/CDP sem reiniciar o gateway nem o navegador externo
- execute
gateway timeout after 1500ms- muitas vezes ainda é alcance do CDP ou um endpoint remoto lento/inacessível
No Chrome tabs found for profile="user"- perfil local do Chrome MCP selecionado onde não há abas locais disponíveis no host
Checklist rápido de triagem
- Windows:
curl http://127.0.0.1:9222/json/versionfunciona? - WSL2:
curl http://WINDOWS_HOST_OR_IP:9222/json/versionfunciona? - Configuração do OpenClaw:
browser.profiles.<name>.cdpUrlusa esse endereço exato alcançável a partir do WSL2? - UI de controle: você está abrindo
http://127.0.0.1:18789/em vez de um IP de LAN? - Você está tentando usar
existing-sessionentre WSL2 e Windows em vez de CDP remoto bruto?
Conclusão prática
Em geral, essa configuração é viável. A parte difícil é que transporte do navegador, segurança da origem da UI de controle e token/emparelhamento podem falhar independentemente, embora pareçam semelhantes do ponto de vista do usuário. Na dúvida:- primeiro verifique localmente o endpoint do Chrome no Windows
- depois verifique o mesmo endpoint a partir do WSL2
- só então depure a configuração do OpenClaw ou a autenticação da UI de controle