Сначала выберите правильный режим браузера
Вариант 1: прямое удалённое подключение CDP из WSL2 к Windows
Используйте профиль удалённого браузера, направленный из WSL2 на конечную точку CDP Chrome в Windows. Выбирайте этот вариант, когда Gateway остаётся внутри WSL2, Chrome работает в Windows, а управление браузером должно пересекать границу WSL2/Windows.Вариант 2: локальный для хоста Chrome MCP
Используйте драйверexisting-session (профиль user) только в том случае, если Gateway работает на том же хосте, что и Chrome, вам нужно локальное состояние браузера с выполненным входом, не требуется межхостовой транспорт браузера и не нужны responsebody, экспорт PDF, перехват загрузок или пакетные действия (профили Chrome MCP их не поддерживают).
Для сочетания Gateway в WSL2 и Chrome в Windows используйте прямое удалённое подключение CDP. Chrome MCP работает локально на хосте и не является мостом между WSL2 и Windows.
Рабочая архитектура
- WSL2 запускает Gateway на
127.0.0.1:18789 - Windows открывает Control UI в обычном браузере по адресу
http://127.0.0.1:18789/ - Chrome в Windows предоставляет конечную точку CDP на порту
9222 - WSL2 может обращаться к этой конечной точке CDP в Windows
- OpenClaw направляет профиль браузера на адрес, доступный из WSL2
Критически важное правило для Control UI
Когда интерфейс открывается из Windows, используйте localhost Windows, если только у вас не настроен HTTPS намеренно:Проверяйте по уровням
Двигайтесь сверху вниз, не пропуская уровни. После исправления одного уровня всё ещё может отображаться другая ошибка с более низкого уровня.Уровень 1: убедитесь, что Chrome предоставляет CDP в Windows
Проверьте IPv4 и IPv6 перед изменением portproxy
Chromium сначала пытается привязать удалённую отладку к127.0.0.1 и переходит к [::1], только если привязка IPv4 завершается сбоем. Постоянное правило v4tov4, прослушивающее 127.0.0.1:9222, может занять эту конечную точку до запуска Chrome. Тогда Chrome переходит к [::1]:9222, а старое правило перенаправляет трафик IPv4 обратно на собственный прослушивающий сокет и возвращает пустой ответ.
Проверьте фактические прослушивающие сокеты и правила прокси из Windows, а не пытайтесь определить их по версии Chrome:
tasklist /fi "PID eq <PID>" для каждого PID из netstat.
-
Если
chrome.exeотвечает на127.0.0.1, удалите все правила portproxy, которые также прослушивают127.0.0.1:9222. Перенаправляйте только адрес адаптера Windows, доступный из WSL2, на127.0.0.1. -
Если
chrome.exeотвечает только на[::1], направьте доступный из WSL2 прослушивающий сокет на::1с помощьюv4tov6, вместо перенаправления на неиспользуемый IPv4-адрес:
0.0.0.0, адресе локальной сети или адресе tailnet: CDP предоставляет управление сеансом браузера.
Уровень 2: убедитесь, что WSL2 может обращаться к этой конечной точке Windows
Из WSL2 проверьте точный адрес, который планируете использовать вcdpUrl:
/json/versionвозвращает JSON с метаданными Browser / Protocol-Version/json/listвозвращает JSON (пустой массив допустим, если ни одна страница не открыта)
Уровень 3: настройте правильный профиль браузера
Направьте OpenClaw на адрес, доступный из WSL2:- используйте адрес, доступный из WSL2, а не адрес, работающий только в Windows
- сохраняйте
attachOnly: trueдля браузеров под внешним управлением cdpUrlможет иметь значениеhttp://,https://,ws://илиwss://- используйте HTTP(S), если хотите, чтобы OpenClaw обнаруживал
/json/version - используйте WS(S), только если поставщик браузера предоставляет прямой URL-адрес сокета DevTools
- проверьте тот же URL с помощью
curl, прежде чем ожидать успешной работы OpenClaw
Уровень 4: отдельно проверьте уровень Control UI
Откройтеhttp://127.0.0.1:18789/ из Windows, затем убедитесь, что:
- источник страницы соответствует ожидаемому значению
gateway.controlUi.allowedOrigins - аутентификация с помощью токена или сопряжение настроены правильно
- вы не диагностируете проблему аутентификации Control UI как проблему браузера
Уровень 5: проверьте сквозное управление браузером
Из WSL2:- вкладка открывается в Chrome в Windows
browser tabsвозвращает целевой объект- последующие действия (
snapshot,screenshot,navigate) работают из того же профиля
Распространённые ошибки, вводящие в заблуждение
Контрольный список для быстрой диагностики
- Windows: какой из адресов
127.0.0.1или[::1]отвечает на/json/versionи принадлежит ли этот прослушивающий сокет процессуchrome.exe? - WSL2: работает ли
curl http://WINDOWS_HOST_OR_IP:9222/json/version? - Конфигурация OpenClaw: использует ли
browser.profiles.<name>.cdpUrlименно этот адрес, доступный из WSL2? - Control UI: открываете ли вы
http://127.0.0.1:18789/вместо IP-адреса локальной сети? - Не пытаетесь ли вы использовать
existing-sessionмежду WSL2 и Windows вместо прямого удалённого подключения CDP?