1. 为什么要在 Win10 WSL 和 Ubuntu24 上折腾 openclaw
openclaw 是一个可以本地部署、通过 Web UI 和聊天软件对话的智能体网关,适合想把 AI 助手跑在自己机器上、又不想把数据交给第三方的人。它支持 systemd 托管、SSH 端口转发、Telegram 等第三方 App 配对,部署完成后你在 Windows 浏览器里就能直接和它聊天。
问题在于,openclaw 官方安装脚本默认面向 Linux 环境,Win10 用户如果直接跑会卡在 systemd 不可用、端口访问被拦、SSH 转发配不对这几个坑上。我实测下来,Win10 走 WSL + Ubuntu 24.04 是最顺的路径,Ubuntu 24.04 裸机或 VMware 虚拟机也可以,但两者都必须先把 systemd 用户实例打开,否则systemctl --user status openclaw-gateway.service会直接报systemctl is-enabled unavailable。
这篇内容面向两类人:一是 Win10 想用 WSL 跑 openclaw 但被 systemd 和 SSH 转发卡住的;二是 Ubuntu 24.04 物理机或虚拟机部署 openclaw、需要接 TaoToken 统一 Key 的。下面从环境准备、安装、config.toml 骨架、TaoToken 接入、systemd 验证、SSH 连通性检查到常见报错,一步步给可复制的命令。
2. 前置环境:WSL 与 Ubuntu24 的 systemd 配置
2.1 Win10 开启 WSL 与安装 Ubuntu 24.04
以管理员身份打开 PowerShell,先开启两个系统功能:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart执行完重启电脑。重启后继续用管理员 PowerShell 安装 WSL 内核:
wsl --install再次重启,然后安装 Ubuntu 24.04 发行版:
wsl --install -d Ubuntu-24.04首次进入会提示设置用户名和密码,这个账号后面 SSH 转发和 systemd 服务都会用到,记好。
2.2 打开 systemd 用户实例
WSL 默认不启用 systemd,openclaw 的 gateway 服务依赖它。在 Ubuntu 终端里写入/etc/wsl.conf:
sudo tee /etc/wsl.conf > /dev/null <<EOF [boot] systemd=true EOF然后exit退出 Ubuntu,在 Windows 终端执行wsl --shutdown,再重新打开 WSL。验证:
systemctl --user status看到State: running就说明 systemd 用户实例已启用。如果是 VMware 或物理机装 Ubuntu 24.04,systemd 默认就在,跳过这一步即可,但后面systemctl --user相关命令一样要能跑通。
注意:
systemctl --user和systemctl是两套东西,openclaw 注册的是用户级服务,别用 sudo 去启,否则会找不到 unit。
3. 安装 openclaw 并接入 TaoToken 统一 Key
3.1 执行官方安装脚本
在 Ubuntu 终端里跑:
curl -fsSL https://openclaw.ai/install.sh | bash这一步主要看网络,如果中途断了,重复执行同一条命令即可,脚本支持断点续跑。安装完成后重新加载用户级 systemd:
systemctl --user daemon-reload systemctl --user status openclaw-gateway.service如果这里报systemctl is-enabled unavailable,说明 2.2 的 systemd 没生效,回去检查/etc/wsl.conf并wsl --shutdown重进。
3.2 config.toml 骨架与 TaoToken 接入
openclaw 的配置默认在~/.openclaw/openclaw.json,但用 TOML 管理更清晰。下面是一份可复制的~/.openclaw/config.toml骨架,把模型网关指向 TaoToken,统一用一个 Key 管理所有模型调用:
# ~/.openclaw/config.toml [gateway] host = "127.0.0.1" port = 18789 # 网关 token,Web UI 访问时用 ?token= 带上 token = "替换成你自己的网关token" [model] # TaoToken 统一接入地址 base_url = "https://taotoken.net/api" api_key = "替换成你在 TaoToken 控制台创建的 Key" # 默认模型,按需改 default = "claude-sonnet-4-20250514" [model.providers.taotoken] type = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "替换成你在 TaoToken 控制台创建的 Key" [channels.telegram] enabled = falseKey 的获取路径:登录 TaoToken 控制台,在 API Keys 页面创建一个新 Key,复制后填到api_key字段。模型对话调试可以直接在模型对话页面验证 Key 是否可用,确认能正常返回再写进配置。
提示:
base_url统一写https://taotoken.net/api,不要带多余路径,openclaw 会自动拼接/v1/chat/completions这类端点。
改完配置后重启 gateway:
systemctl --user restart openclaw-gateway.service3.3 验证配置是否生效
openclaw config show确认输出的base_url和api_key与 TOML 一致。如果字段没读到,检查 TOML 缩进和引号,TOML 对格式比 JSON 敏感。
4. 验证请求与 SSH 端口转发
4.1 本地 Web UI 验证
gateway 起来后,在 Ubuntu 内部浏览器访问:
http://127.0.0.1:18789/带上 token 的完整地址:
http://127.0.0.1:18789/?token=你的网关token能打开控制台并看到模型列表,说明 openclaw 和 TaoToken 接入都通了。但此时 Windows 浏览器还访问不了,因为 openclaw 监听的是 Ubuntu 内部的 127.0.0.1,且浏览器不允许从非 localhost 的 http 页面建立 WebSocket 连接,直连会被安全策略拦。
4.2 配置 SSH 端口转发
先在 Ubuntu 里装 SSH 服务:
sudo apt-get install -y openssh-server sudo systemctl enable ssh sudo systemctl start ssh然后在 Windows 终端(PowerShell 或 CMD)执行端口转发:
ssh -L 18789:127.0.0.1:18789 你的Ubuntu用户名@虚拟机IP -N-N表示只转发不执行远程命令,这个窗口不能关,关了转发就断。保持窗口开着,在 Windows 浏览器访问:
http://127.0.0.1:18789/?token=你的网关token4.3 SSH 连通性检查
转发前先确认 SSH 本身通:
ssh 你的Ubuntu用户名@虚拟机IP "echo ok"返回ok说明 SSH 通。如果卡住,检查 Ubuntu 的sudo systemctl status ssh是否 running,以及 Windows 防火墙是否放行 22 端口。WSL 的 IP 每次重启可能变,用ip addr show eth0查当前 IP。
5. 本篇常见报错排查
5.1 systemd 用户实例未启用
报错长这样:
Error: systemctl is-enabled unavailable: Command failed: systemctl --user is-enabled openclaw-gateway.service这说明 openclaw 装上了,但 systemd 用户实例没开。回到 2.2 配置/etc/wsl.conf,wsl --shutdown重进,再跑一次安装脚本:
curl -fsSL https://openclaw.ai/install.sh | bash5.2 npm 安装失败
! npm install failed for openclaw@latest Command: env SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm --loglevel error --silent --no-fund --no-audit install -g openclaw@latest九成是网络问题。先确认 node 和 npm 在:
node --version npm --version如果版本正常但装不上,换 pnpm:
npm install -g pnpm pnpm install -g openclaw@latest装完再跑一次官方脚本收尾。
5.3 Web UI 打不开或 WebSocket 报错
Windows 浏览器直连http://虚拟机IP:18789/会报 WebSocket 连接失败,这是浏览器安全策略,不是 openclaw 的问题。必须走 4.2 的 SSH 端口转发,用http://127.0.0.1:18789/访问。转发窗口关了也会断,重新执行 ssh 命令即可。
5.4 服务状态异常
systemctl --user status openclaw-gateway.service openclaw logs -flogs -f实时看日志,模型调用失败、Key 无效、base_url 写错都会在这里打出来。TaoToken 的 Key 如果填错,日志里会看到 401,回控制台重新生成一个填进 config.toml 再重启。
6. 长期编码与 Agent 场景的接入建议
如果你只是偶尔对话,Web UI 加 SSH 转发就够了。但如果要把 openclaw 当长期编码助手或 Agent 网关跑,建议把 gateway 注册成开机自启,并固定 WSL 的 IP 或改用端口转发脚本自动重连,避免每次重启手动配。
模型调用这块,TaoToken 的 Coding Plan 适合长期高频的编码和 Agent 场景,统一 Key 管理多个模型,不用在 config.toml 里来回换 provider。接入文档里有完整的端点和参数说明,配置时对照着填 base_url 和 api_key 就行。先把 gateway 和 SSH 转发跑通,再按需接 Telegram 等第三方 App,配对流程用openclaw pairing approve telegram [配对码]完成,配对成功后机器人就是你的 openclaw 入口。