---
read_when:
    - 你正在验证 2026 年 5 月的性能和包大小清理
    - 你需要 OpenClaw 性能和依赖项博客文章背后的数据
    - 你正在更改发布门禁、软件包 shrinkwrap 或插件依赖边界
summary: 2026 年 5 月性能、包大小、依赖项和 shrinkwrap 清理的可视化摘要和技术证据
title: 发布性能梳理
x-i18n:
    generated_at: "2026-06-27T03:17:42Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 93438b8037a40ed9e5590854926badfe943d440e4c585e6290d29b54764e861b
    source_path: reference/release-performance-sweep.md
    workflow: 16
---

本页记录了 2026 年 5 月 OpenClaw 性能、包大小、依赖项和 shrinkwrap 清理背后的证据。它是公开博客文章的技术配套说明。

这里合并了两项审计：

- **发布性能扫描：** GitHub Releases 从 `v2026.5.28` 回溯到稳定版 `v2026.4.23`，使用 `OpenClaw Performance` workflow、`profile=smoke`、mock-provider 执行通道。大多数标签行只有一个样本；`v2026.5.27` 和 `v2026.5.28` 行使用最新的 repeat-3 发布分支构件。
- **更早的 4 月上下文：** 从 `v2026.4.1` 到 `v2026.5.2` 发布的 `clawgrit-reports` mock-provider 基线，仅用于避免把 4 月下旬的故障版本当作公开性能基线。
- **安装占用扫描：** 在临时包中执行全新的 `npm install --ignore-scripts` 安装，用 `du -sk node_modules` 测量大小，并遍历 `node_modules` 统计包实例数量。
- **npm 包大小扫描：** 对已发布版本执行 `npm pack openclaw@<version> --dry-run --json`，记录压缩 tarball 大小、解包大小和文件数。

<Warning>
主性能扫描对每个标签使用一个冒烟样本，除了 `v2026.5.27` 和 `v2026.5.28` 行，它们使用最新的 repeat-3 发布分支构件。更早的 4 月上下文使用 `clawgrit-reports` 中发布的 repeat-3 中位数。请把这些数字视为趋势证据和回归排查信号，而不是发布门禁统计数据。
</Warning>

## 快照

性能覆盖范围：**请求的 77 个发布版本**、**74 个有构件支持的数据点**，以及 **3 个不可用的 CI 运行**。测得的最新稳定版点：`v2026.5.28`。

<CardGroup cols={2}>
  <Card title="稳定版智能体轮次" icon="gauge">
    **冷启动轮次快 5.1 倍**

    - `v2026.4.14`: 9.8s
    - `v2026.5.28`: 1.9s

  </Card>
  <Card title="已发布包" icon="package">
    **17.9MB tarball**

    最新稳定版包，低于 3 月 43.3MB 的包大小峰值。

  </Card>
  <Card title="最新稳定版安装" icon="hard-drive">
    **361.7MiB 全新安装**

    `v2026.5.28` 大幅削减了嵌套的 OpenClaw 依赖树，但本地安装审计中仍然保留了一个较小的 259.7MiB 嵌套树。

  </Card>
  <Card title="依赖图" icon="boxes">
    **300 个已安装包**

    最新稳定版发布，在禁用脚本的全新安装中按唯一包名/版本根进行测量。

  </Card>
</CardGroup>

## 安装占用时间线

<CardGroup cols={2}>
  <Card title="月度高点" icon="triangle-alert">
    **645 个依赖项**

    `2026.2.26` 是此样本中的月度依赖数量高点。

  </Card>
  <Card title="引入 shrinkwrap" icon="lock">
    **1,020.6MB 安装**

    `2026.5.22` 添加了根 shrinkwrap，并暴露出一个包形态问题：911.8MB 落在嵌套的 `openclaw/node_modules` 下。

  </Card>
  <Card title="最新稳定版" icon="tag">
    **361.7MiB 安装**

    `2026.5.28` 相比 `2026.5.27` 将全新安装大小减少了 52.8%，但仍会安装一个 259.7MiB 的嵌套 OpenClaw 树。

  </Card>
  <Card title="依赖图" icon="scissors">
    **300 个包根**

    `2026.5.28` 安装的唯一包名/版本根比 `2026.5.27` 少 71 个。

  </Card>
</CardGroup>

<Tip>
shrinkwrap 本身并不是问题。糟糕的包形态才是。`v2026.5.28` 仍然发布 shrinkwrap，但嵌套依赖树小得多，并且本地审计中已没有全平台 canvas 扇出。
</Tip>

## 5.28 中的变化

`v2026.5.27` 和 `v2026.5.28` 之间的清理减少了默认安装
图，而不是移除这些能力本身。

<CardGroup cols={2}>
  <Card title="根默认图" icon="git-branch">
    唯一软件包名称/版本根从 **371** 降至 **300**。软件包
    实例从 **372** 降至 **301**。
  </Card>
  <Card title="嵌套树" icon="unplug">
    在同一次本地安装审计中，嵌套的 `openclaw/node_modules` 从 **656.1MiB** 降至 **259.7MiB**。
  </Card>
  <Card title="原生可选依赖锥" icon="cpu">
    全平台 `@napi-rs/canvas` 原生软件包依赖锥不再进入
    默认安装。
  </Card>
  <Card title="供应链表面" icon="shield">
    默认软件包更少，意味着默认需要信任的 tarball、维护者、原生二进制文件、
    安装时行为和传递更新路径更少。
  </Card>
</CardGroup>

## 核心数字

不要把四月下旬的异常行用作公开性能基线。
`v2026.4.23` 和 `v2026.4.29` 是有用的回归证据，但较大的
`14x` 风格差值主要描述的是从一条糟糕发布线中恢复的过程。

对于博客叙事，使用四月较早发布的基线作为规模参照：

| 指标          | 四月较早基线 | `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`。该运行使用 repeat 3，失败的唯一原因是
未输出诊断时间线；冷轮次、热轮次和 RSS 中位数仍可作为粗略规模参考。
请将其视为叙事背景，而不是发布门禁统计数据。

在五月扫查中，最新发布分支行相较 `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 智能体轮次摘要

四月稳定线包含两个不同的故事。四月较早版本缓慢，
但仍可辨识。四月下旬变成了回归悬崖。`v2026.5.2` 是
mock-provider 通道首次降至 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 个成功的较旧 ref 跳过了源码探针，因为这些源码
树当时还没有所需的探针入口点。这些 ref 仍然有
智能体轮次指标。

代表性源码探针点：

| 版本             | 默认 `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 健康检查峰值在此表中可见，即使
agent-turn 通道仍然通过。调查有针对性的 CLI 或 Gateway 网关回归时，
请保留源探针。

## 安装占用审计

依赖样本每月使用一个稳定版本，另加
`2026.5.22` shrinkwrap 引入事件和最新的 `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 边界

<CardGroup cols={2}>
  <Card title="Before shrinkwrap" icon="unlock">
    `2026.5.20` 没有根 shrinkwrap，也没有大型嵌套 OpenClaw 依赖树。
  </Card>
  <Card title="Introduced" icon="lock">
    `2026.5.22` 添加根 shrinkwrap，并在嵌套
    `openclaw/node_modules` 下安装 911.8MB。
  </Card>
  <Card title="Latest stable" icon="tag">
    `2026.5.28` 保留 shrinkwrap，并且仍在嵌套
    `openclaw/node_modules` 下安装 259.7MiB。
  </Card>
  <Card title="Canvas fanout fixed" icon="check">
    `2026.5.28` 在本地全新安装审计中不再安装任何
    `@napi-rs/canvas` 包。
  </Card>
</CardGroup>

已发布 tarball 检查验证了该边界：

| 版本        | 已发布稳定版？ | 根 `npm-shrinkwrap.json` | 说明                                  |
| ----------- | -------------- | ------------------------ | ------------------------------------- |
| `2026.5.20` | 是             | 否                       | shrinkwrap 之前的最后一个稳定版本     |
| `2026.5.21` | 否             | n/a                      | 没有稳定 npm 版本                     |
| `2026.5.22` | 是             | 是                       | 引入 shrinkwrap                       |
| `2026.5.23` | 否             | n/a                      | 没有稳定 npm 版本                     |
| `2026.5.24` | 否             | n/a                      | 没有稳定 npm 版本                     |
| `2026.5.25` | 否             | n/a                      | 没有稳定 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](/zh-CN/gateway/security/shrinkwrap)。

## 供应链解读

依赖数量是一项运营安全指标，而不仅是安装大小指标。
每个包都会扩大运营者必须信任的维护者、tarball、传递更新、
可选原生二进制文件和安装时行为集合。

清理方向是：

- 将重型和可选能力保留在默认核心安装之外
- 让插件包拥有自己的运行时依赖图
- 避免在 Gateway 网关启动期间进行运行时包管理器修复
- 保持确定性安装，同时避免物化所有平台的原生包
- 在包验收和测量路径中保持安装脚本禁用
- 在发布前捕获嵌套依赖树和原生可选依赖爆炸

相关文档：

- [插件依赖解析](/zh-CN/plugins/dependency-resolution)
- [插件清单](/zh-CN/plugins/plugin-inventory)
- [完整发布验证](/zh-CN/reference/full-release-validation)
