Khắc phục sự cố WSL2 + Windows + remote Chrome CDP
Hướng dẫn này bao gồm cấu hình chia tách host phổ biến khi:
- OpenClaw Gateway chạy trong WSL2
- Chrome chạy trên Windows
- điều khiển trình duyệt phải vượt qua ranh giới WSL2/Windows
Nó cũng đề cập đến mô hình lỗi phân lớp từ issue #39369: nhiều vấn đề độc lập có thể xuất hiện cùng lúc, khiến lớp sai trông như bị hỏng trước.
Chọn chế độ trình duyệt phù hợp trước
Có hai mô hình hợp lệ:
Lựa chọn 1: Remote CDP thô từ WSL2 đến Windows
Sử dụng hồ sơ trình duyệt từ xa trỏ từ WSL2 đến một endpoint CDP của Chrome trên Windows.
Chọn cách này khi:
- Gateway nằm trong WSL2
- Chrome chạy trên Windows
- cần điều khiển trình duyệt vượt qua ranh giới WSL2/Windows
Lựa chọn 2: Host-local Chrome MCP
Chỉ sử dụng existing-session / user khi Gateway tự chạy trên cùng host với Chrome.
Chọn cách này khi:
- OpenClaw và Chrome trên cùng một máy
- muốn trạng thái trình duyệt đã đăng nhập cục bộ
- không cần truyền trình duyệt qua host
Đối với WSL2 Gateway + Windows Chrome, ưu tiên remote CDP thô. Chrome MCP là host-local, không phải cầu nối từ WSL2 đến Windows.
Kiến trúc hoạt động
Hình dạng tham khảo:
- WSL2 chạy Gateway trên
127.0.0.1:18789
- Windows mở Giao diện Điều khiển trong trình duyệt thông thường tại
http://127.0.0.1:18789/
- Windows Chrome mở một endpoint CDP trên cổng
9222
- WSL2 có thể truy cập endpoint CDP của Windows
- OpenClaw trỏ một hồ sơ trình duyệt đến địa chỉ có thể truy cập từ WSL2
Tại sao cấu hình này gây nhầm lẫn
Nhiều lỗi có thể chồng chéo:
- WSL2 không thể truy cập endpoint CDP của Windows
- Giao diện Điều khiển được mở từ một nguồn không an toàn
gateway.controlUi.allowedOrigins không khớp với nguồn trang
- thiếu token hoặc ghép đôi
- hồ sơ trình duyệt trỏ đến địa chỉ sai
Vì vậy, sửa một lớp có thể vẫn để lại lỗi khác hiển thị.
Quy tắc quan trọng cho Giao diện Điều khiển
Khi giao diện được mở từ Windows, sử dụng localhost của Windows trừ khi có cấu hình HTTPS cụ thể.
Sử dụng:
http://127.0.0.1:18789/
Không mặc định sử dụng IP LAN cho Giao diện Điều khiển. HTTP thông thường trên địa chỉ LAN hoặc tailnet có thể kích hoạt hành vi không an toàn liên quan đến CDP. Xem Control UI.
Xác thực theo từng lớp
Làm từ trên xuống dưới. Không bỏ qua bước nào.
Lớp 1: Xác minh Chrome đang phục vụ CDP trên Windows
Khởi động Chrome trên Windows với chế độ gỡ lỗi từ xa:
chrome.exe --remote-debugging-port=9222
Từ Windows, xác minh Chrome trước:
curl http://127.0.0.1:9222/json/version
curl http://127.0.0.1:9222/json/list
Nếu thất bại trên Windows, OpenClaw chưa phải là vấn đề.
Lớp 2: Xác minh WSL2 có thể truy cập endpoint của Windows
Từ WSL2, kiểm tra địa chỉ chính xác bạn dự định sử dụng trong cdpUrl:
curl http://WINDOWS_HOST_OR_IP:9222/json/version
curl http://WINDOWS_HOST_OR_IP:9222/json/list
Kết quả tốt:
/json/version trả về JSON với metadata Browser / Protocol-Version
/json/list trả về JSON (mảng rỗng cũng được nếu không có trang nào mở)
Nếu thất bại:
- Windows chưa mở cổng cho WSL2
- địa chỉ sai cho phía WSL2
- firewall / chuyển tiếp cổng / proxy cục bộ vẫn thiếu
Sửa điều đó trước khi chỉnh cấu hình OpenClaw.
Lớp 3: Cấu hình hồ sơ trình duyệt đúng
Đối với remote CDP thô, trỏ OpenClaw đến địa chỉ có thể truy cập từ WSL2:
{
browser: {
enabled: true,
defaultProfile: "remote",
profiles: {
remote: {
cdpUrl: "http://WINDOWS_HOST_OR_IP:9222",
attachOnly: true,
color: "#00AA00",
},
},
},
}
Ghi chú:
- sử dụng địa chỉ có thể truy cập từ WSL2, không phải địa chỉ chỉ hoạt động trên Windows
- giữ
attachOnly: true cho trình duyệt được quản lý bên ngoài
- kiểm tra cùng URL với
curl trước khi mong đợi OpenClaw thành công
Lớp 4: Xác minh lớp Giao diện Điều khiển riêng biệt
Mở giao diện từ Windows:
http://127.0.0.1:18789/
Sau đó xác minh:
- nguồn trang khớp với những gì
gateway.controlUi.allowedOrigins mong đợi
- xác thực token hoặc ghép đôi được cấu hình đúng
- không gỡ lỗi vấn đề xác thực Giao diện Điều khiển như thể đó là vấn đề trình duyệt
Trang hữu ích:
Lớp 5: Xác minh điều khiển trình duyệt từ đầu đến cuối
Từ WSL2:
openclaw browser open https://example.com --browser-profile remote
openclaw browser tabs --browser-profile remote
Kết quả tốt:
- tab mở trong Windows Chrome
openclaw browser tabs trả về mục tiêu
- các hành động sau (
snapshot, screenshot, navigate) hoạt động từ cùng hồ sơ
Lỗi gây hiểu lầm phổ biến
Xem mỗi thông báo như một manh mối cụ thể cho từng lớp:
control-ui-insecure-auth
- vấn đề nguồn UI / ngữ cảnh an toàn, không phải vấn đề truyền CDP
token_missing
pairing required
- vấn đề phê duyệt thiết bị
Remote CDP for profile "remote" is not reachable
- WSL2 không thể truy cập
cdpUrl đã cấu hình
gateway timeout after 1500ms
- thường vẫn là vấn đề truy cập CDP hoặc endpoint từ xa chậm/không thể truy cập
No Chrome tabs found for profile="user"
- hồ sơ Chrome MCP cục bộ được chọn khi không có tab host-local nào có sẵn
Danh sách kiểm tra nhanh
- Windows:
curl http://127.0.0.1:9222/json/version có hoạt động không?
- WSL2:
curl http://WINDOWS_HOST_OR_IP:9222/json/version có hoạt động không?
- Cấu hình OpenClaw:
browser.profiles.<name>.cdpUrl có sử dụng địa chỉ chính xác có thể truy cập từ WSL2 không?
- Giao diện Điều khiển: bạn có mở
http://127.0.0.1:18789/ thay vì IP LAN không?
- Bạn có đang cố sử dụng
existing-session giữa WSL2 và Windows thay vì remote CDP thô không?
Kết luận thực tiễn
Cấu hình này thường khả thi. Phần khó là truyền trình duyệt, bảo mật nguồn Giao diện Điều khiển và token/ghép đôi có thể thất bại độc lập trong khi trông giống nhau từ phía người dùng.
Khi nghi ngờ:
- xác minh endpoint Chrome trên Windows trước
- xác minh cùng endpoint từ WSL2 thứ hai
- chỉ sau đó mới gỡ lỗi cấu hình OpenClaw hoặc xác thực Giao diện Điều khiển
Last modified on March 22, 2026