【教程】Windows本地配置openclaw!WSL2 + OpenClaw 完整配置指南,从零到能用

2026-04-11 13:491阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

OK呀各位佬友好,上一篇分享了我的 OpenClaw 记忆系统和人格系统配置(传送门),评论区不少佬友问:你这个环境到底怎么搭的?WSL 里跑 OpenClaw 有什么坑?

所以这篇专门写 WSL2 环境下配置 OpenClaw 的完整流程。我自己是 Windows 笔记本(Acer,16GB RAM),全程在 WSL2 Debian 里跑,稳定用了一周多,没翻过车。

先说结论:WSL2 跑 OpenClaw 完全没问题,甚至比 macOS 还灵活(systemd 守护进程、Xvfb 虚拟显示器这些 Linux 原生的东西用起来很顺手)。唯一的坑是网络代理,下面会详细说。

先说结论,可以跟着我的教程走,不过建议开启WSL之后直接让Claude Code帮你安装


我的环境

项目 配置
系统 Windows 11 + WSL2 (Debian)
硬件 Acer 笔记本,16GB RAM,长江存储 1TB SSD
Node.js v24.x(通过 nvm 或直接安装)
OpenClaw 2026.2.21-2(npm 全局安装)
代理 Windows 侧跑代理客户端,WSL 通过 SOCKS5 转发

一、WSL2 基础环境

WSL2 的安装看起来简单,但实际上有不少前置条件和容易踩的坑。这里从头说起。

1.1 前置条件检查

系统要求:

  • Windows 10 版本 2004(Build 19041)及以上,或 Windows 11
  • 64 位系统
  • BIOS 里开启了虚拟化(VT-x / AMD-V)

先检查虚拟化是否开启:打开任务管理器 → 性能 → CPU,看右下角"虚拟化"是否显示"已启用"。

如果没开,需要进 BIOS 开启:

  • 重启电脑,开机时按 F2 / Del / F10(不同品牌不一样)进入 BIOS
  • 找到 Intel Virtualization TechnologySVM Mode,设为 Enabled
  • 保存退出

1.2 启用 Windows 功能

管理员身份打开 PowerShell,依次执行:

# 启用"适用于 Linux 的 Windows 子系统" dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # 启用"虚拟机平台"(WSL2 需要) dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

执行完必须重启电脑,不重启后面的步骤会失败。

1.3 更新 WSL 内核 & 设置默认版本

重启后,继续在管理员 PowerShell 里:

# 更新 WSL 到最新版本(包含内核更新) wsl --update # 设置默认使用 WSL2(不是 WSL1) wsl --set-default-version 2

如果 wsl --update 报错,可以手动下载内核更新包:
去微软官网搜 “WSL2 Linux kernel update package” 下载安装。
国内网络不好的话,搜"WSL2 内核更新包"也能找到镜像。

1.4 安装 Debian

# 查看可用的发行版 wsl --list --online # 安装 Debian wsl --install -d Debian

安装完会自动打开 Debian 终端,设置用户名和密码。

如果 wsl --install 卡住或报错(国内网络问题),可以:

  1. 去 Microsoft Store 搜 “Debian” 直接安装
  2. 或者用离线包:wsl --install -d Debian --web-download

验证安装:

wsl -l -v # 应该看到: # NAME STATE VERSION # Debian Running 2

确保 VERSION 列是 2。如果是 1,执行:

wsl --set-version Debian 2

1.5 首次进入 Debian 后的基础配置

# 更新软件源(建议先换国内镜像,速度快很多) sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list sudo apt update && sudo apt upgrade -y # 安装基础工具 sudo apt install -y curl wget git build-essential

1.6 配置 .wslconfig(防止 WSL 被杀)

在 Windows 用户目录下创建 C:\Users\你的用户名\.wslconfig

[wsl2] autoMemoryReclaim=disabled

为什么要关闭自动内存回收? Windows 默认会在内存紧张时回收 WSL 的内存,这会导致 OpenClaw 网关进程被杀、WebSocket 断连。关掉这个选项后稳定多了。

改完后重启 WSL:

wsl --shutdown wsl -d Debian

1.7 启用 systemd

OpenClaw 的网关需要 systemd 来做守护进程。编辑 /etc/wsl.conf

[boot] systemd=true

重启 WSL 生效。验证:

systemctl --user status # 应该能看到 user slice 在跑


二、安装 Node.js 和 OpenClaw

2.1 安装 Node.js

推荐用 nvm 管理版本:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash source ~/.bashrc nvm install 24 node --version # v24.x

2.2 配置 npm 全局路径(避免 sudo)

mkdir -p ~/.npm-global npm config set prefix '~/.npm-global'

~/.bashrc 里加:

export PATH="$HOME/.npm-global/bin:$PATH"

然后 source ~/.bashrc

2.3 安装 OpenClaw

npm install -g openclaw openclaw --version # 确认安装成功

2.4 初始化配置

openclaw configure

这会启动交互式配置向导,主要设置:

  • 模型提供商:填你的 API 地址和 key(支持 OpenAI、Anthropic、自定义兼容接口)
  • 网关模式:选 local(本地使用)
  • 网关端口:默认 18789 就行

配置文件在 ~/.openclaw/openclaw.json


三、网络代理配置(最大的坑)

WSL2 里的网络环境比较特殊——它有自己的虚拟网卡,不能直接用 Windows 侧的 127.0.0.1 代理。

3.1 找到 Windows 主机 IP

WSL2 访问 Windows 主机的 IP 不是 127.0.0.1,而是网关地址:

# 方法1:从 /etc/resolv.conf 读 cat /etc/resolv.conf | grep nameserver | awk '{print $2}' # 方法2:直接用固定地址(WSL2 默认) # 通常是 172.x.x.1 的形式 ip route show default | awk '{print $3}'

假设你的 Windows 代理客户端监听 10808 端口(SOCKS5),那 WSL 里的代理地址就是:

socks5://172.31.0.1:10808

注意: 你的代理客户端需要开启"允许局域网连接",否则 WSL 连不上。

3.2 给 OpenClaw 网关配代理

OpenClaw 网关是 Node.js 进程,需要通过 HTTP 代理访问 API。但 Node.js 的 fetch 不认 SOCKS5 代理,需要用 Privoxy 做协议转换:

sudo apt install privoxy

编辑 /etc/privoxy/config,在末尾加一行:

forward-socks5 / 172.31.0.1:10808 .

这行的意思是:所有请求都通过 SOCKS5 代理转发。

启动 Privoxy:

sudo systemctl enable privoxy sudo systemctl start privoxy

Privoxy 默认监听 127.0.0.1:8118(HTTP 代理)。

3.3 在 systemd service 里注入代理

编辑 OpenClaw 的 systemd service 文件(~/.config/systemd/user/openclaw-gateway.service),在 [Service] 段加:

Environment="HTTPS_PROXY=http://127.0.0.1:8118" Environment="HTTP_PROXY=http://127.0.0.1:8118" Environment="no_proxy=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"

然后重载并重启:

systemctl --user daemon-reload systemctl --user restart openclaw-gateway

3.4 Git 代理(踩坑警告)

如果你需要 clone GitHub 仓库(比如安装 skill),Git 代理要这样配:

# ✅ 正确 git config --global http.proxy socks5://172.31.0.1:10808 # ❌ 错误 - 会卡死! git config --global http.proxy socks5h://172.31.0.1:10808

socks5hsocks5 的区别是 DNS 解析在哪边做。socks5h 让代理服务器解析 DNS,但某些代理客户端处理不好这个,会直接卡住。用 socks5 就没问题。


四、启动网关并设为守护进程

4.1 首次启动

openclaw gateway start

OpenClaw 会自动创建 systemd user service。验证:

openclaw gateway status # 应该看到 Runtime: running

4.2 开机自启

systemd user service 默认就是开机自启的(WantedBy=default.target)。但 WSL 有个问题:Windows 重启后 WSL 不会自动启动

解决方案:在 Windows 侧创建定时任务,每 2 分钟检查 WSL 是否在跑:

  1. 创建 PowerShell 脚本 C:\Users\你的用户名\scripts\keep-wsl-alive.ps1

$running = wsl -l --running 2>$null | Select-String "Debian" if (-not $running) { wsl -d Debian -- sh -c "nohup sleep infinity &" }

  1. 打开 Windows 任务计划程序,创建任务:
    • 触发器:每 2 分钟重复
    • 操作:powershell.exe -ExecutionPolicy Bypass -File C:\Users\你的用户名\scripts\keep-wsl-alive.ps1
    • 勾选"不管用户是否登录都要运行"

这样即使 Windows 重启,WSL 也会在 2 分钟内自动拉起,OpenClaw 网关跟着 systemd 一起启动。


五、浏览器配置(可选但推荐)

OpenClaw 有浏览器控制功能,可以让 AI 帮你操作网页。在 WSL 里需要额外配置。

5.1 安装 Chromium

sudo apt install chromium xvfb

  • chromium:浏览器本体
  • xvfb:虚拟显示器(WSL 没有真实显示器,需要虚拟的)

5.2 创建 Chromium wrapper 脚本

mkdir -p ~/.local/bin cat > ~/.local/bin/chromium-proxy << 'EOF' #!/bin/sh # Chromium wrapper: proxy + virtual display (Xvfb) # Uses display :99 to avoid conflicting with WSLg's :0 if ! pgrep -f "Xvfb :99" > /dev/null 2>&1; then Xvfb :99 -screen 0 1920x1080x24 -ac +extension GLX +render -noreset & sleep 1 fi export DISPLAY=:99 exec /usr/bin/chromium --proxy-server="socks5://172.31.0.1:10808" "$@" EOF chmod +x ~/.local/bin/chromium-proxy

为什么用 :99 而不是 :0 WSLg 占用了 :0,如果用 :0 会冲突,而且浏览器窗口会弹到 Windows 桌面上(你不想要这个)。用 :99 是纯虚拟的,不会弹窗。

5.3 配置 OpenClaw 使用自定义浏览器

编辑 ~/.openclaw/openclaw.json,加入浏览器配置:

{ "browser": { "executablePath": "/home/你的用户名/.local/bin/chromium-proxy", "headless": false, "profiles": { "openclaw": { "cdpPort": 18800, "color": "#FF4500" } } } }

5.4 在 systemd service 里加 DISPLAY 环境变量

Environment="DISPLAY=:99"

重载 service 后,OpenClaw 就能控制浏览器了。


六、自定义模型配置

OpenClaw 支持自定义 API 提供商。如果你用的是第三方中转站(比如各种 API 代理),在 openclaw.jsonmodels 部分配置:

{ "models": { "mode": "merge", "providers": { "my-provider": { "baseUrl": "https://your-api-endpoint.com", "apiKey": "sk-your-api-key", "api": "anthropic-messages", "models": [ { "id": "claude-opus-4-6", "name": "Claude Opus 4", "reasoning": false, "input": ["text", "image"], "contextWindow": 200000, "maxTokens": 32000 } ] } } } }

关键字段说明:

  • api:API 协议类型,anthropic-messagesopenai-chat
  • contextWindow:上下文窗口大小
  • maxTokens:最大输出 token 数
  • reasoning:是否支持 extended thinking

然后在 agents.defaults.model 里指定默认模型:

{ "agents": { "defaults": { "model": { "primary": "my-provider/claude-opus-4-6" } } } }


七、访问 Webchat UI

网关启动后,打开浏览器访问:

http://127.0.0.1:18789/

如果你想从 Windows 浏览器访问 WSL 里的网关,直接用 localhost:18789 就行——WSL2 会自动做端口转发。

首次访问需要输入 gateway token(在 openclaw.jsongateway.auth.token 里)。


八、完整代理链路图

画个图帮大家理解整个代理链路:

OpenClaw Gateway (Node.js) ↓ HTTP_PROXY=127.0.0.1:8118 Privoxy (HTTP→SOCKS5 转换) ↓ forward-socks5 172.31.0.1:10808 Windows 代理客户端 (v2rayN/Clash 等) ↓ SOCKS5 代理服务器 ↓ 互联网 (Anthropic API / OpenAI API)

Chromium 浏览器走的是另一条路:

Chromium (--proxy-server 参数) ↓ SOCKS5 直连 172.31.0.1:10808 Windows 代理客户端 ↓ 互联网

Chromium 可以直接用 SOCKS5,不需要 Privoxy 中转。Node.js 的 fetch 不行,所以网关需要 Privoxy。


九、踩坑汇总

坑1:WSL 自动回收内存

现象: OpenClaw 网关莫名断连,openclaw gateway status 显示进程不在了。

原因: Windows 的 autoMemoryReclaim 功能回收了 WSL 内存。

解决: .wslconfigautoMemoryReclaim=disabled

坑2:socks5h 卡死

现象: git clonecurl 通过代理时永远卡住不动。

原因: socks5h:// 让代理服务器做 DNS 解析,某些代理客户端处理不好。

解决: 统一用 socks5://(本地 DNS 解析)。

坑3:Chromium 弹窗到 Windows 桌面

现象: OpenClaw 启动浏览器后,Windows 桌面上突然弹出一个 Chromium 窗口。

原因: 用了 WSLg 的 :0 显示器。

解决: Xvfb 用 :99,不走 WSLg。

坑4:systemd user service 不启动

现象: WSL 重启后 openclaw gateway status 显示没在跑。

原因: systemd user service 需要用户 session 才能启动,WSL 默认不创建 user session。

解决:loginctl enable-linger 你的用户名 让 user service 在没有登录 session 时也能跑。

sudo loginctl enable-linger $(whoami)

坑5:sudo 每次要输密码

OpenClaw 有时需要执行 sudo 命令(装软件等),每次输密码很烦。

sudo visudo # 加一行(把 your_username 换成你的用户名): your_username ALL=(ALL) NOPASSWD: ALL

这个只在 WSL 里配,不要在生产服务器上这么干。


十、验证清单

全部配完后,逐项检查:

# 1. WSL2 + systemd systemctl --user status # 应该正常 # 2. Node.js node --version # v24.x # 3. OpenClaw openclaw --version # 2026.2.x # 4. 网关运行 openclaw gateway status # Runtime: running # 5. 代理链路 curl -x http://127.0.0.1:8118 https://api.anthropic.com # 应该能连通(会返回错误页面但不会超时) # 6. Webchat UI # 浏览器打开 http://localhost:18789/ # 7. 浏览器控制(可选) openclaw browser start --browser-profile openclaw openclaw browser status --browser-profile openclaw # running: true


写在最后

WSL2 跑 OpenClaw 的核心就三件事:

  1. systemd —— 让网关能守护进程运行
  2. 代理链路 —— Privoxy 做 HTTP→SOCKS5 转换,解决 Node.js 不认 SOCKS5 的问题
  3. 保活 —— .wslconfig 关内存回收 + Windows 定时任务拉起 WSL

其他都是锦上添花。配好这三样,日常使用就很稳了。

有问题欢迎评论区交流,也可以看看我上一篇关于 OpenClaw 记忆系统和人格系统的配置分享

【分享】折腾了一周 OpenClaw,我给 AI 助手搞了一套记忆系统和人格系统,附完整配置思路

网友解答:
--【壹】--:

学习一下


--【贰】--:

前排支持!


--【叁】--:

收藏了,忙完这几天跟着试一下


--【肆】--:

网络设置好像直接mirrored模式就行了(win11),而且现在好像v2rayn很多时候默认端口都是mixed的,似乎不用转换了


--【伍】--:

早买早解脱,不买一直受苦


--【陆】--:

码住学习


--【柒】--:

太强了佬


--【捌】--:

niubi plus


--【玖】--:

感谢佬友


--【拾】--:

感谢教程


--【拾壹】--:

加入书签,开工用公司电脑做实验


--【拾贰】--:

收藏,开工后试一下


--【拾叁】--: 一念:

Chromium 弹窗到 Windows 桌面

我觉得弹出来比较好,要不很多验证啥的过不了~~

另外wsl2的网络用mirror模式会方便很多~


--【拾肆】--:

前排支持


--【拾伍】--:

沃噻,泰裤辣,明天试试,感谢佬


--【拾陆】--:

感谢分享


--【拾柒】--:

给力给力


--【拾捌】--:

学习一下


--【拾玖】--:

支持一下,但是我觉得windows侧直接用tun模式做代理可以省略掉你上面的很多步骤,至少我是这样做的

标签:人工智能
问题描述:

OK呀各位佬友好,上一篇分享了我的 OpenClaw 记忆系统和人格系统配置(传送门),评论区不少佬友问:你这个环境到底怎么搭的?WSL 里跑 OpenClaw 有什么坑?

所以这篇专门写 WSL2 环境下配置 OpenClaw 的完整流程。我自己是 Windows 笔记本(Acer,16GB RAM),全程在 WSL2 Debian 里跑,稳定用了一周多,没翻过车。

先说结论:WSL2 跑 OpenClaw 完全没问题,甚至比 macOS 还灵活(systemd 守护进程、Xvfb 虚拟显示器这些 Linux 原生的东西用起来很顺手)。唯一的坑是网络代理,下面会详细说。

先说结论,可以跟着我的教程走,不过建议开启WSL之后直接让Claude Code帮你安装


我的环境

项目 配置
系统 Windows 11 + WSL2 (Debian)
硬件 Acer 笔记本,16GB RAM,长江存储 1TB SSD
Node.js v24.x(通过 nvm 或直接安装)
OpenClaw 2026.2.21-2(npm 全局安装)
代理 Windows 侧跑代理客户端,WSL 通过 SOCKS5 转发

一、WSL2 基础环境

WSL2 的安装看起来简单,但实际上有不少前置条件和容易踩的坑。这里从头说起。

1.1 前置条件检查

系统要求:

  • Windows 10 版本 2004(Build 19041)及以上,或 Windows 11
  • 64 位系统
  • BIOS 里开启了虚拟化(VT-x / AMD-V)

先检查虚拟化是否开启:打开任务管理器 → 性能 → CPU,看右下角"虚拟化"是否显示"已启用"。

如果没开,需要进 BIOS 开启:

  • 重启电脑,开机时按 F2 / Del / F10(不同品牌不一样)进入 BIOS
  • 找到 Intel Virtualization TechnologySVM Mode,设为 Enabled
  • 保存退出

1.2 启用 Windows 功能

管理员身份打开 PowerShell,依次执行:

# 启用"适用于 Linux 的 Windows 子系统" dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # 启用"虚拟机平台"(WSL2 需要) dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

执行完必须重启电脑,不重启后面的步骤会失败。

1.3 更新 WSL 内核 & 设置默认版本

重启后,继续在管理员 PowerShell 里:

# 更新 WSL 到最新版本(包含内核更新) wsl --update # 设置默认使用 WSL2(不是 WSL1) wsl --set-default-version 2

如果 wsl --update 报错,可以手动下载内核更新包:
去微软官网搜 “WSL2 Linux kernel update package” 下载安装。
国内网络不好的话,搜"WSL2 内核更新包"也能找到镜像。

1.4 安装 Debian

# 查看可用的发行版 wsl --list --online # 安装 Debian wsl --install -d Debian

安装完会自动打开 Debian 终端,设置用户名和密码。

如果 wsl --install 卡住或报错(国内网络问题),可以:

  1. 去 Microsoft Store 搜 “Debian” 直接安装
  2. 或者用离线包:wsl --install -d Debian --web-download

验证安装:

wsl -l -v # 应该看到: # NAME STATE VERSION # Debian Running 2

确保 VERSION 列是 2。如果是 1,执行:

wsl --set-version Debian 2

1.5 首次进入 Debian 后的基础配置

# 更新软件源(建议先换国内镜像,速度快很多) sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list sudo apt update && sudo apt upgrade -y # 安装基础工具 sudo apt install -y curl wget git build-essential

1.6 配置 .wslconfig(防止 WSL 被杀)

在 Windows 用户目录下创建 C:\Users\你的用户名\.wslconfig

[wsl2] autoMemoryReclaim=disabled

为什么要关闭自动内存回收? Windows 默认会在内存紧张时回收 WSL 的内存,这会导致 OpenClaw 网关进程被杀、WebSocket 断连。关掉这个选项后稳定多了。

改完后重启 WSL:

wsl --shutdown wsl -d Debian

1.7 启用 systemd

OpenClaw 的网关需要 systemd 来做守护进程。编辑 /etc/wsl.conf

[boot] systemd=true

重启 WSL 生效。验证:

systemctl --user status # 应该能看到 user slice 在跑


二、安装 Node.js 和 OpenClaw

2.1 安装 Node.js

推荐用 nvm 管理版本:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash source ~/.bashrc nvm install 24 node --version # v24.x

2.2 配置 npm 全局路径(避免 sudo)

mkdir -p ~/.npm-global npm config set prefix '~/.npm-global'

~/.bashrc 里加:

export PATH="$HOME/.npm-global/bin:$PATH"

然后 source ~/.bashrc

2.3 安装 OpenClaw

npm install -g openclaw openclaw --version # 确认安装成功

2.4 初始化配置

openclaw configure

这会启动交互式配置向导,主要设置:

  • 模型提供商:填你的 API 地址和 key(支持 OpenAI、Anthropic、自定义兼容接口)
  • 网关模式:选 local(本地使用)
  • 网关端口:默认 18789 就行

配置文件在 ~/.openclaw/openclaw.json


三、网络代理配置(最大的坑)

WSL2 里的网络环境比较特殊——它有自己的虚拟网卡,不能直接用 Windows 侧的 127.0.0.1 代理。

3.1 找到 Windows 主机 IP

WSL2 访问 Windows 主机的 IP 不是 127.0.0.1,而是网关地址:

# 方法1:从 /etc/resolv.conf 读 cat /etc/resolv.conf | grep nameserver | awk '{print $2}' # 方法2:直接用固定地址(WSL2 默认) # 通常是 172.x.x.1 的形式 ip route show default | awk '{print $3}'

假设你的 Windows 代理客户端监听 10808 端口(SOCKS5),那 WSL 里的代理地址就是:

socks5://172.31.0.1:10808

注意: 你的代理客户端需要开启"允许局域网连接",否则 WSL 连不上。

3.2 给 OpenClaw 网关配代理

OpenClaw 网关是 Node.js 进程,需要通过 HTTP 代理访问 API。但 Node.js 的 fetch 不认 SOCKS5 代理,需要用 Privoxy 做协议转换:

sudo apt install privoxy

编辑 /etc/privoxy/config,在末尾加一行:

forward-socks5 / 172.31.0.1:10808 .

这行的意思是:所有请求都通过 SOCKS5 代理转发。

启动 Privoxy:

sudo systemctl enable privoxy sudo systemctl start privoxy

Privoxy 默认监听 127.0.0.1:8118(HTTP 代理)。

3.3 在 systemd service 里注入代理

编辑 OpenClaw 的 systemd service 文件(~/.config/systemd/user/openclaw-gateway.service),在 [Service] 段加:

Environment="HTTPS_PROXY=http://127.0.0.1:8118" Environment="HTTP_PROXY=http://127.0.0.1:8118" Environment="no_proxy=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"

然后重载并重启:

systemctl --user daemon-reload systemctl --user restart openclaw-gateway

3.4 Git 代理(踩坑警告)

如果你需要 clone GitHub 仓库(比如安装 skill),Git 代理要这样配:

# ✅ 正确 git config --global http.proxy socks5://172.31.0.1:10808 # ❌ 错误 - 会卡死! git config --global http.proxy socks5h://172.31.0.1:10808

socks5hsocks5 的区别是 DNS 解析在哪边做。socks5h 让代理服务器解析 DNS,但某些代理客户端处理不好这个,会直接卡住。用 socks5 就没问题。


四、启动网关并设为守护进程

4.1 首次启动

openclaw gateway start

OpenClaw 会自动创建 systemd user service。验证:

openclaw gateway status # 应该看到 Runtime: running

4.2 开机自启

systemd user service 默认就是开机自启的(WantedBy=default.target)。但 WSL 有个问题:Windows 重启后 WSL 不会自动启动

解决方案:在 Windows 侧创建定时任务,每 2 分钟检查 WSL 是否在跑:

  1. 创建 PowerShell 脚本 C:\Users\你的用户名\scripts\keep-wsl-alive.ps1

$running = wsl -l --running 2>$null | Select-String "Debian" if (-not $running) { wsl -d Debian -- sh -c "nohup sleep infinity &" }

  1. 打开 Windows 任务计划程序,创建任务:
    • 触发器:每 2 分钟重复
    • 操作:powershell.exe -ExecutionPolicy Bypass -File C:\Users\你的用户名\scripts\keep-wsl-alive.ps1
    • 勾选"不管用户是否登录都要运行"

这样即使 Windows 重启,WSL 也会在 2 分钟内自动拉起,OpenClaw 网关跟着 systemd 一起启动。


五、浏览器配置(可选但推荐)

OpenClaw 有浏览器控制功能,可以让 AI 帮你操作网页。在 WSL 里需要额外配置。

5.1 安装 Chromium

sudo apt install chromium xvfb

  • chromium:浏览器本体
  • xvfb:虚拟显示器(WSL 没有真实显示器,需要虚拟的)

5.2 创建 Chromium wrapper 脚本

mkdir -p ~/.local/bin cat > ~/.local/bin/chromium-proxy << 'EOF' #!/bin/sh # Chromium wrapper: proxy + virtual display (Xvfb) # Uses display :99 to avoid conflicting with WSLg's :0 if ! pgrep -f "Xvfb :99" > /dev/null 2>&1; then Xvfb :99 -screen 0 1920x1080x24 -ac +extension GLX +render -noreset & sleep 1 fi export DISPLAY=:99 exec /usr/bin/chromium --proxy-server="socks5://172.31.0.1:10808" "$@" EOF chmod +x ~/.local/bin/chromium-proxy

为什么用 :99 而不是 :0 WSLg 占用了 :0,如果用 :0 会冲突,而且浏览器窗口会弹到 Windows 桌面上(你不想要这个)。用 :99 是纯虚拟的,不会弹窗。

5.3 配置 OpenClaw 使用自定义浏览器

编辑 ~/.openclaw/openclaw.json,加入浏览器配置:

{ "browser": { "executablePath": "/home/你的用户名/.local/bin/chromium-proxy", "headless": false, "profiles": { "openclaw": { "cdpPort": 18800, "color": "#FF4500" } } } }

5.4 在 systemd service 里加 DISPLAY 环境变量

Environment="DISPLAY=:99"

重载 service 后,OpenClaw 就能控制浏览器了。


六、自定义模型配置

OpenClaw 支持自定义 API 提供商。如果你用的是第三方中转站(比如各种 API 代理),在 openclaw.jsonmodels 部分配置:

{ "models": { "mode": "merge", "providers": { "my-provider": { "baseUrl": "https://your-api-endpoint.com", "apiKey": "sk-your-api-key", "api": "anthropic-messages", "models": [ { "id": "claude-opus-4-6", "name": "Claude Opus 4", "reasoning": false, "input": ["text", "image"], "contextWindow": 200000, "maxTokens": 32000 } ] } } } }

关键字段说明:

  • api:API 协议类型,anthropic-messagesopenai-chat
  • contextWindow:上下文窗口大小
  • maxTokens:最大输出 token 数
  • reasoning:是否支持 extended thinking

然后在 agents.defaults.model 里指定默认模型:

{ "agents": { "defaults": { "model": { "primary": "my-provider/claude-opus-4-6" } } } }


七、访问 Webchat UI

网关启动后,打开浏览器访问:

http://127.0.0.1:18789/

如果你想从 Windows 浏览器访问 WSL 里的网关,直接用 localhost:18789 就行——WSL2 会自动做端口转发。

首次访问需要输入 gateway token(在 openclaw.jsongateway.auth.token 里)。


八、完整代理链路图

画个图帮大家理解整个代理链路:

OpenClaw Gateway (Node.js) ↓ HTTP_PROXY=127.0.0.1:8118 Privoxy (HTTP→SOCKS5 转换) ↓ forward-socks5 172.31.0.1:10808 Windows 代理客户端 (v2rayN/Clash 等) ↓ SOCKS5 代理服务器 ↓ 互联网 (Anthropic API / OpenAI API)

Chromium 浏览器走的是另一条路:

Chromium (--proxy-server 参数) ↓ SOCKS5 直连 172.31.0.1:10808 Windows 代理客户端 ↓ 互联网

Chromium 可以直接用 SOCKS5,不需要 Privoxy 中转。Node.js 的 fetch 不行,所以网关需要 Privoxy。


九、踩坑汇总

坑1:WSL 自动回收内存

现象: OpenClaw 网关莫名断连,openclaw gateway status 显示进程不在了。

原因: Windows 的 autoMemoryReclaim 功能回收了 WSL 内存。

解决: .wslconfigautoMemoryReclaim=disabled

坑2:socks5h 卡死

现象: git clonecurl 通过代理时永远卡住不动。

原因: socks5h:// 让代理服务器做 DNS 解析,某些代理客户端处理不好。

解决: 统一用 socks5://(本地 DNS 解析)。

坑3:Chromium 弹窗到 Windows 桌面

现象: OpenClaw 启动浏览器后,Windows 桌面上突然弹出一个 Chromium 窗口。

原因: 用了 WSLg 的 :0 显示器。

解决: Xvfb 用 :99,不走 WSLg。

坑4:systemd user service 不启动

现象: WSL 重启后 openclaw gateway status 显示没在跑。

原因: systemd user service 需要用户 session 才能启动,WSL 默认不创建 user session。

解决:loginctl enable-linger 你的用户名 让 user service 在没有登录 session 时也能跑。

sudo loginctl enable-linger $(whoami)

坑5:sudo 每次要输密码

OpenClaw 有时需要执行 sudo 命令(装软件等),每次输密码很烦。

sudo visudo # 加一行(把 your_username 换成你的用户名): your_username ALL=(ALL) NOPASSWD: ALL

这个只在 WSL 里配,不要在生产服务器上这么干。


十、验证清单

全部配完后,逐项检查:

# 1. WSL2 + systemd systemctl --user status # 应该正常 # 2. Node.js node --version # v24.x # 3. OpenClaw openclaw --version # 2026.2.x # 4. 网关运行 openclaw gateway status # Runtime: running # 5. 代理链路 curl -x http://127.0.0.1:8118 https://api.anthropic.com # 应该能连通(会返回错误页面但不会超时) # 6. Webchat UI # 浏览器打开 http://localhost:18789/ # 7. 浏览器控制(可选) openclaw browser start --browser-profile openclaw openclaw browser status --browser-profile openclaw # running: true


写在最后

WSL2 跑 OpenClaw 的核心就三件事:

  1. systemd —— 让网关能守护进程运行
  2. 代理链路 —— Privoxy 做 HTTP→SOCKS5 转换,解决 Node.js 不认 SOCKS5 的问题
  3. 保活 —— .wslconfig 关内存回收 + Windows 定时任务拉起 WSL

其他都是锦上添花。配好这三样,日常使用就很稳了。

有问题欢迎评论区交流,也可以看看我上一篇关于 OpenClaw 记忆系统和人格系统的配置分享

【分享】折腾了一周 OpenClaw,我给 AI 助手搞了一套记忆系统和人格系统,附完整配置思路

网友解答:
--【壹】--:

学习一下


--【贰】--:

前排支持!


--【叁】--:

收藏了,忙完这几天跟着试一下


--【肆】--:

网络设置好像直接mirrored模式就行了(win11),而且现在好像v2rayn很多时候默认端口都是mixed的,似乎不用转换了


--【伍】--:

早买早解脱,不买一直受苦


--【陆】--:

码住学习


--【柒】--:

太强了佬


--【捌】--:

niubi plus


--【玖】--:

感谢佬友


--【拾】--:

感谢教程


--【拾壹】--:

加入书签,开工用公司电脑做实验


--【拾贰】--:

收藏,开工后试一下


--【拾叁】--: 一念:

Chromium 弹窗到 Windows 桌面

我觉得弹出来比较好,要不很多验证啥的过不了~~

另外wsl2的网络用mirror模式会方便很多~


--【拾肆】--:

前排支持


--【拾伍】--:

沃噻,泰裤辣,明天试试,感谢佬


--【拾陆】--:

感谢分享


--【拾柒】--:

给力给力


--【拾捌】--:

学习一下


--【拾玖】--:

支持一下,但是我觉得windows侧直接用tun模式做代理可以省略掉你上面的很多步骤,至少我是这样做的

标签:人工智能