发布性能扫描
本页记录了 2026 年 5 月 OpenClaw 性能、包大小、依赖和 shrinkwrap 清理背后的证据。它是公共博客文章的技术配套文档。
此处合并了两项审计:
- 发布性能扫描: 从
v2026.5.28回溯到稳定版v2026.4.23的 GitHub Releases,使用OpenClaw Performance工作流,profile=smoke,mock-provider 通道。大多数 tag 行只有一个样本;v2026.5.27和v2026.5.28行使用最新的 repeat-3 发布分支制品。 - 更早的 4 月背景: 从
v2026.4.1到v2026.5.2已发布的clawgrit-reportsmock-provider 基线,仅用于避免将 4 月下旬受损的发布版本视为公共性能基线。 - 安装体积扫描: 在新临时包中执行全新
npm install --ignore-scripts,使用du -sk node_modules测量大小,并通过遍历node_modules统计包实例数量。 - npm 包大小扫描: 对已发布版本执行
npm pack openclaw@<version> --dry-run --json,记录压缩 tarball 大小、解压后大小和文件数量。
Warning
主要性能扫描每个 tag 使用一个 smoke 样本,但 v2026.5.27 和 v2026.5.28 行除外,它们使用最新的 repeat-3 发布分支制品。更早的 4 月背景使用来自 clawgrit-reports 的已发布 repeat-3 中位数。请将这些数字视为趋势证据和回归排查信号,而非发布门禁统计。
快照¶
性能覆盖范围:77 个请求的发布版本,74 个有制品支撑的数据点,以及 3 次不可用的 CI 运行。最新的稳定版测量点:v2026.5.28。
稳定版代理回合
冷启动回合快 5.1 倍
v2026.4.14: 9.8sv2026.5.28: 1.9s
已发布包
17.9MB tarball
最新稳定版包,较 3 月 43.3MB 的包大小峰值有所下降。
最新稳定版安装
361.7MiB 全新安装
相比 2026.5.22 引入 shrinkwrap 时的峰值,大幅削减了嵌套的 OpenClaw 依赖树;不过在本机安装审计中,仍保留了较小的 259.7MiB 嵌套树。
依赖图
300 个已安装包
以禁用脚本的全新安装中唯一的包名/版本根节点进行衡量;比上一个稳定版少了 71 个根节点。
5.28 中的变更¶
v2026.5.27 到 v2026.5.28 之间的清理工作缩减了默认安装图,而不是移除这些能力本身。
根默认图
唯一的包名/版本根节点从 371 降至 300。包实例从 372 降至 301。
嵌套树
在同一本机安装审计中,嵌套的 openclaw/node_modules 从 656.1MiB 降至 259.7MiB。
原生可选依赖锥
全平台 @napi-rs/canvas 原生包依赖锥不再出现在默认安装中。
供应链暴露面
默认安装包越少,意味着默认需要信任的 tarball、维护者、原生二进制文件、安装期行为以及传递性更新路径就越少。
Tip
Shrinkwrap 本身并不是问题所在。问题在于糟糕的包结构。
v2026.5.28 仍然带 shrinkwrap,但在本机审计中,嵌套依赖树已大幅缩小,全平台 canvas 扇出也已消失。
核心数字¶
不要使用 4 月下旬损坏的行作为公共性能基线。v2026.4.23 和 v2026.4.29 是有用的回归证据,但 14x 量级的大差异主要描述了从糟糕发布线中的恢复过程。
对于博客叙述,请使用 4 月早些时候发布的基线作为规模参照。该基线是来自已发布 clawgrit-reports mock-provider 运行的 v2026.4.14(repeat 3;该运行之所以失败,仅仅是因为没有输出诊断时间线,因此冷启动、热启动和 RSS 的中位数仍可作为粗略规模参考)。请将其视为叙述背景,而非发布门禁统计。
| 指标 | 4 月更早基线 | v2026.5.28 |
差异 |
|---|---|---|---|
| 冷启动代理回合 | 9,819ms | 1,908ms | 降低 80.6%,快 5.1 倍 |
| 热启动代理回合 | 7,458ms | 1,870ms | 降低 74.9%,快 4.0 倍 |
| 代理峰值 RSS | 686.2MB | 581.0MB | 降低 15.3% |
在 5 月扫描范围内,最新发布分支行相较于 v2026.5.2 有显著变化:
| 指标 | v2026.5.2 |
v2026.5.28 |
差异 |
|---|---|---|---|
| 冷启动代理回合 | 3,897ms | 1,908ms | 降低 51.0% |
| 热启动代理回合 | 3,610ms | 1,870ms | 降低 48.2% |
| 代理峰值 RSS | 613.7MB | 581.0MB | 降低 5.3% |
与上一个稳定版相比:
| 指标 | v2026.5.27 |
v2026.5.28 |
差异 |
|---|---|---|---|
| 冷启动代理回合 | 2,231ms | 1,908ms | 降低 14.5% |
| 热启动代理回合 | 2,226ms | 1,870ms | 降低 16.0% |
| 代理峰值 RSS | 649.0MB | 581.0MB | 降低 10.5% |
安装体积¶
| 指标 | 基准 | v2026.5.28 |
差异 |
|---|---|---|---|
从 2026.5.22 峰值的安装体积 |
1,020.6MB | 361.7MiB | 降低 64.6% |
从最新发布 2026.5.27 的安装体积 |
767.1MiB | 361.7MiB | 降低 52.8% |
从月度高点 2026.2.26 的依赖数 |
645 | 300 | 降低 53.5% |
从最新发布 2026.5.27 的依赖数 |
371 | 300 | 降低 19.1% |
从 2026.5.22 的嵌套 openclaw/node_modules |
911.8MB | 259.7MiB | 降低 71.5% |
从 2026.5.27 的嵌套 openclaw/node_modules |
656.1MiB | 259.7MiB | 降低 60.4% |
npm 包大小¶
| 版本 | 压缩 tarball | 解压后包 | 文件数 | 备注 |
|---|---|---|---|---|
2026.1.30 |
12.8MB | 33.5MB | 4,607 | 早期品牌更名包 |
2026.2.26 |
23.6MB | 82.9MB | 10,125 | 功能增长 |
2026.3.31 |
43.3MB | 182.6MB | 21,037 | 包体积峰值 |
2026.4.29 |
22.9MB | 74.6MB | 9,309 | 包裁剪效果明显 |
2026.5.12 |
23.4MB | 80.1MB | 12,035 | 重大外部插件拆分 |
2026.5.22 |
17.2MB | 76.9MB | 12,386 | 文档/资源已排除在包外 |
2026.5.27 |
17.8MB | 79.0MB | 12,509 | 之前的稳定版包 |
2026.5.28 |
17.9MB | 81.0MB | 9,082 | 最新稳定版包 |
2026.5.12 是变更日志中可见的插件提取里程碑:Amazon Bedrock、Bedrock Mantle、Slack、OpenShell sandbox、Anthropic Vertex、Matrix 和 WhatsApp 已移出核心依赖路径,因此它们的依赖锥会随相应插件一起安装,而不是随每次核心安装一起安装。
Kova 代理回合摘要¶
四月稳定版系列包含两条不同的故事线。四月上旬虽然缓慢,但表现仍可辨识。四月下旬则跌入回归断崖。v2026.5.2 是模拟提供程序通道首次落入 3-5 秒范围,并在所提供的扫描中开始持续通过的版本。
此前已发布的上下文:
| 版本 | Kova | 冷启动回合 | 热启动回合 | Agent 峰值 RSS |
|---|---|---|---|---|
v2026.4.10 |
FAIL | 11,031ms | 7,962ms | 679.0MB |
v2026.4.12 |
FAIL | 11,965ms | 8,289ms | 713.5MB |
v2026.4.14 |
FAIL | 9,819ms | 7,458ms | 686.2MB |
v2026.4.20 |
FAIL | 22,314ms | 18,811ms | 810.8MB |
v2026.4.22 |
FAIL | 9,630ms | 7,459ms | 743.0MB |
提供的扫描结果:
| 版本 | Kova | 冷启动回合 | 热启动回合 | Agent 峰值 RSS |
|---|---|---|---|---|
v2026.4.23 |
FAIL | 47,847ms | 8,010ms | 1,082.7MB |
v2026.4.24 |
FAIL | 48,264ms | 25,483ms | 996.0MB |
v2026.4.25 |
FAIL | 81,080ms | 59,172ms | 1,113.9MB |
v2026.4.26 |
FAIL | 76,771ms | 54,941ms | 1,140.8MB |
v2026.4.27 |
FAIL | 60,902ms | 33,699ms | 1,156.0MB |
v2026.4.29 |
FAIL | 94,031ms | 57,334ms | 3,613.7MB |
v2026.5.2 |
PASS | 3,897ms | 3,610ms | 613.7MB |
v2026.5.7 |
PASS | 3,923ms | 3,693ms | 654.1MB |
v2026.5.12 |
PASS | 7,248ms | 6,629ms | 834.8MB |
v2026.5.18 |
PASS | 3,301ms | 2,913ms | 630.3MB |
v2026.5.20 |
PASS | 3,413ms | 2,952ms | 643.2MB |
v2026.5.22 |
PASS | 4,494ms | 4,093ms | 654.3MB |
v2026.5.26 |
PASS | 2,626ms | 2,282ms | 660.4MB |
v2026.5.27-beta.1 |
PASS | 2,575ms | 2,217ms | 635.3MB |
v2026.5.27 |
PASS | 2,231ms | 2,226ms | 649.0MB |
v2026.5.28 |
PASS | 1,908ms | 1,870ms | 581.0MB |
源码探测¶
有 17 个成功通过的老版本引用跳过了源码探测,因为这些源码树尚未具备所需的探测入口点。这些引用的代理回合指标仍然存在。
代表性源码探测点:
| 版本 | 默认 readyz p50 |
50 个插件 readyz p50 |
CLI 健康检查 p50 | 插件最大 RSS |
|---|---|---|---|---|
v2026.4.29 |
2,819ms | 2,618ms | 1,679ms | 389.0MB |
v2026.5.2 |
2,324ms | 2,013ms | 1,384ms | 377.2MB |
v2026.5.7 |
1,649ms | 1,540ms | 1,175ms | 387.6MB |
v2026.5.18 |
1,942ms | 1,927ms | 607ms | 426.5MB |
v2026.5.20 |
1,966ms | 1,987ms | 621ms | 455.0MB |
v2026.5.22 |
2,081ms | 1,884ms | 5,095ms | 444.2MB |
v2026.5.26 |
1,546ms | 1,634ms | 656ms | 400.4MB |
v2026.5.27-beta.1 |
1,462ms | 1,548ms | 548ms | 394.0MB |
v2026.5.27 |
1,491ms | 1,571ms | 553ms | 401.5MB |
v2026.5.28 |
1,457ms | 1,474ms | 623ms | 386.1MB |
即使代理回合通道仍然通过,v2026.5.22 的 CLI 健康检查尖峰在此表中依然可见。在调查针对性的 CLI 或网关回归问题时,请保留这些源码探测。
安装体积审计¶
依赖样本每个月选取一个稳定版,外加 2026.5.22 引入 shrinkwrap 的事件以及最新的 2026.5.28 版本。
| 节点 | 已安装依赖数 | 全新安装大小 | OpenClaw 包体 | 嵌套 openclaw/node_modules |
根级 shrinkwrap | Canvas 安装行为 |
|---|---|---|---|---|---|---|
一月 2026.1.30 |
605 | 438.4MB | 45.8MB | 2.4MB | 无 | 顶层包装 + darwin-arm64 |
二月 2026.2.26 |
645 | 575.7MB | 110.1MB | 3.5MB | 无 | 顶层包装 + darwin-arm64 |
三月 2026.3.31 |
438 | 584.1MB | 234.8MB | 0MB | 无 | 顶层包装 + darwin-arm64 |
| 时间点 | 已安装依赖 | 全新安装 | OpenClaw 包 | 嵌套 openclaw/node_modules |
根 shrinkwrap | Canvas 安装行为 |
|---|---|---|---|---|---|---|
4 月 2026.4.29 |
392 | 335.0MB | 97.4MB | 0MB | 否 | 未安装 |
2026.5.22 |
401 | 1,020.6MB | 1,020.4MB | 911.8MB | 是 | 嵌套:全部 12 个 @napi-rs/canvas 包 |
5 月 2026.5.26 |
371 | 767.5MB | 767.4MB | 656.4MB | 是 | 嵌套:全部 12 个 @napi-rs/canvas 包 |
2026.5.27 |
371 | 767.1MiB | 766.9MiB | 656.1MiB | 是 | 嵌套:全部 12 个 @napi-rs/canvas 包 |
最新 2026.5.28 |
300 | 361.7MiB | 361.6MiB | 259.7MiB | 是 | 未安装 |
Shrinkwrap 边界¶
2026.5.20 发布时没有根 shrinkwrap,也没有大型嵌套 OpenClaw
依赖树。2026.5.22 引入了根 shrinkwrap,并在嵌套 openclaw/node_modules
下安装了 911.8MB。2026.5.28 保留了 shrinkwrap,仍然在嵌套
openclaw/node_modules 下安装 259.7MiB,但本地全新安装审计中不再安装
任何 @napi-rs/canvas 包。
已发布 tarball 检查验证了该边界:
| 版本 | 是否已发布稳定版 | 根 npm-shrinkwrap.json |
备注 |
|---|---|---|---|
2026.5.20 |
是 | 否 | shrinkwrap 之前的最后一个稳定版 |
2026.5.21 |
否 | 不适用 | 没有稳定 npm 发布 |
2026.5.22 |
是 | 是 | 引入 shrinkwrap |
2026.5.23 |
否 | 不适用 | 没有稳定 npm 发布 |
2026.5.24 |
否 | 不适用 | 没有稳定 npm 发布 |
2026.5.25 |
否 | 不适用 | 没有稳定 npm 发布 |
2026.5.26 |
是 | 是 | 嵌套依赖树仍然存在 |
2026.5.27 |
是 | 是 | 嵌套依赖树仍然存在 |
2026.5.28 |
是 | 是 | 嵌套依赖树明显更小 |
重要区别:shrinkwrap 本身不是问题。
v2026.5.28 仍然附带根 shrinkwrap。问题在于包结构,
它导致 npm 物化了一个大型嵌套 OpenClaw 依赖树以及全部 12 个
@napi-rs/canvas 平台包。在 v2026.5.28 中,
嵌套树更小,并且 canvas 平台扇出不再出现在本地审计中。
有关当前依赖审查和包策略,请参阅 依赖锁定。
供应链解读¶
依赖数量是一项运营安全指标,而不仅仅是安装大小 指标。每个包都会扩大维护者、tarball、传递 更新、可选原生二进制文件以及安装时行为等需要操作员 信任的范围。
清理方向是:
- 将重量级和可选功能排除在默认核心安装之外
- 让插件包拥有自己的运行时依赖图
- 避免在 Gateway 启动期间进行运行时包管理器修复
- 在不导致全平台原生包物化的情况下保持确定性安装
- 在包验收和测量路径中保持安装脚本禁用
- 在发布前捕获嵌套依赖树和原生可选依赖爆炸
相关文档:
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw