1. Windows 下 OpenClaw 2026.x 部署到底难在哪
OpenClaw 2026.x 是一个跑在本地、通过浏览器交互的 Agent 网关程序,它把模型调用、工具执行、浏览器控制拆成几个独立进程,再用一个 Gateway 统一收口。适合谁?适合想在 Windows 主力机上做本地 Agent 实验、又不想把整台机器重装成 Linux 的开发者。它的核心检索词就是 OpenClaw 2026.x Windows WSL2 部署,而这条链路最容易卡住的地方,恰恰不是 OpenClaw 本身,而是 Windows 与 Linux 之间的那层边界。
我见过太多人卡在三个位置:第一,Node.js 版本不对,OpenClaw 2026.x 要求 Node 18 以上,推荐 20 或 22,用系统自带的旧版本会在pnpm install阶段报原生模块编译失败;第二,WSL2 没设成默认版本,装完 Ubuntu 发现还是 WSL1,网络回环和端口转发行为完全不同,Gateway 起来了浏览器却连不上;第三,认证文件写错位置,把 API Key 塞进openclaw.json而不是auth-profiles.json,启动日志里只会给你一句ignored invalid auth profile entries,不告诉你错在哪。
这篇就按真实操作顺序走一遍:先在 Windows 侧把 WSL2 和 Ubuntu 装好,再进 Ubuntu 装 Node.js 和依赖,然后拉源码、首次启动、配置认证、验证请求,最后把常见报错逐条对照。全程命令可复制,路径与 2026.x 的 schema 保持一致。你不需要提前理解 Gateway、Agent、Profile 这些概念,跟着敲完,浏览器里能收到模型回复,就说明整条链路通了。
需要说明的是,本文所有模型调用都通过合规的 API 网关完成,不涉及任何网络加速工具。你只需要一个可用的 API Key 和一个能访问的 Base URL,后面配置章节会给出具体写法。
2. WSL2 与 Ubuntu 环境准备:从 PowerShell 到首次登录
这一节的目标是把 Windows 主机变成「Windows + Ubuntu 双环境」,并且确保 Ubuntu 跑在 WSL2 上。整个过程在 PowerShell 里完成,不需要手动下载镜像。
先确认系统版本。按Win + R输入winver,弹窗里看版本号。Windows 10 需要 21H2 及以上,Windows 11 任意版本都可以。低于这个版本,wsl --install这条命令可能不存在,得先更新系统。
确认没问题后,以管理员身份打开 PowerShell。注意是管理员模式,普通模式装 WSL 会提示权限不足。执行:
wsl --install这条命令会自动启用「虚拟机平台」和「适用于 Linux 的 Windows 子系统」两个 Windows 功能,然后下载并安装默认的 Ubuntu 发行版。执行完必须重启电脑,别跳过,功能启用需要重启才生效。
重启后如果 Ubuntu 没有自动装上,手动指定版本:
wsl --set-default-version 2 wsl --install -d Ubuntu-22.04第一行把默认 WSL 版本锁成 2,这一步很关键。很多人装完发现是 WSL1,原因是系统默认版本还是 1。WSL1 和 WSL2 在网络模型上差异很大,WSL2 有独立的虚拟网卡,端口转发规则不一样,OpenClaw 的 Gateway 监听127.0.0.1时,浏览器能不能访问取决于这个版本设置。
装完后用下面这条确认:
wsl -l -v输出里VERSION那一列应该是2。如果是1,执行wsl --set-version Ubuntu-22.04 2转换,转换过程会花几分钟。
首次启动 Ubuntu,可以直接在开始菜单点 Ubuntu 图标,或者在 PowerShell 里输入wsl。第一次进入会让你设置用户名和密码。用户名用小写字母,别用中文和空格;密码输入时不显示字符,正常现象,输完回车即可。这个账号是普通用户,后面所有sudo操作都用它。
进入 Ubuntu 后先更新软件源:
sudo apt update sudo apt upgrade -yapt update刷新包索引,apt upgrade升级已安装的包。第一次跑可能要几分钟,取决于镜像源速度。如果卡在下载,可以换成国内镜像源,但这一步不是必须的,先跑通再说。
到这里,Windows 侧的环境就绪了。你可以把 Ubuntu 终端当成一台独立的 Linux 机器来用,文件系统在\\wsl$\Ubuntu-22.04\home\你的用户名下,Windows 资源管理器能直接访问。但注意,OpenClaw 的源码和配置都放在 Ubuntu 的 home 目录里,不要放在/mnt/c/下,跨文件系统读写会拖慢pnpm install的速度,也容易出权限问题。
3. Node.js 与 OpenClaw 依赖安装:可复制的配置片段
Ubuntu 就绪后,先装 Node.js。OpenClaw 2026.x 要求 Node 18 以上,推荐 20 或 22。Ubuntu 22.04 自带的 Node 版本偏旧,直接用 NodeSource 的源装 22.x:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt install -y nodejs装完验证:
node -v npm -v应该输出v22.x.x和对应的 npm 版本。如果node -v还是旧版本,说明 PATH 里有其他 Node,用which node看一下路径,正常应该是/usr/bin/node。
接着装 Git 和 pnpm。pnpm 是 OpenClaw 用的包管理器,比 npm 快且省磁盘:
sudo apt install -y git sudo npm install -g pnpm git --version pnpm -v然后拉源码。进 home 目录,克隆仓库:
cd ~ git clone https://github.com/openclaw/openclaw.git openclaw-src cd openclaw-src pnpm installpnpm install会下载所有依赖,第一次跑时间较长。如果中途报原生模块编译错误,八成是 Node 版本不对,回到上面确认node -v。
依赖装完后,先别急着配 API Key,直接首次启动,让 OpenClaw 生成默认配置文件:
node openclaw.mjs gateway --allow-unconfigured--allow-unconfigured表示允许在未配置认证的情况下启动,方便你先看到 Gateway 是否正常监听。成功的话终端会打印类似:
[gateway] listening on ws://127.0.0.1:18789 [browser/server] Browser control listening on http://127.0.0.1:18791看到这两行,说明 Gateway 进程和浏览器控制服务都起来了。此时按Ctrl + C停掉,因为接下来要写配置文件。
配置文件在~/.openclaw/下。首次启动后这个目录会自动生成,里面有openclaw.json。认证信息单独放在~/.openclaw/agents/main/agent/auth-profiles.json,这是 2026.x 的 schema 要求,别写错位置。先建目录:
mkdir -p ~/.openclaw/agents/main/agent然后写入认证文件。这里用 TaoToken 的 API 作为模型入口,Base URL 填https://taotoken.net/api,Key 换成你自己的:
{ "profiles": { "default": { "providers": { "openai": { "key": "sk-你的TaoToken密钥", "baseURL": "https://taotoken.net/api" } } } }, "activeProfile": "default" }保存到~/.openclaw/agents/main/agent/auth-profiles.json。写完后用 Python 校验 JSON 格式:
python3 -m json.tool ~/.openclaw/agents/main/agent/auth-profiles.json能正常打印说明格式没问题。如果报JSON5 parse failed,就是括号或逗号写错了,重新检查。
接着设置默认模型和并发。模型先用一个轻量的测试,并发降到 1 防止限流:
python3 - <<'PY' import json, pathlib p = pathlib.Path.home().joinpath(".openclaw/openclaw.json") cfg = json.loads(p.read_text()) d = cfg.setdefault("agents", {}).setdefault("defaults", {}) d["model"] = "openai/gpt-4o-mini" d["maxConcurrent"] = 1 d.setdefault("subagents", {})["maxConcurrent"] = 1 p.write_text(json.dumps(cfg, indent=2)) print("Model and concurrency updated") PY这段脚本做了三件事:把默认模型设为openai/gpt-4o-mini,把主 Agent 并发设为 1,把子 Agent 并发也设为 1。并发设 1 是为了避免刚接入就被限流,跑通后再按需调高。
到这里,配置三件套就齐了:Base URL 是https://taotoken.net/api,Key 在auth-profiles.json里,Model ID 是openai/gpt-4o-mini。这三个值后面验证请求时会用到。
4. 启动 Gateway 并验证端到端请求
配置写完后重新启动 Gateway:
cd ~/openclaw-src node openclaw.mjs gateway --allow-unconfigured这次启动会读取auth-profiles.json,如果格式正确,日志里不会再出现ignored invalid auth profile entries。Gateway 监听ws://127.0.0.1:18789,浏览器控制服务监听http://127.0.0.1:18791。
先拿 Gateway Token。这个 Token 是浏览器连接 Gateway 用的,和 API Key 是两回事。用 Python 读出来:
python3 - <<'PY' import json, pathlib cfg = json.loads(pathlib.Path.home().joinpath(".openclaw/openclaw.json").read_text()) print(cfg["gateway"]["auth"]["token"]) PY打印出来的字符串就是 Gateway Token。然后在 Windows 的浏览器里访问:
http://localhost:18791/?token=刚才打印的token注意localhost在 WSL2 下能直接映射到 Windows 浏览器,这是 WSL2 的特性,不需要额外配置端口转发。如果打不开,先确认 Gateway 进程还在跑,再确认 WSL2 版本是 2。
进入 Dashboard 后,找到 Chat 输入框,输入hello。如果配置正确,几秒内会返回模型回复。这一步就是端到端验证:浏览器 → Gateway(18789)→ Agent → auth-profiles.json 里的 Base URL → 模型返回。
如果返回的是错误而不是回复,看终端日志。常见的有No API key found,说明auth-profiles.json结构不对,必须是profiles.default.providers.openai.key这个层级。还有API rate limit reached,说明并发还是太高或者额度用尽,把maxConcurrent保持 1,换个轻量模型再试。
验证通过后,可以把启动命令固化下来。在~/openclaw-src下建一个启动脚本:
cat > start.sh <<'EOF' #!/bin/bash cd ~/openclaw-src node openclaw.mjs gateway --allow-unconfigured EOF chmod +x start.sh以后每次启动就./start.sh。注意这里没有把 API Key 写进环境变量,因为 2026.x 推荐用auth-profiles.json管理认证,环境变量方式在新版本里优先级较低,容易和配置文件冲突。
如果你想在浏览器里直接测试模型对话,也可以访问 TaoToken 的模型对话页面,用同一个 Key 验证额度是否正常:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=model_chat 。这一步是可选的自检,确认 Key 本身可用,排除是 OpenClaw 配置问题还是 Key 问题。
5. 常见报错逐条排查:401、JSON5、token missing
这一节把实际部署中最容易撞上的报错列出来,每条给出触发原因和修复动作。你遇到问题时直接对照。
报错一:401 Unauthorized或invalid api key
触发在 Chat 发消息后,终端日志显示模型调用被拒。原因通常是 Key 写错、Key 过期,或者 Base URL 没配对。检查auth-profiles.json里的key和baseURL两个字段,确认 Key 没有多余空格,Base URL 是https://taotoken.net/api。改完必须重启 Gateway,配置不会热加载。
报错二:JSON5 parse failed
启动时直接崩,提示解析失败。原因是手动编辑openclaw.json时破坏了 JSON 格式,比如多了逗号、少了引号。最省事的修复是删掉配置目录重新生成:
rm -rf ~/.openclaw node openclaw.mjs gateway --allow-unconfigured这会重置所有配置,包括认证文件,所以重置后要重新写auth-profiles.json。建议改配置前先备份。
报错三:gateway token missing
浏览器打开 Dashboard 后提示缺 Token。原因是访问 URL 没带?token=xxx参数。Gateway 默认要求 Token 认证,直接访问http://localhost:18791会被拒。用第 4 节的 Python 命令重新打印 Token,拼到 URL 后面。
报错四:ignored invalid auth profile entries
启动日志里出现这行,说明auth-profiles.json的结构不符合 2026.x schema。必须是profiles.default.providers.openai.key这个嵌套层级,少一层或者字段名拼错都会被忽略。用python3 -m json.tool校验格式,再对照第 3 节的 JSON 片段逐字段核对。
报错五:local proxy failed或连接超时
模型调用时提示本地代理失败。检查 Base URL 是否可达,在 Ubuntu 里执行:
curl -I https://taotoken.net/api能返回 HTTP 头说明网络通。如果超时,检查 WSL2 的 DNS 配置,/etc/resolv.conf里的 nameserver 是否正常。WSL2 偶尔会有 DNS 解析问题,重启 WSL 可以解决:在 PowerShell 里wsl --shutdown,再重新进入。
报错六:reading choices相关错误
日志里出现reading 'choices'或类似字段读取失败,通常是模型返回结构异常,根源还是认证或 Base URL 问题。先确认 Key 有效,再确认模型 ID 写的是openai/gpt-4o-mini这种带 provider 前缀的格式。模型 ID 不带前缀,OpenClaw 可能路由不到正确的 provider。
报错七:OAuth相关提示
如果日志里出现 OAuth 字样,说明配置里混入了 OAuth 认证方式。2026.x 的auth-profiles.json用 API Key 方式即可,不需要 OAuth。检查文件里有没有多余的oauth字段,删掉。
排查顺序建议固定:先看终端日志的第一条错误,再对照本节。大部分问题集中在认证文件结构和 Base URL 两处,把这两处确认对,剩下的基本是并发和模型 ID 的小问题。
6. 长期跑 OpenClaw 的接入建议与 CTA
跑通一次之后,接下来要考虑的是怎么稳定用下去。几个实操建议。
第一,把启动脚本和配置分离。start.sh只负责启动,认证信息留在auth-profiles.json,模型和并发留在openclaw.json。这样换 Key 不用动启动命令,调模型不用重写认证。
第二,并发不要一上来就拉满。maxConcurrent设 1 是保守值,跑稳定后可以逐步调到 2 或 3,观察有没有限流。子 Agent 的并发单独控制,subagents.maxConcurrent和主 Agent 分开设,避免子任务把额度吃光。
第三,模型选择上,日常测试用轻量模型,复杂任务再切到能力更强的。OpenClaw 支持在openclaw.json里改默认模型,也可以按 Agent 单独指定。切换模型不需要改认证文件,只改模型 ID 即可。
第四,WSL2 的资源限制。默认 WSL2 会占用较多内存,可以在 Windows 用户目录下建.wslconfig限制:
[wsl2] memory=8GB processors=4改完wsl --shutdown重启生效。OpenClaw 跑起来后内存占用主要来自 Node 进程和浏览器控制服务,8GB 一般够用。
如果你打算把 OpenClaw 接到自己的编码工作流里,比如让它调用工具、跑长任务,可以了解 Coding Plan 的接入方式,它更适合长期编码和 Agent 场景:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=coding_plan 。API Key 的管理在控制台里:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=console ,需要新建或轮换 Key 时在这里操作。完整的接入文档在:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=doc ,里面有各语言的调用示例和参数说明。
最后提醒一个容易忽略的点:OpenClaw 的 Gateway Token 和 API Key 是两套认证,前者管浏览器连 Gateway,后者管 Gateway 调模型。排障时先分清是哪一层出问题,再看对应日志。把这两层认证理清楚,OpenClaw 在 Windows + WSL2 下的部署就算真正跑通了。