Release and CI
Проверка производительности релиза
Эта страница фиксирует доказательства, лежащие в основе майской очистки 2026 года в OpenClaw по производительности, размеру пакета, зависимостям и shrinkwrap. Это техническое сопровождение к публичной публикации в блоге.
Здесь объединены два аудита:
- Проверка производительности релизов: GitHub Releases от
v2026.5.28назад до стабильногоv2026.4.23, с использованием workflowOpenClaw Performance,profile=smoke, линия mock-provider. Большинство строк тегов содержит один образец; строкиv2026.5.27иv2026.5.28используют последние артефакты release-branch с repeat-3. - Более ранний апрельский контекст: опубликованные базовые показатели mock-provider из
clawgrit-reportsотv2026.4.1доv2026.5.2, используемые только чтобы не считать сломанные позднеапрельские релизы публичной базовой линией производительности. - Проверка размера установки: свежие установки
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
Tarball 17,9MB
Последний стабильный пакет, меньше мартовского пика размера пакета в 43,3MB.
Свежая установка 361,7MiB
v2026.5.28 резко сокращает вложенное дерево зависимостей OpenClaw, но
в локальном аудите установки все еще остается меньшее вложенное дерево размером 259,7MiB.
300 установленных пакетов
Последний стабильный релиз, измеренный как уникальные корни имени/версии пакета в свежей установке с отключенными скриптами.
Хронология размера установки
645 зависимостей
2026.2.26 был месячным максимумом по количеству зависимостей в этой выборке.
Установка 1 020,6MB
2026.5.22 добавил корневой shrinkwrap и выявил проблему формы пакета:
911,8MB оказались во вложенном openclaw/node_modules.
Установка 361,7MiB
2026.5.28 сокращает размер свежей установки на 52,8% по сравнению с 2026.5.27, но все еще
устанавливает вложенное дерево OpenClaw размером 259,7MiB.
300 корней пакетов
2026.5.28 устанавливает на 71 уникальный корень имени/версии пакета меньше, чем
2026.5.27.
Что Изменилось В 5.28
Очистка между v2026.5.27 и v2026.5.28 уменьшила граф установки по умолчанию,
а не удалила сами возможности.
Количество уникальных корней имя/версия пакета снизилось с 371 до 300. Количество экземпляров пакетов снизилось с 372 до 301.
Вложенный openclaw/node_modules уменьшился с 656.1MiB до 259.7MiB в
той же локальной проверке установки.
Общеплатформенный конус нативных пакетов @napi-rs/canvas перестал попадать в
установку по умолчанию.
Меньше пакетов по умолчанию означает меньше tarball-архивов, сопровождающих, нативных бинарных файлов, поведения во время установки и транзитивных путей обновления, которым нужно доверять по умолчанию.
Главные Числа
Не используйте сломанные строки конца апреля как публичные базовые показатели производительности.
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% ниже |
Более ранний апрельский базовый показатель — это v2026.4.14 из опубликованного
запуска mock-provider clawgrit-reports. В этом запуске использовалось повторение 3, и он завершился ошибкой только
потому, что диагностическая временная шкала не была выведена; медианы cold, warm и RSS
по-прежнему полезны как приблизительный масштаб. Рассматривайте это как контекст повествования, а не как
статистику релизного барьера.
Внутри майской зачистки последняя строка release-ветки заметно сдвинулась относительно
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% ниже |
Вложенный openclaw/node_modules от 2026.5.22 |
911.8MB | 259.7MiB | на 71.5% ниже |
Вложенный openclaw/node_modules от 2026.5.27 |
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 | docs/assets исключены из пакета |
2026.5.27 |
17.8MB | 79.0MB | 12,509 | предыдущий стабильный пакет |
2026.5.28 |
17.9MB | 81.0MB | 9,082 | последний стабильный пакет |
2026.5.12 — заметная в changelog веха извлечения плагинов:
Amazon Bedrock, Bedrock Mantle, Slack, песочница OpenShell, Anthropic Vertex,
Matrix и WhatsApp были вынесены из пути зависимостей ядра, чтобы их конусы зависимостей
устанавливались вместе с этими плагинами, а не при каждой установке ядра.
Сводка хода агента Kova
Апрельская стабильная линейка содержит две разные истории. Ранний апрель был медленным,
но узнаваемым. Конец апреля стал обрывом регрессии. v2026.5.2 — точка, где
линия mock-provider впервые опускается в диапазон 3-5s и начинает стабильно проходить
в предоставленной зачистке.
Более ранний опубликованный контекст:
| Релиз | 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 успешных старых refs, потому что в этих деревьях исходного кода еще не было требуемых точек входа проб. Метрики хода агента для этих refs все равно существуют.
Репрезентативные точки проб исходного кода:
| Релиз | readyz p50 по умолчанию |
readyz p50 с 50 плагинами |
p50 состояния CLI | Максимальный RSS Plugin |
|---|---|---|---|---|
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 |
Пик состояния CLI в v2026.5.22 виден в этой таблице, хотя дорожка
agent-turn все еще проходила. Сохраняйте исходные пробы при расследовании
целевых регрессий CLI или Gateway.
Аудит установочного footprint
Выборки зависимостей используют по одному стабильному выпуску за месяц, а также
событие введения shrinkwrap в 2026.5.22 и последний выпуск 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 |
Апр 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 |
Май 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 и устанавливает 911.8MB во
вложенный openclaw/node_modules.
2026.5.28 сохраняет shrinkwrap и по-прежнему устанавливает 259.7MiB во
вложенный openclaw/node_modules.
2026.5.28 больше не устанавливает пакеты @napi-rs/canvas в локальном
аудите свежей установки.
Проверка опубликованного 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.
Интерпретация цепочки поставки
Количество зависимостей — это операционная метрика безопасности, а не только метрика размера установки. Каждый пакет расширяет набор сопровождающих, tarball, транзитивных обновлений, необязательных нативных бинарных файлов и поведения во время установки, которым операторы должны доверять.
Направление очистки:
- держать тяжелые и необязательные возможности вне стандартной установки ядра
- чтобы пакеты Plugin владели своим графом runtime-зависимостей
- избегать runtime-исправления менеджером пакетов во время запуска Gateway
- сохранять детерминированные установки без материализации нативных пакетов для всех платформ
- держать установочные скрипты отключенными в путях приемки пакетов и измерений
- выявлять вложенные деревья зависимостей и взрывной рост нативных необязательных зависимостей до публикации
Связанные документы: