1. 为什么要在 WindowsWSL2 上跑 OpenClaw AI 员工如果你手里有一台闲置的 Windows 笔记本想让它变成一个 7×24 小时在线的 AI 员工OpenClaw 是个很合适的选择。它本质上是一个跑在 Node.js 上的 Gateway 服务通过 systemd 做进程托管再接入飞书、Telegram 这类 IM 通道就能让 AI 帮你处理消息、跑任务、做自动化。问题在于OpenClaw 的官方文档和大部分教程都默认你在 macOS 或纯 Linux 上操作Windows 用户直接照做会撞上一堆坑。WSL2 解决的正是这个矛盾。它不是模拟器而是跑在 Hyper-V 上的真实 Linux 内核Ubuntu 24.04 systemd 完全能撑住 24/7 常驻。你不需要专门学 Linux把它当成 Windows 上多开的一个命令行窗口就行。数据也存在本地API Key、聊天记录、知识库都不出家门飞书用长连接也不需要公网域名。这篇内容聚焦 WindowsWSL2 环境下 OpenClaw AI 员工的完整落地路径从 Node.js 安装、systemd 服务托管到 TaoToken 统一 Key/API 通道接入再到 systemd 自启验证。我会给出可复制的 config.toml 与 settings.json 骨架、CC Switch/Cline 配置片段并附上 systemd 启动与 API 连通性验证动作。适合谁手头有闲置 Windows 机器、想低成本跑一个常驻 AI 员工、又不想折腾云服务器的开发者。2. TaoToken 前置统一 Key 与 API 通道准备在开始装 OpenClaw 之前先把 API 通道这件事理清楚。OpenClaw 支持多种模型 Provider但如果你每个 Provider 都单独配 Key、单独管 baseUrl配置会很快失控。TaoToken 的作用就是把这些统一到一个入口一个 Key 走通多个模型baseUrl 固定切换模型只改 model id。你需要先拿到两样东西API Key 和 baseUrl。Key 在控制台的 API Keys 页面创建baseUrl 统一用https://taotoken.net/api。注意这个地址不带任何查询参数直接作为 OpenAI 兼容协议的 base 使用。创建 Key 的入口在这里https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite如果你后面要长期跑编码类 Agent或者想让 OpenClaw 承担比较重的任务可以看一下 Coding Plan它更适合高频调用的场景https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite接入文档在这里配置字段有疑问时对照着看https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite注意baseUrl 一定要带/api不要写成https://taotoken.net否则请求会 404。这个和后面 OpenClaw 里 Provider 的 baseUrl 写法是同一个道理。3. 可复制配置WSL2 systemd OpenClaw 全流程3.1 装 WSL2 并打开 systemdPowerShell 管理员运行wsl --install -d Ubuntu-24.04重启电脑设置 Ubuntu 用户名密码。装完之后有个隐藏陷阱WSL2 默认不启动 systemdsystemctl命令全部报错OpenClaw 的 Gateway 根本起不来。修复分两步第二步很多人会忘。在 WSL 内部执行sudo bash -c cat /etc/wsl.conf EOF [boot] systemdtrue EOF然后必须回到 Windows PowerShell 执行wsl --shutdown重新打开 WSL 终端systemctl才能用。只关终端窗口不够必须wsl --shutdown彻底关掉虚拟机再重新进入。3.2 给 WSL2 限制内存WSL2 默认会吃掉宿主机 50%~80% 的内存闲置笔记本跑 24/7 不限制的话迟早卡死宿主机。在 Windows 侧创建C:\Users\你的用户名\.wslconfig[wsl2] memory6GB processors6 swap0再wsl --shutdown一次生效。这个文件只需要创建一次以后每次启动 WSL 自动读取。3.3 安装 Node.js 与 OpenClaw进入 WSL Ubuntu 终端先装 Node.js。推荐用 NodeSource 的源版本稳定curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs node -v npm -v然后安装 OpenClawcurl -fsSL https://openclaw.ai/install.sh | bash openclaw --version openclaw doctor跑 Onboarding 向导openclaw onboard --install-daemon --no-interactive-defaults向导里先选一个默认模型Daemon 选启用 systemd 服务。通道先随便选一个后面单独配。3.4 config.toml 骨架OpenClaw 的配置文件在~/.openclaw/config.toml下面是一个可复制的骨架重点是 Provider 部分接 TaoToken[gateway] port 18789 host 127.0.0.1 [models] default taotoken/gpt-4o-mini [models.providers.taotoken] baseUrl https://taotoken.net/api apiKey ${TAOTOKEN_API_KEY} api openai-completions [[models.providers.taotoken.models]] id gpt-4o-mini name GPT-4o mini [[models.providers.taotoken.models]] id claude-3-5-sonnet name Claude 3.5 Sonnet [channels.feishu] enabled true appId ${FEISHU_APP_ID} appSecret ${FEISHU_APP_SECRET}这里有两个细节容易卡住baseUrl 必须带/apiapi 字段必须写openai-completions不能只写openai少写半截就是另一个协议。3.5 settings.json 骨架如果你同时用 CC Switch 或 Cline 这类工具它们的 settings.json 也可以指向同一个 TaoToken 通道避免 Key 分散。Cline 的配置片段{ apiProvider: openai, openAiBaseUrl: https://taotoken.net/api, openAiApiKey: sk-你的TaoToken Key, openAiModelId: gpt-4o-mini }CC Switch 的配置片段{ provider: openai-compatible, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken Key, model: claude-3-5-sonnet }这样 OpenClaw、Cline、CC Switch 三处共用同一个 Key 和 baseUrl切换模型只改 model id不用来回换 Key。3.6 systemd 服务托管与自启启用并启动 Gateway 服务systemctl --user enable --now openclaw-gateway.service openclaw status --deepopenclaw status --deep这条命令后面会救你的命它会同时打印 CLI 版本和 Gateway 版本版本不一致就是坑。4. 验证请求与成功结果配置写完之后先验证 API 连通性再验证 Gateway 是否真的在跑。4.1 验证 TaoToken API 连通性用 curl 直接打一次 TaoToken 的接口确认 Key 和 baseUrl 都对curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [{role: user, content: ping}] }返回里有choices字段就说明通道通了。如果返回 401检查 Key返回 404检查 baseUrl 是不是漏了/api。4.2 验证 Gateway 与 systemd 自启systemctl --user status openclaw-gateway.service openclaw status --deep openclaw logs --followsystemctl --user status显示active (running)就说明服务在跑。openclaw status --deep要确认 CLI 版本和 Gateway 版本一致。openclaw logs --follow里看到feishu connected就说明通道接上了。再验证自启wsl --shutdown之后重新进 WSL直接跑openclaw status --deep如果 Gateway 自动起来了说明 systemd 自启配置成功。4.3 模型对话验证想快速验证模型是否真的能对话可以直接用模型对话页面测一下https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite5. 本篇常见错排查5.1 环境变量死锁CLI 被自己的配置文件锁死如果你在openclaw.json里写了模板变量botToken: ${TELEGRAM_BOT_TOKEN}然后所有openclaw命令都废了报MissingEnvVarError。这个报错看起来像你还没填 Token但真正的问题是 OpenClaw CLI 在执行任何命令之前包括openclaw doctor、openclaw config set都会全量解析openclaw.json。环境变量不存在CLI 直接拒绝启动。你想用 CLI 设置环境变量CLI 都启动不了经典死锁。解法别跟 CLI 较劲直接手动编辑~/.openclaw/openclaw.json把所有${...}替换成空字符串或者直接填上真实值。等 CLI 复活后再用命令行注入openclaw config set env.TAOTOKEN_API_KEY sk-你的key5.2 升级后幽灵进程前台新版本后台旧版本执行了npm i -g openclawlatest --forceopenclaw --version确认是新版本但发消息时报Unknown model。卡了很久才发现是openclaw status --deep暴露了矛盾CLI 版本和 Gateway 版本不一致。前台升级了后台 systemd 服务还指着旧版本的路径。解法是换芯手术systemctl --user stop openclaw-gateway.service pkill -9 node which openclaw REAL_INDEX/home/你的用户名/.npm-global/lib/node_modules/openclaw/dist/index.js sed -i s|ExecStart.*|ExecStart/usr/bin/node $REAL_INDEX gateway --port 18789| \ ~/.config/systemd/user/openclaw-gateway.service systemctl --user daemon-reload systemctl --user start openclaw-gateway.service做完再跑一次openclaw status --deep确认两边版本一致。5.3 模型注册表的名分问题把 model ID 写成openai/gpt-4o但 baseUrl 指向别的 Provider想借壳上市不行。新版 OpenClaw 必须在 JSON 顶层显式建立 providers 注册表给每个模型上正式户口。baseUrl 必须带/v1或/apiapi 字段必须写完整协议名。5.4 WSL 里的 OAuth 回调黑洞Google Gemini 的 OAuth 登录需要浏览器回调到127.0.0.1但 WSL 里没有浏览器Windows 侧浏览器的回调又穿不透 WSL 的网络隔离登录流程无限挂起没有任何报错。解法是暴力克隆凭证从~/.gemini/oauth_creds.json提取 refresh_token写入~/.openclaw/credentials/auth-profiles.json并且一定要加 order 映射表否则系统依然报No API key found。5.5 飞书权限少勾导致消息收不到飞书开放平台创建应用后权限少勾一个消息就收不到或发不出去但不会有明确报错。必须开启的三个权限im:message:send_as_bot、im:message.p2p_msg:readonly、im:message.group_at_msg:readonly。事件回调选长连接模式不要选 HTTP 推送。6. 长期编码与 Agent 场景的接入建议如果你只是想让 OpenClaw 跑跑消息、做点轻量自动化上面这套配置就够了。但如果你打算让它承担长期编码任务、跑 Agent 工作流调用频率会明显上升这时候建议单独看一下 Coding Plan它在高频场景下更合适https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite接入过程中如果遇到配置字段对不上、报错看不懂的情况先对照接入文档排查https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewriteKey 管理和新建入口在控制台https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite最后提醒一句systemd 自启验证一定要做wsl --shutdown之后重新进 WSL 再测只在当前会话里systemctl status看到 running 不算数重启后能自动起来才是真的配好了。
