快速开始
发布性能排查
本页记录了 2026 年 5 月 OpenClaw 性能、软件包大小、依赖项和 shrinkwrap 清理工作的依据,是公开博客文章的技术配套文档。
这里合并了两项审计:
- **发布性能扫描:**分析从
v2026.5.28回溯到稳定版v2026.4.23的 GitHub Releases,使用OpenClaw Performance工作流、profile=smoke和模拟提供商通道。大多数标签行使用单次样本;v2026.5.27和v2026.5.28行使用最新的重复 3 次发布分支产物。 - **更早的 4 月背景数据:**使用从
v2026.4.1到v2026.5.2已发布的clawgrit-reports模拟提供商基线,仅用于避免将 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.8 秒v2026.5.28:1.9 秒
17.9MB tarball
最新稳定版软件包,低于 3 月 43.3MB 的软件包大小峰值。
全新安装占用 361.7MiB
与引入 shrinkwrap 后的 2026.5.22 峰值相比,嵌套的 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、维护者、原生二进制文件、安装时行为和传递更新路径也更少。
关键数据
不要将 4 月下旬存在问题的行用作公开性能基线。v2026.4.23 和 v2026.4.29 可作为有价值的回归依据,但类似 14x 的巨大差异主要描述的是从一系列不良版本中恢复的幅度。
在博客叙述中,应使用更早发布的 4 月基线来体现量级。基线取自已发布的 clawgrit-reports 模拟提供商运行中的 v2026.4.14(重复 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 沙箱、Anthropic Vertex、Matrix 和 WhatsApp 已移出核心依赖路径,因此它们的依赖锥会随对应插件安装,而不再随每次核心安装一同安装。
Kova 智能体轮次摘要
4 月稳定版本线包含两个不同阶段。4 月上旬虽然较慢,但仍处于可理解的范围;4 月下旬则跌入回归断崖。v2026.5.2 是模拟提供商通道首次降至 3–5 秒区间,并在本次扫描提供的数据中开始稳定通过的版本。
更早发布的背景数据:
| 版本 | Kova | 冷启动轮次 | 预热轮次 | 智能体 RSS 峰值 |
|---|---|---|---|---|
v2026.4.10 |
失败 | 11,031ms | 7,962ms | 679.0MB |
v2026.4.12 |
失败 | 11,965ms | 8,289ms | 713.5MB |
v2026.4.14 |
失败 | 9,819ms | 7,458ms | 686.2MB |
v2026.4.20 |
失败 | 22,314ms | 18,811ms | 810.8MB |
v2026.4.22 |
失败 | 9,630ms | 7,459ms | 743.0MB |
本次扫描提供的数据:
| 版本 | Kova | 冷启动轮次 | 预热轮次 | 智能体 RSS 峰值 |
|---|---|---|---|---|
v2026.4.23 |
失败 | 47,847ms | 8,010ms | 1,082.7MB |
v2026.4.24 |
失败 | 48,264ms | 25,483ms | 996.0MB |
v2026.4.25 |
失败 | 81,080ms | 59,172ms | 1,113.9MB |
v2026.4.26 |
失败 | 76,771ms | 54,941ms | 1,140.8MB |
v2026.4.27 |
失败 | 60,902ms | 33,699ms | 1,156.0MB |
v2026.4.29 |
失败 | 94,031ms | 57,334ms | 3,613.7MB |
v2026.5.2 |
通过 | 3,897ms | 3,610ms | 613.7MB |
v2026.5.7 |
通过 | 3,923ms | 3,693ms | 654.1MB |
v2026.5.12 |
通过 | 7,248ms | 6,629ms | 834.8MB |
v2026.5.18 |
通过 | 3,301ms | 2,913ms | 630.3MB |
v2026.5.20 |
通过 | 3,413ms | 2,952ms | 643.2MB |
v2026.5.22 |
通过 | 4,494ms | 4,093ms | 654.3MB |
v2026.5.26 |
通过 | 2,626ms | 2,282ms | 660.4MB |
v2026.5.27-beta.1 |
通过 | 2,575ms | 2,217ms | 635.3MB |
v2026.5.27 |
通过 | 2,231ms | 2,226ms | 649.0MB |
v2026.5.28 |
通过 | 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 或 Gateway 网关回归时,应保留源码探针。
安装占用空间审计
依赖项样本每月选取一个稳定版本,并额外包含引入 shrinkwrap 的 2026.5.22 事件版本和最新的 2026.5.28 版本。
| 时间点 | 已安装依赖数 | 全新安装大小 | OpenClaw 软件包大小 | 嵌套的 openclaw/node_modules |
根级 shrinkwrap | Canvas 安装行为 |
|---|---|---|---|---|---|---|
1 月 2026.1.30 |
605 | 438.4MB | 45.8MB | 2.4MB | 否 | 顶层包装器 + darwin-arm64 |
2 月 2026.2.26 |
645 | 575.7MB | 110.1MB | 3.5MB | 否 | 顶层包装器 + darwin-arm64 |
3 月 2026.3.31 |
438 | 584.1MB | 234.8MB | 0MB | 否 | 顶层包装器 + darwin-arm64 |
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 平台软件包的全平台扇出。
有关 shrinkwrap 的通俗说明和维护者级别的软件包检查,请参阅 npm shrinkwrap。
供应链解读
依赖数量是一项运营安全指标,而不仅仅是安装大小指标。每个软件包都会扩大 运营者必须信任的维护者、tarball、传递性更新、可选原生二进制文件和安装时行为 的范围。
清理方向如下:
- 将重量级和可选能力保留在默认核心安装之外
- 让插件软件包负责自身的运行时依赖图
- 避免在 Gateway 网关启动期间进行运行时软件包管理器修复
- 在不导致所有平台的原生软件包全部具体化的前提下,保持确定性安装
- 在软件包验收和测量流程中禁用安装脚本
- 在发布前发现嵌套依赖树和原生可选依赖数量激增问题
相关文档: