装不上跑不通怎么办:安装与启动排错
OpenClaw 装不上、跑不通,八成卡在三处:Node 环境不达标、CLI 不在 PATH、Gateway 配置起不来。这一页把官方排错文档里的常见报错按「报错原文」逐个给原因和解法——先 60 秒速检,再对号入座。报错原文全部摘自官方文档与 CLI 诊断输出,基于 v2026.10.9。
学完你能做什么
- 用 5 条官方诊断命令在 60 秒内定位:环境、CLI、Gateway、配置哪一层出了问题
- 把 21 个常见报错对号入座:报错原文 → 原因 → 修复命令
- 分清四层排错边界:环境 → Gateway 进程 → 配置与认证 → 客户端连接
- 更新失败后知道先跑哪三条命令恢复,以及去哪里求助
- 用
openclaw doctor和openclaw triage两个官方工具做体检和脱敏诊断
你现在的困境
- npm 装完了,一敲
openclaw就command not found;换sudo装,又报权限错误 - Gateway 好不容易装上,
openclaw gateway status一查是 stopped,日志刷一串没见过的报错 - 更新完反而起不来:渠道空白、模型调用 401,不知道是更新坏了还是自己配坏了
什么时候用这一招
当你需要:
而且不想:
- 一报错就去论坛发帖干等——60 秒速检能省掉大部分等待
- 分不清「环境坏了」和「配置坏了」,两边乱改一通
🎒 开始前的准备
- 走过 安装 主路径或 备用安装方式——卡在哪一步都没关系,本页就是解卡的
- 终端能跑命令:macOS / Linux / WSL2 用 Bash,Windows 用 PowerShell
- 习惯把报错原文完整复制下来——本页按报错原文分组,逐字才好对号
核心思路
先定位层,再看报错。 从敲命令到收到 AI 回复要过四层,每层的报错长得不一样:
| 层 | 出什么事 | 快速检查 | 典型报错 |
|---|---|---|---|
| 1. 环境 | Node 太旧或没装;CLI 不在 PATH | node -v / openclaw --version | command not found、node:sqlite truncates TEXT |
| 2. Gateway 进程 | 起不来、端口被占、装好的服务不跑 | openclaw gateway status | EADDRINUSE、Gateway start blocked |
| 3. 配置与认证 | 配置写坏、token 不对 | openclaw doctor | Invalid config at ...、AUTH_TOKEN_MISSING |
| 4. 客户端连接 | Control UI 连不上 | curl http://127.0.0.1:18789 | gateway connect failed: |
两个官方诊断工具最省事。 openclaw doctor 体检并修复常见配置/服务问题;openclaw triage 生成一份脱敏的诊断(secrets、token、原始聊天内容、原始日志都不在内),可以直接交给你机器上的编码 agent 接着修;确认提示出现时不在 30 秒内答 Yes,就跳过启动、只打印那条手动命令。
💡 国内网络
官方文档没有提供 npm 镜像或下载加速方案,本文不猜测镜像地址。下载安装脚本或依赖超时,先检查网络环境再重试;别轻信来路不明的「国内镜像」脚本。
首次排查:60 秒速检
五条命令按顺序跑,依次验证 Node、CLI、Gateway、配置,哪条断了就从哪层修。
# 1. Node 在支持范围吗?——要 24.16.0+(24.x)或 26.1.0+,建议 24.22.1+/26.12.1+
node -v
# 2. CLI 装上了吗?——应打印版本号(本页基准 v2026.10.9)
openclaw --version
# 3. Gateway 起来了吗?——应看到 Runtime: running、监听 18789
openclaw gateway status
# 4. 配置/服务有内伤吗?——应无 blocking 错误
openclaw doctor
# 5. 还是一头雾水?——一键生成脱敏诊断
openclaw triage你应该看到:第 1 条打印 v24.16.0+ 或 v26.1.0+;第 2 条打印版本号;第 3 条 Runtime: running;第 4 条无阻塞错误。哪条断了,就跳到下面对应的分组。
常见问题排查
安装与环境:装不上
"openclaw: command not found"
原因:官方文档原话「几乎总是 PATH 问题」——npm 的全局 bin 目录不在你 shell 的 PATH 里。用 nvm / fnm 等版本管理器但没把它写进 shell 启动文件,同样中招。Windows 上的变体是 openclaw is not recognized。
解决:
- 三行定位:
node -v # Node 装了吗
npm prefix -g # 全局包装在哪
echo "$PATH" # 全局 bin 目录在 PATH 里吗- macOS / Linux:把全局 bin 加进 PATH,写进 shell 启动文件(zsh 是
${ZDOTDIR:-$HOME}/.zshrc,bash 是~/.bashrc):
export PATH="$(npm prefix -g)/bin:$PATH"然后新开终端,或 zsh 里 rehash、bash 里 hash -r。
- Windows:把
npm config get prefix的输出目录(多数系统是%AppData%\npm,不用加\bin后缀)加进用户 PATH,重开 PowerShell。
你应该看到:新终端里 openclaw --version 打印出版本号。
"npm error spawn git / git not found"
原因:Windows 安装器走 git 安装路线时找不到 Git——Git for Windows 没装,或装了但不在 PATH。
解决:装 Git for Windows(官方 FAQ 的建议),确认 git 在 PATH → 完全关闭并重开 PowerShell → 重跑安装器。
"EACCES"(npm install -g 权限被拒)
原因:Linux 上全局 npm 目录归 root,当前用户写不进去。
解决:把 npm 全局 prefix 换到用户可写目录:
mkdir -p "$HOME/.npm-global"
npm config set prefix "$HOME/.npm-global"
export PATH="$HOME/.npm-global/bin:$PATH"把 export PATH=... 那行写进 ~/.bashrc 或 ${ZDOTDIR:-$HOME}/.zshrc,再重装 OpenClaw。
"blocked because they are not covered by allowScripts"
原因:npm 12 默认拦截未批准的包生命周期脚本,OpenClaw 的 preinstall / postinstall 被拦。npm 11.16 只警告但仍放行;npm 11.15 及更早没有这个策略。注意坑:npm 11.16 提示的 npm approve-scripts openclaw 对全局安装无效——会报 ENOMATCH No installed packages match: openclaw。
解决:装的时候带对参数:
# npm 12 或 11.16+
npm install -g openclaw@latest --allow-scripts=openclaw
# npm 11.15 及更早:同命令去掉 --allow-scripts=openclawNode <v>: node:sqlite truncates TEXT at embedded NUL (nodejs/node#61954); use 24.16+/26.1+ or a build with the fix
原因:OpenClaw 的硬门槛:Node 24.16.0+(24.x)或 26.1.0+(engines 表达式 >=24.16.0 <25 || >=26.1.0),且加载的 SQLite 库要过 WAL 安全校验(SQLite 3.51.3+,或 3.50.x 里 ≥ 3.50.7、3.44.x 里 ≥ 3.44.6)。Node 22、23、25 一律不支持;官方强烈建议 24.22.1+ / 26.12.1+(安全修复)。
解决:
node -v看版本,太旧就升级(Node 26 是推荐版本)。交互终端里 CLI 会提示Update NodeJS: Y/N [N]:——按 Y 让它下载一个校验过的私有运行时到~/.openclaw/tools/cli-node,不动系统 Node。- 官方安装器缺 Node 时会自动补:macOS 装 Node 26,Linux 装 Node 24 LTS。
- 平台边界:官方 Node 24+ 的 macOS 二进制按 macOS 13.5+ 构建,11–13.4 不测试不支持;Linux ARMv7 没有官方构建,必须用 64 位系统。
- RPM 系发行版(Fedora / RHEL):发行版 Node 链接不安全的系统 SQLite,官方安装器会自动改用用户态运行时,不用你动手。
你应该看到:node -v 打印 v24.16.0+ 或 v26.1.0+,报错消失。官方还提醒:先升 Node 再更新 OpenClaw,避免 SQLite TEXT 截断。
"blocked plugin candidate: suspicious ownership (... uid=1000, expected uid=0 or root)"
原因:Docker 镜像以 node 用户(uid 1000)运行,宿主机挂载目录的属主对不上,插件被安全策略拦下,后面常跟一句 plugin present but blocked。
解决:把挂载目录的属主改成 1000:
sudo chown -R 1000:1000 /path/to/openclaw-config /path/to/openclaw-workspace
openclaw doctor --fix只有长期以 root 跑 OpenClaw 才把 /path/to/openclaw-config/npm 改成 root:root。Docker 部署细节见 服务器部署。
💡 安装器卡住没反馈?
重跑一遍加 --verbose:
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --verboseinstall.ps1 没有对应开关,用 Set-PSDebug -Trace 1 / -Trace 0 包一层。
Gateway:起不来
先跑 openclaw gateway status(加 --deep 连系统级服务一起扫)和 openclaw logs --follow 看日志,再对照下面的报错。
"Gateway start blocked: set gateway.mode=local"
原因:配置里缺 gateway.mode 的本机模式标记——本机模式没启用,或配置文件被改坏丢了字段(日志也可能写 existing config is missing gateway.mode)。Podman 部署注意默认配置路径是 ~/.openclaw/openclaw.json。
解决(两个官方修法):
- 在配置里设
gateway.mode="local"; - 或重跑
openclaw onboard --mode local/openclaw setup,重新盖一份本机模式配置。
"another gateway instance is already listening" / EADDRINUSE
原因:默认端口 18789 被占——常见是装出了重复的 Gateway 服务,或别的进程占了口。
解决:
openclaw gateway status --deep扫重复的 launchd / systemd / 计划任务服务,留意Other gateway-like services detected (best effort)的清理提示。- 官方建议多数安装一机一个 Gateway;真要跑多个,必须隔离端口 + 配置 + 状态 + 工作区。
- macOS 特例:
ai.openclaw.gateway和ai.openclaw.node两个 LaunchAgent 同时活跃会打成EADDRINUSE/respawn 快循环——不需要 node 功能就openclaw node uninstall。 - 清理完
openclaw gateway restart,status 应显示Runtime: running。
"refusing to bind gateway ... without auth"
原因:Gateway 默认只监听本机回环地址(loopback)+ 端口 18789。你想绑非 loopback 地址但没配认证——OpenClaw 拒绝启动(fail closed,这是有意的安全设计)。
解决:二选一:
- 继续只听 loopback,远程访问走 SSH 隧道(
ssh -N -L 18789:127.0.0.1:18789 user@gateway-host)或 Tailscale; - 给 Gateway 配认证(token / password,或 trusted-proxy),规则见 安全加固(一)。还没配过 shared secret?
openclaw doctor --generate-gateway-token生成一个。
"Invalid config at ..."
原因:配置文件没过校验——手改坏了、结构不对、或混进了不认识的键。Gateway 拒绝启动;运行中的 Gateway 热加载也会跳过坏编辑(日志写 config reload skipped (invalid config): ...)。
解决:
- 定位与验证:
openclaw config file # 配置文件在哪
openclaw config validate # 哪一条不过- 让 doctor 修:
openclaw doctor --fix能修复被改坏的配置或恢复 last-known-good;被拒绝的坏内容会保留在旁边的.rejected.*/.clobbered.*文件里(.clobbered.*每个配置路径保留最新 32 份),要找回只改过的键就从那里拷。 - 手修的话:保留完整 JSON5 结构,只改目标键,改完
openclaw config validate通过再重启。
"Gateway service port does not match current gateway config"
原因:装好的后台服务还别着旧的 --port——常见于改过端口配置之后。
解决:
openclaw doctor --fix # 或 openclaw gateway install --force
openclaw gateway restartControl UI:连不上
Gateway 活着但浏览器连不上?这一组的报错都出在「客户端 → Gateway」最后一截。
"gateway connect failed:"
原因:Control UI 指的 URL / 端口不对,或 Gateway 根本没在跑。
解决:本机三连验证:
openclaw gateway restart
lsof -i :18789
curl http://127.0.0.1:18789curl 拉回 OpenClaw 的 HTML → Gateway 是好的,问题在浏览器侧:直接开 http://127.0.0.1:18789、清缓存、别用旧深链。restart 后服务还是没起来,就 openclaw gateway start 再查 openclaw gateway status。
"AUTH_TOKEN_MISSING"
原因:Gateway 配了 token / password 认证,但客户端没带上 shared token。
解决:
- 在 Gateway 主机的交互终端里拿 token:
openclaw gateway auth-token --show- 把输出粘贴进 Control UI 设置,重试。还没配过 token?
openclaw doctor --generate-gateway-token生成;token 来源是gateway.auth.token(或环境变量OPENCLAW_GATEWAY_TOKEN)。 - 还连不上,对照官方 auth 错误码表:
| 错误码 | 意思 | 下一步 |
|---|---|---|
AUTH_TOKEN_MISMATCH | shared token 对不上 | 允许一次设备 token 可信重试;仍失败按官方 token 漂移清单处理 |
AUTH_DEVICE_TOKEN_MISMATCH | 设备 token 太旧或被吊销 | 用 devices CLI 轮换/重新批准 |
AUTH_SCOPE_MISMATCH | 设备 token 权限不够 | 重新配对或批准申请的 scope,别去转 shared token |
PAIRING_REQUIRED | 设备身份待批准 | openclaw devices approve <requestId> |
"device identity required" 和 "origin not allowed"
原因:前者——客户端没带设备身份(token / password 模式下也不能省,shared secret 不替代它);后者——浏览器的 Origin 不在白名单,公网或跨源部署需要在 gateway.controlUi.allowedOrigins 里加条目(私有局域网与 Tailscale 地址不需要白名单)。
解决:前者重新完成设备配对;后者把部署的 Origin 加进 gateway.controlUi.allowedOrigins 后重连。
"too many failed authentication attempts (retry later)"
原因:同一个浏览器 Origin 反复认证失败,被临时锁出。其他 localhost origin 用独立计数桶,不受影响。
解决:停手别继续撞锁;先按 AUTH_TOKEN_MISSING 那条确认凭据没错,稍后再试。
卡在 "Wake up, my friend!" 没有回复
原因:onboarding 的孵化屏依赖 Gateway 可达且已认证。如果跳过了模型 / auth 设置,向导会提示 Model auth missing,直接打开 TUI 不发消息;看到唤醒语但 tokens 停在 0,说明 agent 根本没跑。
解决:
openclaw gateway restart
openclaw status
openclaw models status
openclaw logs --follow还不行就 openclaw doctor。模型 provider 或凭据没配好,跑 openclaw onboard 重配——这是官方指定的「改模型 provider 与认证」的唯一命令。
更新失败
更新失败的恢复入口固定三条:openclaw update status --json(看记录的失败步骤与原因码)、openclaw triage(脱敏诊断)、openclaw doctor --fix。Control UI 的 Settings → Updates 里能看到最近一次尝试的时间、前后版本、失败步骤和 reason code。
"managed-service-handoff-failed"
原因:console 日志级别是 debug 时,受影响版本的更新交接会被拒。受影响 stable 版本:2026.9.6–2026.9.9 与 2026.10.1–2026.10.5。
解决:把 logging.consoleLevel 设成 "info"、从 Gateway 和更新命令的环境里去掉 OPENCLAW_LOG_LEVEL=debug(文件日志可以保持 debug),跑 openclaw update,完成后恢复原日志设置。
"global-install-permission-denied"
原因:全局 npm prefix 不可写——常见于 Homebrew 的 Node、系统 prefix、或版本管理器切换后指向了别的 prefix。
解决:看报错里点名的目录和属主:
- 目录归你 → 按报错里给的
chmod u+rwx命令修; - 目录归管理员 → 让有权限的账号执行更新,或给你授权;
- 个人安装可以改用用户可写 prefix(见上文 EACCES 那招)。
⚠️ 别用 sudo 跑整个更新器
官方明确警告:整个更新器用 sudo 跑可能选中不同的 home 和服务账号。也不要递归改共享系统 prefix 的属主。
"ETARGET" / "E404" / "EINTEGRITY"
原因:npm 解析或下载包失败——目标版本在 registry 找不到、缓存陈旧、或 registry / 镜像配置有问题。
解决:
npm cache verify
npm view <spec> version # 用报错里给出的 spec 验证检查你配置的 registry 或镜像,再重试。现役更新器会自动重试一次命名依赖失败(npm 用 --prefer-online,Bun 用 --no-cache)。
"protocol mismatch"(回滚后一直刷)
原因:回滚到旧版 Gateway 后,还有更新的客户端进程在用旧 Gateway 听不懂的协议范围重连。日志形如 protocol mismatch ... client=... v<version> min=<n> max=<n> expected=<n>。
解决:
openclaw gateway status --deep(或openclaw doctor --deep)找到 stale 客户端 PID,停掉它;- 重启嵌着 OpenClaw 的东西:本地 dashboard、编辑器、app-server helper、挂着
openclaw logs --follow的长驻 shell; - 再跑一次
--deep确认旧 PID 消失。别让旧 Gateway 强行接受新协议——协议版本是保护通信契约的。
"plugin load failed: dependency tree corrupted; run openclaw doctor --fix"
原因:更新刚跑完,渠道列表空白或模型调用报 401——两种都指向更新收尾没做完:渠道插件注册失败(渠道配置还在,插件没加载);或 provider 401 来自陈旧的 per-agent OAuth 凭据影子。
解决:更新后的通用恢复五连:
openclaw status --all
openclaw update status --json
openclaw gateway status --deep
openclaw doctor --fix
openclaw gateway restartdoctor --fix 会清理陈旧的 OAuth 影子并修复损坏的依赖树。官方还提醒:更新失败后不要第一时间回滚状态——先保留当前状态重装已知良好的代码,只有旧代码读不了新配置/数据库时才恢复更新前的备份。
还是不行?
先收集证据再提问。 官方「I am stuck」指南给的诊断命令表,跑一遍把输出(脱敏后)附上:
| 命令 | 能看到什么 |
|---|---|
openclaw status | Gateway / agent 健康 + 基础配置快照 |
openclaw status --all | 完整只读诊断,可直接粘贴 |
openclaw models status | provider 认证 + 模型可用性 |
openclaw doctor | 校验并修复常见配置 / 状态问题 |
openclaw logs --follow | 实时日志尾巴 |
openclaw gateway status --deep | 深度 Gateway / 配置 / 插件体检 |
openclaw health --verbose | 详细健康报告 |
更新类失败额外带上 openclaw update status --json 的输出。一条 openclaw triage 就能生成脱敏诊断——发出去之前检查一遍,不要附带凭据、原始配置或未脱敏的进程输出。
去哪里问:
| 渠道 | 适合什么 |
|---|---|
| community.openclaw.ai | 官方支持站:配置、环境类问题先来这里 |
| GitHub issue chooser | 能复现的产品缺陷 / 文档 bug,带复现步骤和证据 |
| 官方排错文档 | 症状优先的官方排错入口,本页很多报错的出处 |
检查点 ✅
- 60 秒速检五条命令跑过,知道卡在哪一层
openclaw --version能打印版本号,command not found已经修掉node -v在 24.16.0+(24.x)或 26.1.0+ 范围内openclaw gateway status显示Runtime: running、监听 18789- 提问时会附上
openclaw status --all等脱敏诊断输出
本课小结
✅ 排错先定层:环境(Node / CLI)→ Gateway 进程 → 配置与认证 → 客户端连接,每层有固定的检查命令。
✅ OpenClaw 装不上的三大源头(PATH、npm 权限、Node 版本)都有固定修法:补 PATH、换用户可写 prefix、升到 24.16.0+/26.1.0+。
✅ 两个官方工具记住了:openclaw doctor 体检修复,openclaw triage 出脱敏诊断、可直交编码 agent。
✅ 更新失败先进恢复入口:openclaw update status --json → openclaw triage → openclaw doctor --fix,别急着回滚状态。
关键报错速查:
| 报错信号 | 层 | 第一步 |
|---|---|---|
openclaw: command not found | 环境 | npm prefix -g → 补 PATH |
node:sqlite truncates TEXT ... | 环境 | 升级 Node 24.16+/26.1+ |
blocked ... allowScripts | 环境 | --allow-scripts=openclaw 重装 |
Gateway start blocked: set gateway.mode=local | Gateway | 重盖 gateway.mode=local |
EADDRINUSE | Gateway | status --deep 找重复服务 |
Invalid config at ... | 配置 | doctor --fix + config validate |
AUTH_TOKEN_MISSING | 认证 | gateway auth-token --show |
managed-service-handoff-failed | 更新 | consoleLevel 设 info |
protocol mismatch | 更新 | --deep 找旧客户端进程停掉 |
命令与配置的完整速查见 CLI 命令与配置速查。
下一课预告
环境稳了、Gateway 常驻了,下一步把「大脑」接上。下一课 连接模型总览:provider 体系与模型切换。
你会学到:
provider/model模型引用怎么读、官方 provider 插件为什么不用写配置条目openclaw models命令族:list / set / status- 国产模型全矩阵:DeepSeek、千问、GLM、Kimi、MiniMax、豆包……每家一页