将 OpenClaw CLI / 网关升级到 v2026.3.22 (例如通过 yarn global add openclaw@2026.3.22)后,可能出现两类典型故障:
- 执行
openclaw status等命令时,飞书插件openclaw-lark加载失败 ,报错Cannot find module 'openclaw/plugin-sdk'。 - 浏览器打开 Control UI (如
http://127.0.0.1:18789/chat)时提示:Control UI assets not found ,并建议执行pnpm ui:build。
下文说明原因与可行修复方式(以 macOS、Yarn 全局安装、扩展目录在 ~/.openclaw/extensions 为例)。
问题一:飞书插件无法加载 ------ openclaw/plugin-sdk 找不到
现象
text
openclaw-lark failed to load ... Error: Cannot find module 'openclaw/plugin-sdk'
PluginLoadFailureError: plugin load failed: openclaw-lark
原因简述
@larksuite/openclaw-lark 入口会 import ... from 'openclaw/plugin-sdk'。插件若安装在 ~/.openclaw/extensions/openclaw-lark 这类独立目录 (不在 OpenClaw 安装包内部的 extensions/ 树里),宿主在加载 .js 插件时往往走 Node 原生 ESM 解析 。此时 openclaw/plugin-sdk 必须能通过 node_modules 里的 openclaw 包 (及其 package.json 的 exports)解析;若插件目录下未安装 openclaw,就会报错。
若插件放在 OpenClaw 自带安装树 内的 extensions/... 下,宿主有机会通过内部别名解析 SDK;独立 extensions 目录则通常必须 在插件侧具备可解析的 openclaw 依赖。
处理办法
在插件根目录(例如 ~/.openclaw/extensions/openclaw-lark):
- 在
package.json的dependencies中增加与当前 CLI 同版本 的openclaw,例如:
"openclaw": "2026.3.22" - 在该目录执行:
npm install(或pnpm install/yarn,与项目锁文件一致)。
可选临时方案 :在插件目录的 node_modules 下,将 openclaw 符号链接 到本机已存在的 OpenClaw 安装路径(例如全局 Yarn 的 node_modules/openclaw)。长期仍建议写入 package.json 依赖,避免重装 node_modules 后问题复发。
注意 :若通过会覆盖 package.json 的方式升级官方插件包,需确认依赖是否仍在;若官方后续在包内声明了 openclaw 的 peerDependencies / dependencies,可优先以官方为准。
问题二:Control UI 无法访问 ------ 静态资源缺失
现象
访问 http://127.0.0.1:18789/chat(或 Dashboard 相关路径)时返回说明大致为:
text
Control UI assets not found. Build them with `pnpm ui:build` ...
原因简述
Control UI 需要 dist/control-ui/index.html 及配套静态资源。
Yarn / npm 发布的 openclaw 包 在部分环境下并不包含 已构建好的 dist/control-ui/(与仓库里 prepack 含 pnpm ui:build 的完整发布流程可能不一致,或 tarball 未带上该目录)。
若 LaunchAgent / systemd 等将网关指向 全局安装:
~/.config/yarn/global/node_modules/openclaw/dist/index.js
则运行时会在该包的 dist/control-ui/ 下找资源;目录不存在即报错。
若本机另有 完整安装 (例如 ~/.openclaw/lib/node_modules/openclaw)且其中已有 dist/control-ui/,可直接复用 该构建产物,无需在全局目录里跑 pnpm ui:build(全局包内往往也没有 ui/ 源码)。
处理办法
将「有完整 UI 构建」的安装目录下的 control-ui 提供给全局包使用,例如符号链接(路径按你机器实际调整):
bash
ln -sfn "$HOME/.openclaw/lib/node_modules/openclaw/dist/control-ui" \
"$HOME/.config/yarn/global/node_modules/openclaw/dist/control-ui"
然后重启网关,例如 macOS:
bash
launchctl kickstart -k "gui/$(id -u)/ai.openclaw.gateway"
再访问 /chat,应返回 200 与正常 HTML。
注意 :yarn global upgrade openclaw 可能重装全局目录,符号链接会被清掉 ,若问题复现,需重新执行上述 ln -sfn。
更彻底的架构建议 :让 LaunchAgent(或服务配置)中的 node 入口直接指向 带完整 dist/control-ui 的那份 OpenClaw(例如 ~/.openclaw/lib/node_modules/openclaw/dist/index.js),与 CLI 版本对齐,减少对「全局包缺文件 + lib 有文件」的双轨依赖。
小结与升级检查清单
| 现象 | 根因(典型) | 处理要点 |
|---|---|---|
openclaw/plugin-sdk 找不到 |
扩展在独立目录,未安装 openclaw |
在插件目录为 openclaw 增加依赖并安装 |
| Control UI 资源缺失 | 全局 npm 包无 dist/control-ui |
从完整安装处链入或复制 control-ui,并重启网关 |
升级 v2026.3.22 后建议依次确认:
openclaw status无插件加载错误。ls检查全局包下是否存在dist/control-ui/index.html;若无则按上文补齐。curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:18789/chat期望 200。