1. 为什么要把云端大脑和本地浏览器接起来OpenClaw 这类 AI 自动化框架有个很现实的矛盾云端服务器算力稳、常在线但它的浏览器跑在机房 IP 上登录态、内网页面、本地文件它都够不着而你本地 Windows 上的 Chrome 有完整的登录态、能访问公司内网、能操作本地下载目录可你的电脑不可能 7×24 开着跑任务。把两者接起来让云端的 Gateway 当大脑、本地的 Node 当手脚就能实现「云端下指令、本地浏览器干活」的闭环。这篇讲的就是这条链路怎么打通云端 Linux 跑 OpenClaw Gateway本地 Windows 通过 WSL2 跑 OpenClaw Node两者之间用 SSH 隧道加密通信Node 再驱动 Windows 上的 Chromium 内核浏览器。适合已经有一台云服务器、想在本地浏览器上做 AI 自动化截图、点击、填表、抓链接的人。核心难点有三个WSL2 的网络模式要选对、SSH 隧道必须常驻、浏览器调试端口和 Playwright 依赖要装齐。下面按可复制的顺序一步步来配置骨架和验证命令都给全。先说清楚架构不然后面排障会懵┌─────────────────────────────────┐ │ 云端服务器Linux │ │ OpenClaw Gateway │ │ 监听 127.0.0.1:18789 │ └────────────┬────────────────────┘ │ SSH 加密隧道 │ 本地 18789 → 云端 18789 ┌────────────▼────────────────────┐ │ 本地 Windows 电脑 │ │ WSL2 Ubuntu │ │ └── OpenClaw Node │ │ ↓ 代理浏览器操作 │ │ Windows 本地 Chrome/Edge │ └─────────────────────────────────┘云端 Gateway 负责理解对话、拆解任务、下发指令本地 Node 是执行终端收到指令后调用 Playwright 去操控 Windows 上的浏览器SSH 隧道把云端的 18789 端口加密映射到本地Node 以为自己在连本地服务实际数据全程走 SSH 加密不用把端口暴露到公网。这个设计的好处是安全代价是隧道断了整条链路就断所以后面会专门讲怎么让它稳。2. 前置准备Token、WSL2 与网络模式2.1 拿到云端 Gateway Token登录云端服务器从配置文件里把 token 抠出来cat ~/.openclaw/openclaw.json | grep -i token输出里token字段的值就是后面 Node 连接要用的凭证先记下来。如果这个文件不存在说明 Gateway 还没初始化先跑一次openclaw onboard或按官方文档启动 Gateway。2.2 本地 Windows 装 WSL2Windows 10 2004 以上或 Windows 11 都行。以管理员身份打开 PowerShellwsl --install想指定版本就加-dwsl --install -d Ubuntu-24.04装完重启电脑重启后会自动弹出 Ubuntu 终端按提示设 Linux 用户名和密码。这里有个坑WSL2 默认的网络模式是 NATWSL 里的127.0.0.1和 Windows 主机的127.0.0.1不是同一个东西。我们这条链路里 Node 连的是隧道映射到 WSL 本地的端口所以 NAT 模式够用但如果你后面想让 WSL 里的服务被 Windows 直接访问就得考虑 mirrored 模式。本篇场景用默认 NAT 即可别乱改。2.3 启用 systemd必须OpenClaw Node 依赖 systemd 管理用户级服务不开启会报错。在 WSL Ubuntu 终端里sudo tee /etc/wsl.conf /dev/null EOF [boot] systemdtrue EOF然后在 PowerShell 里彻底关掉 WSL 再重开wsl --shutdown重新打开 Ubuntu 终端验证systemctl --user status看到State: running就对了。如果报System has not been booted with systemd说明 wsl.conf 没生效检查文件路径和内容再wsl --shutdown一次。3. 可复制配置Node 安装、隧道与 config.toml3.1 WSL2 里只装 Node不配 Gateway关键认知本地 WSL2 只装 OpenClaw Node不需要 API Key不需要openclaw onboard不要在这里跑 Gateway。一键脚本curl -fsSL https://openclaw.ai/install.sh | bash安装过程中的提示全部选 No 或跳过。装完验证which openclaw openclaw --version路径应该是/home/你的用户名/.npm-global/bin/openclaw。如果显示/mnt/d/...这种 Windows 路径说明 WSL 的 PATH 优先命中了 Windows 装的版本修复echo export PATH$HOME/.npm-global/bin:$PATH ~/.bashrc source ~/.bashrc which openclaw3.2 建立 SSH 隧道OpenClaw 出于安全考虑禁止明文ws://连远程 Gateway所以必须走隧道。新开一个终端窗口PowerShell、CMD、WSL 都行ssh -N -L 18789:127.0.0.1:18789 root你的云端服务器IP-N表示只转发不执行远程命令-L是本地端口转发。输入密码后终端会挂起不动这是正常的说明隧道在跑。这个窗口必须一直开着关了隧道就断。注意-L后面的127.0.0.1:18789是云端视角的地址不是本地。意思是「把本地 18789 转发到云端自己看到的 127.0.0.1:18789」因为 Gateway 只监听回环地址不对外暴露。3.3 Node 的 config.toml 骨架OpenClaw Node 的配置文件默认在~/.openclaw/config.tomlWSL 内。一个最小可用骨架[node] display_name 我的Windows电脑 host 127.0.0.1 port 18789 [browser] # 指向 Windows 上的 Chromium 内核浏览器调试端口 cdp_endpoint http://127.0.0.1:9222 headless false default_timeout_ms 30000 [security] # 禁止明文连接强制走隧道 allow_plaintext falsecdp_endpoint是 Chrome DevTools Protocol 的地址Node 通过它操控浏览器。headless false表示用有头模式方便你看到浏览器在动调试阶段建议保持 false。3.4 浏览器调试端口暴露要让 Node 能连上 Windows 的 Chrome得用调试模式启动 Chrome 并开放 9222 端口。在 Windows 上新建一个快捷方式目标填C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port9222 --user-data-dirC:\chrome-debug--user-data-dir必须指定一个独立目录否则 Chrome 会复用已有实例导致调试端口不生效。启动后访问http://127.0.0.1:9222/json/version能看到 JSON 就说明端口开了。3.5 settings.json 骨架如果你用 VS Code 或类似工具管理这套配置settings.json里可以放环境变量和启动参数{ openclaw.node.host: 127.0.0.1, openclaw.node.port: 18789, openclaw.node.displayName: 我的Windows电脑, openclaw.browser.cdpEndpoint: http://127.0.0.1:9222, openclaw.security.allowPlaintext: false, terminal.integrated.env.windows: { OPENCLAW_GATEWAY_TOKEN: 你的Gateway Token } }Token 放环境变量里别硬编码进配置文件提交到仓库。4. 启动 Node 并验证请求成功4.1 设置 Token 并启动 Node另开一个终端窗口别关隧道那个。PowerShell$env:OPENCLAW_GATEWAY_TOKEN你的Gateway Token openclaw node run --host 127.0.0.1 --port 18789 --display-name 我的Windows电脑CMD 用set OPENCLAW_GATEWAY_TOKEN你的Gateway Token。命令执行后终端挂起等待说明 Node 在运行并保持连接。4.2 云端审批设备登录云端ssh root你的云端服务器IP openclaw devices list如果看到你的设备名且角色是node说明自动配对成功。如果是Pending状态openclaw devices approve requestId再确认节点在线openclaw nodes status4.3 发一条真实指令验证在 OpenClaw 聊天界面输入打开浏览器访问 https://example.com给我截一张截图如果返回截图说明云端已经成功驱动本地浏览器。再试几个操作确认链路完整打开浏览器访问 https://baidu.com 并截图 打开浏览器搜索OpenClaw 使用教程点击第一个结果 打开浏览器访问 https://example.com把页面上的所有链接提取出来截图能回来、点击能生效、链接能提取三个都过闭环就算跑通了。5. 本篇常见错排查5.1 ECONNREFUSED 127.0.0.1:18789隧道没建或断了。重新执行第 3.2 步确认隧道窗口还开着再启动 Node。5.2 SECURITY ERROR: Cannot connect over plaintext ws://你直接用云端 IP 连了没走隧道。--host必须填127.0.0.1不能填云端 IP。检查 config.toml 里allow_plaintext false是否生效。5.3 unauthorized: gateway token mismatchToken 没设或设错。云端重新查cat ~/.openclaw/openclaw.json | grep token然后重设环境变量再启动 Node$env:OPENCLAW_GATEWAY_TOKEN正确的Token openclaw node run --host 127.0.0.1 --port 18789 --display-name 我的Windows电脑5.4 which openclaw 显示 Windows 路径WSL 的 PATH 命中了 Windows 版本。按 3.1 的修复命令把~/.npm-global/bin提到前面。5.5 浏览器找不到无法控制WSL 里没有 Chromium 或 Playwright 没装。两种方案# 方案一WSL 里装 Chromium sudo apt update sudo apt install -y chromium-browser # 方案二装 Playwright 浏览器推荐 npx playwright install chromium5.6 Node 连上了但浏览器操作失败501Playwright 未安装跑npx playwright install chromium即可。如果还报错检查cdp_endpoint指向的 9222 端口是否真的开着用curl http://127.0.0.1:9222/json/version验证。5.7 隧道频繁断连SSH 默认没有心跳网络抖动就断。在~/.ssh/config里加Host 你的云端服务器IP ServerAliveInterval 30 ServerAliveCountMax 3 TCPKeepAlive yes这样每 30 秒发一次心跳连续 3 次没响应才断稳定性会好很多。6. 长期跑自动化把 Token 和隧道交给 Coding Plan如果你只是偶尔用一次手动开两个窗口没问题。但如果你打算让这套链路长期跑——比如每天定时抓数据、做监控、跑 Agent 任务——手动维护隧道和 Node 进程会很累断一次就得重来。这种长期编码和 Agent 场景建议把 Gateway 侧的模型调用和任务编排交给 Coding Plan 来管它更适合持续性的自动化任务不用每次手动配。接入相关的 API Key 和文档在这里模型对话调试https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel_chatCoding Plan长期编码/Agenthttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding_plan控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsoleAPI Keyshttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi_keys接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdocClaude Code Anthropic 接入https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaude_codeAPI 地址统一用https://taotoken.net/api不带 UTM。最后给个开机自启的批处理省得每次手动开echo off echo 正在启动 OpenClaw Node... start SSH Tunnel cmd /c ssh -N -L 18789:127.0.0.1:18789 root你的云端服务器IP timeout /t 3 /nobreak set OPENCLAW_GATEWAY_TOKEN你的Gateway Token openclaw node run --host 127.0.0.1 --port 18789 --display-name 我的Windows电脑存成start-openclaw-node.bat按Win R输入shell:startup把文件丢进去下次开机自动跑。实测下来隧道加心跳配置之后连续跑一周基本不用管。