1. openclaw 安装卡在 Health check failed: gateway closed(1006) 到底发生了什么
如果你正在 Windows 上装 openclaw,命令行里突然蹦出Health check failed: gateway closed(1006),同时一个gateway.cmd黑框一闪就没了,那这篇就是写给你的。openclaw 是一个把本地能力(文件、命令、浏览器等)通过网关暴露给 AI 客户端的工具,安装时它会拉起一个本地 gateway 进程,再由主程序做健康检查。所谓 1006,是 WebSocket 异常关闭的状态码,翻译成人话就是:gateway 进程根本没起来,或者起来后立刻死了,健康检查连不上它。而gateway.cmd闪退,正是这个进程启动失败的直观表现。
这个报错适合谁?适合所有在 Windows 上第一次装 openclaw、被这个黑框闪退卡住的人,尤其是用户名或安装路径里带中文、空格、特殊符号的同学。我实测下来,90% 的 1006 都不是 openclaw 本身的 bug,而是启动环境的问题:Node/npm 路径编码、gateway 配置项、端口占用、环境变量缺失。下面我按「先定位、再修配置、最后验证」的顺序,把每一步都写成可以直接复制的命令,你跟着做基本能恢复安装流程。
2. 先别急着重装,用日志把 gateway 闪退原因抓出来
gateway.cmd闪退最坑的地方是窗口关得太快,你根本看不到报错。所以第一步不是改配置,而是让错误留下来。
2.1 用 status 命令看网关真实状态
打开 PowerShell,先执行:
openclaw gateway status如果 gateway 没起来,你大概率会看到类似gateway closed (1006)或connection refused的输出。这一步只是确认「确实没起来」,真正的线索在日志里。
2.2 手动运行 gateway.cmd,别让它闪退
找到 openclaw 安装目录下的gateway.cmd(一般在%USERPROFILE%\.openclaw\或 npm 全局目录里),不要双击,而是在 PowerShell 里手动跑,这样窗口不会关:
cd $env:USERPROFILE\.openclaw .\gateway.cmd这时候报错会停在屏幕上。常见的几类:
Error: Cannot find module 'xxx':依赖没装全,npm 全局路径有问题。EADDRINUSE:端口被占用。- 路径里出现乱码或
??:用户名含中文导致 Node/npm 路径编码崩溃,这是最高频的元凶。 - 直接无输出退出:环境变量缺失,比如
NODE_PATH没配。
2.3 把输出重定向到文件,方便反复看
如果手动跑还是看不清,用重定向把 stdout 和 stderr 都存下来:
.\gateway.cmd *> gateway-error.log Get-Content .\gateway-error.log拿到具体报错后,再对照下面章节修。记住:不要跳过这一步直接改配置,否则你只是在猜。
3. 用 TaoToken 统一 Key 与 API 通道,先把网关连通性核对清楚
在修 gateway 之前,有个容易被忽略的点:openclaw 的 gateway 启动时可能会去校验上游 API 通道。如果你的 Key 或 API 地址配得不对,gateway 也可能启动即退出。这时候用 TaoToken 把 Key 和 API 通道统一管理,能帮你快速排除「是不是通道问题」。
TaoToken 是一个统一管理模型 Key 和 API 通道的平台,适合需要同时接多个模型、又不想在每台机器上散落配置的人。你可以先到官网了解整体能力:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,然后在控制台创建 Key:
控制台:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= API Keys:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=拿到 Key 后,openclaw 的 gateway 配置里把 API 基址指向 TaoToken 的 API 入口(注意 API 地址不带 UTM):
https://taotoken.net/api这样做的价值是:网关启动时校验的是同一条通道,如果 gateway 还是闪退,你就能确定问题在本地环境而不是 Key。想先验证模型通道是否通,可以直接用模型对话页发一条测试消息:
模型对话:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=如果对话页能正常返回,说明 Key 和通道没问题,问题就锁定在 gateway 本地启动环节,继续往下修。
4. 可复制的 gateway 启动配置与修复步骤
这一节是核心,按顺序做,每步都有验证。
4.1 修复中文用户名导致的路径编码崩溃
这是 1006 最常见的根因。Windows 用户名含中文时,npm 全局路径会带中文,Node 在解析时编码出错,gateway 直接崩。解决办法是把 npm 全局路径和缓存路径改到纯英文目录:
npm config set prefix "C:\nodejs\npm-global" npm config set cache "C:\nodejs\npm-cache"然后把这个路径加进环境变量PATH:
[Environment]::SetEnvironmentVariable( "Path", $env:Path + ";C:\nodejs\npm-global", "User" )改完关掉所有终端重新开一个,再确认:
npm config get prefix where.exe openclawwhere.exe输出的路径必须是纯英文。如果还指向中文目录,说明旧路径没清干净,手动去「系统属性 → 环境变量」里删掉带中文的那条。
4.2 补全 gateway 启动配置
在%USERPROFILE%\.openclaw\下找到或新建gateway.json,写入下面这份可复制配置(把 Key 换成你自己的):
{ "gateway": { "host": "127.0.0.1", "port": 8787, "logLevel": "debug", "autoRestart": true }, "api": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "timeout": 30000 } }几个关键点:host用127.0.0.1而不是localhost,避免 IPv6 解析问题;port选一个不常用的,比如 8787;logLevel设成debug,方便下次排错;autoRestart打开,gateway 崩了会自动拉起。
4.3 检查端口占用
如果报EADDRINUSE,先看 8787 被谁占了:
netstat -ano | findstr :8787拿到 PID 后:
tasklist | findstr <PID>如果是无关进程,换端口即可;如果是残留的 gateway 进程,直接结束:
taskkill /PID <PID> /F4.4 重装依赖并重启 gateway
路径修好后,重装一次全局依赖,确保模块完整:
npm install -g openclaw --force openclaw gateway restart--force是为了覆盖之前编码损坏的安装。重启后观察gateway.cmd是否还闪退。
5. 验证请求:确认 gateway 真的活了
修完必须验证,别只看窗口没闪退就以为好了。
5.1 用 status 确认健康检查通过
openclaw gateway status正常应该输出running或healthy,不再有 1006。
5.2 直接打健康检查接口
gateway 起来后,用 curl 打它的健康端点:
curl http://127.0.0.1:8787/health返回{"status":"ok"}就说明网关本身通了。
5.3 核对上游通道
再确认 gateway 能连上 TaoToken 通道,用一条最小请求:
curl https://taotoken.net/api/v1/models ` -H "Authorization: Bearer sk-你的TaoToken密钥"能返回模型列表,说明 Key 和通道都正常。如果这一步失败,回到第 3 节检查 Key 和 baseUrl。想更直观地验证,用模型对话页发一条消息最快:
https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=5.4 完整跑一次安装流程
最后重新执行 openclaw 的安装命令,确认不再出现Health check failed: gateway closed(1006)。如果安装脚本还会拉起 gateway,观察日志里是否还有异常退出。
6. 本篇常见错排查清单
把上面踩过的坑整理成对照表,下次直接查:
| 现象 | 根因 | 修复 |
|---|---|---|
| gateway.cmd 闪退无输出 | 用户名含中文,npm 路径编码崩溃 | 改 npm prefix/cache 到纯英文目录 |
| 报 EADDRINUSE | 端口被占用 | netstat 找 PID,换端口或 kill |
| Cannot find module | 依赖装到中文路径或装不全 | npm install -g openclaw --force |
| status 一直 1006 | gateway.json 缺失或 host 写 localhost | 用 127.0.0.1,补全配置 |
| 通道校验失败 | Key 或 baseUrl 错 | 用 TaoToken 统一 Key,baseUrl 指向 /api |
几个额外提醒:改完环境变量一定要重开终端,否则读的还是旧值;gateway.json里的 Key 不要提交到 Git;如果公司网络有限制,确认 8787 端口没被安全软件拦。
7. 长期跑 openclaw 编码与 Agent,建议用 Coding Plan 统一管理
如果你不只是装一次,而是打算长期用 openclaw 做编码、跑 Agent 任务,那 Key 和通道的管理会越来越重要。散落在各处的 Key 一旦过期或额度用完,gateway 又会以各种奇怪的方式退出。这时候用 TaoToken 的 Coding Plan 把长期编码和 Agent 场景的额度、通道统一起来,能省掉很多「明明配置没改却突然 1006」的排查时间:
Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=接入细节和参数说明看官方文档,里面有完整的配置示例:
接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=如果你用的是 Claude Code 这类客户端,Anthropic 兼容接入的说明也在这里:
ClaudeCodeAnthropic:https://taotoken.net/claudecode-anthropic?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=最后说个我自己的习惯:每次改完 gateway 配置,先跑openclaw gateway status再跑一次 curl 健康检查,两个都过了再动别的。这样即使后面出问题,你也能确定是「新改动引入的」,而不是在一堆变量里瞎猜。