- 你正在验证 2026 年 5 月的性能和包大小清理
- 你需要 OpenClaw 性能和依赖博客文章背后的数据
- 你正在更改发布门槛、包 shrinkwrap 或插件依赖边界 title: “发布性能扫描”
本页汇总了 2026 年 5 月 OpenClaw 性能、包大小、依赖和 shrinkwrap 清理背后的证据。它是面向公开博客文章的技术配套说明。 这里合并了两类审计:
- 发布性能扫描: 从
v2026.5.28回溯到稳定版v2026.4.23的 GitHub Releases,使用OpenClaw Performance工作流、profile=smoke、mock-provider 线路。大多数标签行只有一个样本;v2026.5.27和v2026.5.28行使用最新的重复 3 次发布分支产物。 - 更早的 4 月上下文: 已发布的
clawgrit-reportsmock-provider 基线,范围从v2026.4.1到v2026.5.2,仅用于避免把 4 月下旬损坏的发布当作公开性能基线。 - 安装占用扫描: 在临时包中执行全新的
npm install --ignore-scripts,使用du -sk node_modules统计大小,并通过遍历node_modules统计包实例数量。 - npm 包大小扫描: 对已发布版本执行
npm pack openclaw@<version> --dry-run --json,记录压缩后的 tarball 大小、解包后大小和文件数量。
快照
性能覆盖范围: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 新鲜安装
v2026.5.28 明显缩减了嵌套的 OpenClaw 依赖树,但本地安装审计中仍然保留了一个更小的 259.7MiB 嵌套树。依赖图
300 个已安装包最新稳定发布,按在禁用脚本的全新安装中统计的唯一包名/版本根节点数计算。
安装占用时间线
月度高点
645 个依赖
2026.2.26 是本样本中的月度依赖数量高点。引入 shrinkwrap
1,020.6MB 安装
2026.5.22 添加了根 shrinkwrap,并暴露出一个包结构问题:
911.8MB 落在嵌套的 openclaw/node_modules 下。最新稳定版
361.7MiB 安装
2026.5.28 相比 2026.5.27 将全新安装体积减少了 52.8%,但仍安装了一个 259.7MiB 的嵌套 OpenClaw 树。依赖图
300 个包根
2026.5.28 比 2026.5.27 少安装了 71 个唯一的包名/版本根节点。5.28 中发生了什么变化
v2026.5.27 到 v2026.5.28 之间的清理缩小了默认安装图,而不是移除这些能力本身。
根默认图
唯一包名/版本根从 371 降到 300。包实例从 372 降到 301。
嵌套树
在同一份本地安装审计中,嵌套的
openclaw/node_modules 从 656.1MiB 降到 259.7MiB。原生可选锥体
全平台的
@napi-rs/canvas 原生包锥体不再进入默认安装。供应链面
更少的默认包意味着默认需要信任的 tarball、维护者、原生二进制文件、安装时行为和传递更新路径都更少。
关键数字
不要把 4 月下旬损坏的行作为公开性能基线。v2026.4.23 和 v2026.4.29 可用于回归证据,但那些巨大的 14x 级别差异主要描述的是从坏发布线恢复的过程。
对于博客叙述,请使用更早的 4 月已发布基线作为尺度:
| 指标 | 更早的 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% |
clawgrit-reports mock-provider 运行中的 v2026.4.14。该运行使用了重复 3 次,只是因为诊断时间线未输出而失败;冷启动、热启动和 RSS 中位数仍然可作为粗略尺度。请将此视为叙述背景,而不是发布门槛统计。
在 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.1MB | 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.1MB | 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 代理回合摘要
4 月的稳定线包含两个不同的故事。4 月上旬虽慢,但仍可识别。4 月下旬则变成了回归悬崖。v2026.5.2 是 mock-provider 线路首次跌入 3-5 秒区间,并在给定扫描中开始稳定通过的位置。
更早的已发布上下文:
| 发布版本 | Kova | 冷启动回合 | 热启动回合 | 代理峰值 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 | 冷启动回合 | 热启动回合 | 代理峰值 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 |
Source probes
由于这些源代码树当时还没有所需的探针入口点,17 个成功的旧 ref 的源探针被跳过了。这些 ref 仍然存在 agent-turn 指标。 代表性的源探针数据点:| Release | Default readyz p50 | 50 plugins readyz p50 | CLI health p50 | Plugin max 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 health 峰值。排查有针对性的 CLI 或网关回归时,请保留源探针。
安装体积审计
依赖样本使用每月一个稳定版,再加上2026.5.22 的 shrinkwrap 引入事件,以及最新的 2026.5.28 版本。
| Point | Installed deps | Fresh install | OpenClaw package | Nested openclaw/node_modules | Root shrinkwrap | Canvas install behavior |
|---|---|---|---|---|---|---|
Jan 2026.1.30 | 605 | 438.4MB | 45.8MB | 2.4MB | no | top-level wrapper + darwin-arm64 |
Feb 2026.2.26 | 645 | 575.7MB | 110.1MB | 3.5MB | no | top-level wrapper + darwin-arm64 |
Mar 2026.3.31 | 438 | 584.1MB | 234.8MB | 0MB | no | top-level wrapper + darwin-arm64 |
Apr 2026.4.29 | 392 | 335.0MB | 97.4MB | 0MB | no | none installed |
2026.5.22 | 401 | 1,020.6MB | 1,020.4MB | 911.8MB | yes | nested: all 12 @napi-rs/canvas packages |
May 2026.5.26 | 371 | 767.5MB | 767.4MB | 656.4MB | yes | nested: all 12 @napi-rs/canvas packages |
2026.5.27 | 371 | 767.1MiB | 766.9MiB | 656.1MiB | yes | nested: all 12 @napi-rs/canvas packages |
Latest 2026.5.28 | 300 | 361.7MiB | 361.6MiB | 259.7MiB | yes | none installed |
Shrinkwrap 边界
Before shrinkwrap
2026.5.20 没有根 shrinkwrap,也没有大型的嵌套 OpenClaw 依赖树。Introduced
2026.5.22 添加了根 shrinkwrap,并在嵌套的 openclaw/node_modules 下安装了 911.8MB。Latest stable
2026.5.28 保留了 shrinkwrap,并且仍然在嵌套的 openclaw/node_modules 下安装了 259.7MiB。Canvas fanout fixed
2026.5.28 在本地新鲜安装审计中不再安装任何 @napi-rs/canvas 包。| Version | Published stable? | Root npm-shrinkwrap.json | Notes |
|---|---|---|---|
2026.5.20 | yes | no | last stable release before shrinkwrap |
2026.5.21 | no | n/a | no stable npm release |
2026.5.22 | yes | yes | shrinkwrap introduced |
2026.5.23 | no | n/a | no stable npm release |
2026.5.24 | no | n/a | no stable npm release |
2026.5.25 | no | n/a | no stable npm release |
2026.5.26 | yes | yes | nested dependency tree still present |
2026.5.27 | yes | yes | nested dependency tree still present |
2026.5.28 | yes | yes | nested dependency tree much smaller |
v2026.5.28 仍然包含根 shrinkwrap。问题在于包的形态导致 npm 物化出一个很大的嵌套 OpenClaw 依赖树,以及全部 12 个 @napi-rs/canvas 平台包。v2026.5.28 中嵌套树更小了,而且 canvas 平台分发也 აღარ在本地审计中落地。
关于 shrinkwrap 的通俗解释,以及维护者级别的包检查,请参阅 npm shrinkwrap。
供应链解读
依赖数量不仅是安装体积指标,也是运维安全指标。每个包都会扩大维护者、tarball、传递性更新、可选原生二进制文件以及安装时行为的信任面,运维人员必须信任这些内容。 清理方向是:- 将沉重且可选的能力放在默认核心安装之外
- 让插件包负责其运行时依赖图
- 避免在 Gateway 启动期间进行运行时包管理器修复
- 在不导致所有平台原生包物化的前提下保持确定性安装
- 在包接受和度量路径中保持禁用安装脚本
- 在发布前捕获嵌套依赖树和原生可选依赖爆炸