昨晚 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 百分之 99+% 的代码也是 Claude 和 Codex 写的。
但 AI 能帮你写代码,不会帮你建流程。AI 不会主动说"我们该在 publish 前加个冒烟测试",不会在你拆包的时候提醒你"新包还没发 npm"。代码层面的 bug,AI 能写能修;流程层面的缺失,AI 看不到。
看到这个事故我特别有感触,因为就在昨天,我刚发了 Pigsty v4.2.2。这个版本升级了几十个 OS 软件包,其中有个很不起眼的: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 这次,如果发布前有人装上、启动、打开控制台看一眼 —— 整件事就不会发生。

做基础设施的,装完跑一圈,测试一下,很难吗 ?
夜雨聆风