昨天像往常一样执行了 OpenClaw 的升级命令,本想打开网页控制台调整插件设置,结果浏览器里一片空白。刷新页面、重启 gateway 服务都无济于事,一开始还怀疑是网络问题或浏览器缓存捣鬼。
排查之后才发现,问题根源并不在我这边。经过测试确认:控制台界面根本加载不出来。这个 Bug 相当棘手,直接让整个管理界面消失了。
到底发生了什么?dist/control-ui 目录被遗漏了
核心原因非常简单——OpenClaw 在发布 npm 包时,遗漏了 dist/control-ui/ 这个关键目录。升级后,虽然 gateway 服务成功重启,但由于控制台所需的静态文件不存在,网页自然只能显示一片空白。
注意:OpenClaw 在发布 npm 包时遗漏了 dist/control-ui/ 目录,导致升级后控制台无法访问。
这个细节很容易被忽略。npm publish 命令默认只会打包 package.json 中 files 字段指定的文件,如果 .npmignore 配置不当或 files 字段未列全,就容易发生这类“打包事故”。我检查了其 GitHub 仓库,确认 control-ui 就是网页控制界面的前端代码。
OpenClaw 是什么?为什么控制台这么关键
根据其官方仓库描述,OpenClaw 是一个个人 AI 助手,支持跨操作系统和平台,口号是“The lobster way” 🦞。它能够对接 WhatsApp、Telegram、飞书、Signal 等十余个消息通道,还支持语音交互和实时 Canvas 渲染。其中,Gateway 是其核心控制平面,负责会话、通道及各类工具的管理。
而 Control UI 正是其网页版的管理界面。用户需要通过这个界面来直观地配置插件、查看系统与各通道的运行状态。试想一下,如果你正在使用它管理微信或飞书的消息插件,一旦失去这个可视化界面,调试和配置的复杂度将成倍增加。
临时修复:4步从源码构建 UI
好在社区迅速给出了解决方案。我严格按照以下步骤操作,不到5分钟就成功恢复了控制台。
具体操作如下:
# 1. 克隆源码仓库(浅克隆节省时间)
git clone --depth 1 https://github.com/openclaw/openclaw.git /tmp/openclaw-src
参数 --depth 1 表示只拉取最新提交,避免下载整个仓库历史记录,节省时间和带宽。
# 2. 安装依赖并构建 UI
cd /tmp/openclaw-src
pnpm install && pnpm ui:build
项目使用 pnpm 管理依赖。执行 pnpm ui:build 命令会将前端部分打包生成 dist/control-ui 目录——这正是已发布 npm 包中缺失的文件。
# 3. 复制到全局安装目录
cp -r /tmp/openclaw-src/dist/control-ui ~/.npm-global/lib/node_modules/openclaw/dist/
路径注意:如果你使用了 nvm 或自定义了 npm 的全局安装前缀,上述路径需要相应修改为 $(npm prefix -g)/lib/node_modules/openclaw/dist/。经测试,直接复制文件即可。
# 4. 重启 gateway
openclaw gateway restart
重启完成后,刷新浏览器,控制台界面应该立刻恢复。

另一个更简单的修复方式(社区补充)
社区还有开发者分享了另一种方法,即从已发布的 npm 包中直接提取缺失的文件:
cd /tmp && npm pack openclaw@最新版本
tar -xzf openclaw-xxx.tgz package/dist/control-ui/
cp -r /tmp/package/dist/control-ui $(npm prefix -g)/lib/node_modules/openclaw/dist/
openclaw gateway restart
这个方法我未亲自测试,但其原理是相同的——直接从发布到 npm 的压缩包中将遗漏的部分“抠”出来。两种方法任选其一即可。
一个反直觉的发现是:很多 npm 事故并非代码逻辑错误,而是发布和打包流程存在疏漏。
这次事故的启示和预防建议
维护开源项目本非易事,但在 npm publish 这种基础环节出现问题,确实非常影响用户体验。社区里已有不少用户反馈升级后微信、飞书等插件也受到影响,这说明项目的 release 流程还有待加强。
给我的启示是:今后在更新类似工具前,可以先用 npm pack <package-name> 命令检查一下打包后的内容,确认 dist 等关键目录是否完整。或者,也可以观望一两天,等待社区反馈稳定后再进行升级。
从项目维护的角度看,在 CI/CD 流水线中增加对打包文件完整性的自动化校验,就能有效避免此类目录遗漏问题。
分享这个经历,是希望帮助遇到同样问题的朋友快速解决。在升级使用的开源工具时,多留一个心眼总是好的。如果你也在探索类似的 DevOps 或前端工程化问题,欢迎到 云栈社区 交流讨论。