昨晚,OpenClaw 发布了新版本 v2026.3.22。结果 npm 包里把控制台前端漏掉了,全球用户升级完打开浏览器,直接 503。

一、怎么回事#
v2026.3.22 是个大版本。插件市场 ClawHub 上线,浏览器工具链重构,一堆安全加固,Release Notes 里几十条 changelog,看起来挺热闹。然后用户一升级,控制台没了。

发到 npm 的包里,dist/control-ui/ 整个目录都不见了。上个版本 v2026.3.13 还是好的,这个版本直接丢了。
更骚的是,报错信息让你跑 pnpm ui:build 自己编译前端,但 scripts/ 目录也没打进包里。官方给你指了条死路。
同一个版本里,WhatsApp 集成也一起炸了。模块已经拆到独立包 @openclaw/whatsapp,但这个包压根还没发到 npm 上。两个打包事故叠在一起,npm 用户当场团灭。Docker 没事,Git 没事,npm 全军覆没。
二、不是第一次了#
翻 GitHub Issues 会发现,OpenClaw 在 npm 这条路上翻车已经不是头一回了。
一月的 v2026.1.29,UI 资源文件其实在包里,但路径解析逻辑默认 process.argv[1] 指向 dist/ 内部;而 npm 全局安装的入口文件在包根目录,于是照样找不到。资源明明在那里,代码却看不见,等于没有。
二月,有人报 scripts/ui.js 不在 npm 包里,pnpm ui:build 根本跑不起来。
三月,直接把整个前端产物丢了。
三个月,同一条路,三个坑。说明什么?
npm publish 之后,没有任何自动化验证。
没人,也没有 CI,去检查一句最关键的话:“装完以后,到底能不能跑起来?”
哪怕只是下面这四行脚本,都能把昨晚这次事故拦在门外:
npm pack
npm install -g ./openclaw-2026.3.22.tgz
openclaw doctor --non-interactive
curl -s http://127.0.0.1:18789 | grep -q '<!DOCTYPE html>'但显然,没人写。
三、AI 写代码,但不管发布#
微博评论区有条评论很扎眼:
“这全是 AI 写的代码,人都看不懂,出点问题只能修 AI。也提醒一下想开了程序员的老板们,以后出了问题你们只能和 AI 扯皮了。”
GitHub 上有些 Issue 标着 “Generated via Claude Code agent”,有些 PR 是 Codex 生成的。这件事本身不是问题。我自己 Pigsty v4.x 百分之九十九以上的代码,也是 Claude 和 Codex 写的。
但 AI 能帮你写代码,不会替你建流程。
AI 不会主动说“我们该在 publish 前加个冒烟测试”,不会在你拆包的时候提醒你“新包还没发 npm”。代码层面的 Bug,AI 能写也能修;流程层面的缺失,AI 看不到。
看到这个事故,我特别有感触。因为就在昨天,我刚发了一个 Pigsty 小版本。这个版本里有个看起来很不起眼的升级:ETCD 从 3.6.8 升到 3.6.9。Patch 版本,按语义化版本约定,理论上只有 bugfix,不该有兼容问题。结果冒烟测试一跑,集群炸了。
ETCD 3.6.9 悄悄给 Member List API 加了认证。之前普通用户能直接调的接口,现在要身份验证了。Pigsty 的健康检查和成员管理全部失败。
这种东西,你看 changelog 看不出来,看 diff 也未必反应得过来。 只有真装一遍、跑一遍,让所有组件在真实环境里交互一轮,才能把它逮出来。
发现之后,我做了三件事:
- 把 ETCD 回滚到
3.6.8 - 在发布版里锁死这个版本
- 在更新说明里写清楚为什么没跟进最新版
之前升级 MinIO 时,我也碰到过类似的坑,处理方式一样:回滚、锁定、记录。
有多高深吗?其实没什么。就是在干净环境里安装、启动、验证;发现问题就回滚;确认无误才放行。很慢,也挺麻烦,一个小版本有时候要折腾好几轮。
但用你软件的人,是拿它跑生产的。你得对得起这份信任。
OpenClaw 这次,如果发布前有人真装一下、启动一下、打开控制台看一眼,整件事就不会发生。
做基础设施的,装完跑一圈,测试一下,很难吗?







