
1. WSL 2 里跑 OpenClaw 到底卡在哪Windows 10/11 子系统搭建 OpenClaw 工作流的真实痛点如果你在 Windows 上想跑 OpenClaw 这类偏 Linux 生态的 AI 工作流工具大概率会经历这么一条弯路先在 Windows 原生环境装 Node结果依赖编译报错再装个虚拟机发现文件互传和端口转发麻烦得要命最后才想起 WSL 2但一上手又被发行版版本、NVM 环境变量、npm 全局路径、API 端点鉴权这几件事轮番绊住。这篇就把 Windows 10/11 子系统 WSL 2 下从 Ubuntu 24.04.4 起步到 OpenClaw 工作流跑通的完整链路拆开讲重点放在可复制的命令、可对照的配置片段以及把 API 端点和鉴权统一改到 TaoToken 的实操。先说清楚这套东西是什么、能做什么、适合谁。WSL 2 是 Windows 自带的 Linux 子系统跑的是真实 Linux 内核轻量虚拟机形态文件系统和网络都和 Windows 打通你可以在 Windows 里直接wsl -d 发行版名进 Linux 终端。OpenClaw 是一套可自托管的 AI 工作流/Agent 运行框架靠 Node.js 生态跑起来通过配置文件接入模型提供商再挂渠道飞书、Web UI 等对外服务。适合谁适合手上有 Windows 10/11 机器、想低成本搭一个本地 AI 工作流、又不想折腾双系统或独立服务器的开发者。核心检索词就三个WSL 2 安装、Ubuntu 24.04.4 配置、OpenClaw 工作流搭建。我踩过的坑集中在三处一是 Ubuntu 24.04 的软件源格式从 One-Line-Style 换成了 DEB822网上老教程直接抄会apt update报错二是 NVM 装完不刷新 shellnvm命令直接 command not found三是 OpenClaw 初始化时模型提供商那一步如果乱选后面改配置要翻好几个文件。下面按顺序把每一步都落到命令级别。先给一个整体路径方便你对号入座阶段关键动作常见卡点WSL 2 环境wsl --install/wsl --set-default-version 2老版本 Windows 不支持一键装Ubuntu 24.04.4wsl --import导入镜像镜像路径含空格、安装目录权限基础环境换源、装 NVM、装 Node 24换源格式、NVM 未刷新OpenClawnpm install -g openclaw全局路径、Node 版本过低接入 TaoToken改 Base URL Key Model ID端点写错、鉴权头缺失这张表建议先存着后面每一步出问题都能回来对照。接下来从 WSL 2 安装开始一路走到 curl 验证请求成功。2. TaoToken 前置准备统一 Key 与 API 端点别等装完再回头补很多人习惯先把 OpenClaw 装完再想模型接入的事结果初始化时在「Model/auth provider」那一步卡住随手选了个默认提供商后面发现要改配置得动好几个文件。更省事的做法是在装 OpenClaw 之前先把 TaoToken 的 Key 和 API 端点准备好初始化时就能一步到位或者初始化跳过后直接写配置文件。TaoToken 在这里扮演的角色是「统一 Key 接入层」——你不需要为每个模型提供商单独申请账号、单独记一套鉴权方式而是用同一个 API Key 和同一个 Base URL通过改 Model ID 来切换背后调用的模型。对 OpenClaw 这种要在配置文件里写 provider 的工具来说这能省掉大量重复配置。你需要提前拿到三样东西我把它叫「三件套」后面所有配置都围绕它展开Base URLhttps://taotoken.net/api注意 API 端点不带任何查询参数直接就是这个地址API Key在控制台的 API Keys 页面创建形如sk-开头的一串字符Model ID你要调用的具体模型标识比如某个 Claude 或 GPT 系列模型名按控制台文档里列出的写获取入口我按用途分一下方便你直接跳创建和管理 Key访问https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite查看接入文档和端点说明访问https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite想先在网页里试模型对话、确认 Model ID 写对没访问https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite如果你后面要长期跑编码类 Agent 工作流可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite注意Base URL 一定写成https://taotoken.net/api不要自己拼/v1之类的后缀也不要带 UTM 参数进配置文件。UTM 只用于网页跳转归因写进 API 请求里会导致路径错误。这里有个容易忽略的点OpenClaw 的配置文件里provider 的baseUrl字段和apiKey字段是分开的有些教程会让你把 Key 写进环境变量再引用但 OpenClaw 初始化生成的配置默认是直接读字段值。两种方式都行我建议 Key 走环境变量、Base URL 和 Model ID 写死在配置里这样换 Key 不用改文件。先把三件套记在一个临时文本里下一步装完 OpenClaw 直接用。如果你还没创建 Key现在就去控制台建一个别等到配置那一步再回来来回切窗口容易把命令敲错。3. 可复制配置WSL 2 Ubuntu 24.04.4 NVM OpenClaw 全流程命令这一节是全文最长的部分所有命令都可以直接复制。我按「WSL 2 安装 → Ubuntu 24.04.4 导入 → 换源 → NVM → Node → OpenClaw → 配置文件」的顺序排每一步都给验证命令。3.1 WSL 2 安装与版本确认以管理员身份打开 PowerShell 或 Windows Terminal执行wsl --install这条命令会自动启用 WSL 和虚拟机平台功能、下载 WSL 2 内核、安装默认 Ubuntu 发行版。装完重启电脑。重启后确认版本wsl -l -v输出里VERSION列应该是2。如果默认发行版还是 1执行wsl --set-default-version 2不需要默认那个 Ubuntu 22.04 的话可以注销释放 C 盘空间wsl --unregister Ubuntu-22.043.2 导入 Ubuntu 24.04.4 镜像从清华镜像站下载ubuntu-24.04.4-wsl-amd64.wsl假设放在C:\Users\你的用户名\Downloads\。然后在 PowerShell 里导入wsl --import OpenClaw F:\WSL\Openclaw C:\Users\你的用户名\Downloads\ubuntu-24.04.4-wsl-amd64.wsl格式是wsl --import 发行版名称 安装目录 镜像文件路径。发行版名称我直接用了OpenClaw安装目录按你磁盘空间选别放 C 盘。导入完进入子系统wsl -d OpenClaw3.3 更换 Ubuntu 24.04 软件源Ubuntu 24.04 开始软件源配置文件改成了 DEB822 格式路径是/etc/apt/sources.list.d/ubuntu.sources。但实测传统格式/etc/apt/sources.list仍可用这里给传统格式的清华源内容sudo nano /etc/apt/sources.list把下面内容粘进去覆盖原内容deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverseCtrl X退出按Y保存。然后更新缓存sudo apt update sudo apt upgrade -y3.4 安装 NVM 与 Node.js 24先确认依赖工具在curl --version wget --version git --version缺哪个装哪个sudo apt install curl wget git -y装 NVM截至写稿最新稳定版 v0.40.4curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash安装脚本会自动往~/.bashrc追加 NVM 配置但需要手动刷新source ~/.bashrc nvm --version有版本号输出就成功。接着装 Node.js 24 LTSnvm install 24 node -v npm -vnode -v应输出v24.x.xnpm -v应输出11.x.x。如果nvm命令找不到检查~/.bashrc末尾有没有这两行export NVM_DIR$HOME/.nvm [ -s $NVM_DIR/nvm.sh ] \. $NVM_DIR/nvm.sh没有就手动加上再source ~/.bashrc。3.5 安装 OpenClaw 并初始化npm install -g openclawlatest openclaw --version初始化openclaw onboard --install-daemon交互式界面按下面选个人使用协议选Yes初始化模式选QuickStart模型提供商这一步如果你已经准备好 TaoToken 三件套可以在这里就选对应提供商并填 Base URL 和 Key也可以先Skip for now后面直接改配置文件。渠道、技能、钩子都先跳过最后启动方式选Open the Web UI。3.6 OpenClaw 配置文件接入 TaoTokenOpenClaw 的配置一般在~/.openclaw/目录下主配置文件是config.json或config.toml按你安装版本为准用ls ~/.openclaw/看一下。下面给一个 JSON 格式的 provider 配置片段路径和字段名按你实际文件对齐{ providers: { taotoken: { baseUrl: https://taotoken.net/api, apiKey: ${TAOTOKEN_API_KEY}, model: 你的Model ID } }, defaultProvider: taotoken }如果你用的是 TOML 格式等价写法[providers.taotoken] baseUrl https://taotoken.net/api apiKey ${TAOTOKEN_API_KEY} model 你的Model ID defaultProvider taotokenKey 走环境变量在~/.bashrc末尾加export TAOTOKEN_API_KEYsk-你的Key然后source ~/.bashrc。这样配置里只引用变量名换 Key 不用动配置文件。注意Base URL、Key、Model ID 三件套必须同时写对。少任何一个请求都会失败报错形态还不一样下一节专门讲。4. 验证请求与成功结果curl 打通 OpenClaw 日志确认配置写完别急着开 Web UI先用 curl 单独验证 TaoToken 端点通不通这样能把「网络/鉴权问题」和「OpenClaw 配置问题」分开排查。4.1 curl 验证 API 端点在 WSL 里执行把 Model ID 和 Key 换成你自己的curl -sS https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -d { model: 你的Model ID, messages: [{role: user, content: ping}], max_tokens: 16 }成功的话会返回一段 JSON里面有choices数组choices[0].message.content就是模型回复。如果返回401说明 Key 不对或没带上如果返回404多半是路径写错检查是不是把/api和/v1拼重了。4.2 启动 OpenClaw 并看日志openclaw dashboard终端会打印一个形如Dashboard URL: http://127.0.0.1:18789/#tokenXXXX的链接复制到 Windows 浏览器打开就能看到控制台。同时在 WSL 里另开一个终端看日志openclaw logs --follow在 Web UI 里发一条测试消息日志里应该能看到请求发出、provider 命中taotoken、返回 200 的记录。如果日志里出现reading choices相关报错说明返回体结构不对通常是 Model ID 写错导致返回了错误对象。4.3 成功结果的判断标准三个信号同时满足就算通了curl 返回带choices的 JSONOpenClaw 日志里 provider 显示为taotokenWeb UI 里能收到模型回复。三个里缺一个回到对应环节查。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth 对照表这一节把最容易撞上的几类报错单独拎出来每个都给现象、原因、修法。报错关键词现象原因修法401 Unauthorizedcurl 或 OpenClaw 返回鉴权失败Key 没带、Key 错、环境变量没生效检查echo $TAOTOKEN_API_KEY有值确认Authorization: Bearer头拼对local proxy failedOpenClaw 启动时报代理相关错误系统里残留了代理环境变量或端口被占unset http_proxy https_proxy换openclaw dashboard --port 18790reading choices日志里解析返回体失败Model ID 写错返回的不是标准 chat 结构回控制台核对 Model ID用 curl 单独验证OAuth 相关报错初始化时选了需要 OAuth 的提供商选了 Anthropic/OpenAI 原生 OAuth 流程改用 API Key 方式provider 指向 TaoToken重点说local proxy failed。这个报错在 WSL 里挺常见因为 WSL 2 的网络是 NAT 模式Windows 侧的代理设置有时会被继承进来。如果你之前设过http_proxy之类的环境变量先清掉unset http_proxy https_proxy all_proxy然后重启 OpenClaw。如果还不行检查端口占用ss -tlnp | grep 18789被占了就换端口启动。再说reading choices。这个报错的本质是 OpenClaw 拿到了一段 JSON但里面没有它期望的choices字段。最常见的原因是 Model ID 写成了不存在的名字服务端返回了一个错误对象。修法是回 TaoToken 控制台或文档核对准确的 Model ID然后用第 4 节的 curl 命令单独测一次确认返回体里有choices再回 OpenClaw。关于 OAuthOpenClaw 初始化时如果选了 Anthropic 或 OpenAI 的原生提供商会走 OAuth 授权流程在 WSL 里弹浏览器授权经常失败。用 TaoToken 统一 Key 接入就绕开了这个问题因为鉴权方式是标准的 Bearer Token不需要 OAuth 回调。提示排查顺序建议固定为「curl 测端点 → 看环境变量 → 看 OpenClaw 日志 → 看配置文件字段」。从外到内能省很多来回。6. 后续怎么走把工作流跑稳再按需扩展到这一步WSL 2 Ubuntu 24.04.4 OpenClaw TaoToken 的最小可用链路已经通了。接下来按你的实际用途分两条路如果只是想让模型对话跑起来直接在 Web UI 里用就行想换模型就改配置里的 Model IDBase URL 和 Key 不用动如果要长期跑编码类或 Agent 类工作流建议看一下 Coding Plan它在长任务和额度上更适合持续调用。几个实用技巧都是我实际用下来觉得省事的第一把TAOTOKEN_API_KEY写进~/.bashrc而不是每次手动 exportWSL 重启后环境变量还在。第二OpenClaw 的配置文件改完记得重启 daemonopenclaw onboard --install-daemon装的那个后台服务不会自动重载配置。第三WSL 2 的磁盘镜像会随使用膨胀定期用wsl --manage OpenClaw --set-sparse true回收空间。第四如果你在 Windows 侧用 VS Code装 WSL 扩展后可以直接在 WSL 里编辑~/.openclaw/config.json比在终端里 nano 舒服。需要再确认端点或 Key 的话接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewriteKey 管理在https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite。先把 curl 那条命令跑通后面所有配置都是围绕它展开的。