Skip to content

Windows

OpenClaw 同时支持原生 WindowsWSL2。WSL2 是更稳定的方案,推荐用于完整体验——CLI、Gateway 和工具链在 Linux 内部运行,兼容性完整。原生 Windows 支持核心 CLI 和 Gateway 使用,但有部分限制(见下文说明)。

原生 Windows 伴侣 App 正在规划中。

WSL2(推荐方案)

原生 Windows 现状

原生 Windows CLI 流程正在持续改进,但 WSL2 仍是推荐路径。

目前原生 Windows 上运行良好的功能:

  • 通过 install.ps1 进行网站安装
  • 本地 CLI 使用,如 openclaw --versionopenclaw doctoropenclaw plugins list --json
  • 嵌入式本地 agent/provider 冒烟测试,例如:
powershell
openclaw agent --local --agent main --thinking low -m "Reply with exactly WINDOWS-HATCH-OK."

当前限制:

  • openclaw onboard --non-interactive 除非传入 --skip-health,否则仍需要可访问的本地 Gateway
  • openclaw onboard --non-interactive --install-daemonopenclaw gateway install 会优先尝试 Windows 计划任务
  • 如果计划任务创建被拒绝,OpenClaw 会回退到当前用户启动文件夹中的登录项,并立即启动 Gateway
  • 如果 schtasks 本身卡死或停止响应,OpenClaw 现在会快速中止该路径并回退,而不会无限挂起
  • 计划任务在可用时仍为首选,因为它能提供更好的守护进程状态监控

如果只需要原生 CLI、不需要安装 Gateway 服务,可使用以下命令之一:

powershell
openclaw onboard --non-interactive --skip-health
openclaw gateway run

如果确实需要原生 Windows 上的托管自启动:

powershell
openclaw gateway install
openclaw gateway status --json

如果计划任务创建被阻止,回退的服务模式仍会通过当前用户的启动文件夹在登录后自动启动。

Gateway

Gateway 服务安装(CLI)

在 WSL2 内部:

openclaw onboard --install-daemon

或:

openclaw gateway install

或:

openclaw configure

提示时选择 Gateway service

修复/迁移:

openclaw doctor

Gateway 在 Windows 登录前自启动

对于无头部署,确保完整启动链在无人登录 Windows 时也能运行。

1)保持用户服务在无登录状态下运行

在 WSL 内部:

bash
sudo loginctl enable-linger "$(whoami)"

2)安装 OpenClaw Gateway 用户服务

在 WSL 内部:

bash
openclaw gateway install

3)在 Windows 启动时自动运行 WSL

以管理员身份在 PowerShell 中执行:

powershell
schtasks /create /tn "WSL Boot" /tr "wsl.exe -d Ubuntu --exec /bin/true" /sc onstart /ru SYSTEM

Ubuntu 替换为你的发行版名称(通过以下命令查看):

powershell
wsl --list --verbose

验证启动链

重启后(Windows 登录之前),从 WSL 中检查:

bash
systemctl --user is-enabled openclaw-gateway
systemctl --user status openclaw-gateway --no-pager

进阶:通过 portproxy 将 WSL 服务暴露到局域网

WSL 有自己的虚拟网络。如果其他机器需要访问 WSL 内部运行的服务(SSH、本地 TTS 服务器或 Gateway),需要将 Windows 端口转发到当前 WSL IP。WSL IP 在重启后会改变,因此可能需要刷新转发规则。

示例(PowerShell 以管理员身份运行):

powershell
$Distro = "Ubuntu-24.04"
$ListenPort = 2222
$TargetPort = 22

$WslIp = (wsl -d $Distro -- hostname -I).Trim().Split(" ")[0]
if (-not $WslIp) { throw "WSL IP not found." }

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=$ListenPort `
  connectaddress=$WslIp connectport=$TargetPort

通过 Windows 防火墙放行端口(一次性):

powershell
New-NetFirewallRule -DisplayName "WSL SSH $ListenPort" -Direction Inbound `
  -Protocol TCP -LocalPort $ListenPort -Action Allow

WSL 重启后刷新 portproxy:

powershell
netsh interface portproxy delete v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 | Out-Null
netsh interface portproxy add v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 `
  connectaddress=$WslIp connectport=$TargetPort | Out-Null

注意事项:

  • 从其他机器 SSH 时,目标是 Windows 主机 IP(例如:ssh user@windows-host -p 2222)。
  • 远程节点必须指向可访问的 Gateway URL(不能是 127.0.0.1);使用 openclaw status --all 确认。
  • listenaddress=0.0.0.0 允许局域网访问;127.0.0.1 则仅限本地访问。
  • 如果需要自动化,可注册一个计划任务在登录时执行刷新步骤。

分步 WSL2 安装

1)安装 WSL2 + Ubuntu

以管理员身份打开 PowerShell:

powershell
wsl --install
# 或显式选择发行版:
wsl --list --online
wsl --install -d Ubuntu-24.04

如果 Windows 要求重启,请重启。

2)启用 systemd(Gateway 安装必须)

在 WSL 终端中:

bash
sudo tee /etc/wsl.conf >/dev/null <<'EOF'
[boot]
systemd=true
EOF

然后在 PowerShell 中:

powershell
wsl --shutdown

重新打开 Ubuntu,验证:

bash
systemctl --user status

3)在 WSL 内部安装 OpenClaw

在 WSL 内部按 Linux 快速入门流程操作:

bash
git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
pnpm ui:build # 首次运行时自动安装 UI 依赖
pnpm build
openclaw onboard

完整指南:快速入门

Windows 伴侣 App

目前尚无 Windows 伴侣 App。欢迎贡献代码推动它成为现实。