Release and CI
Varredura de desempenho da versão
Esta página reúne as evidências por trás da limpeza de desempenho, tamanho do pacote, dependências e shrinkwrap do OpenClaw em maio de 2026. Ela é o complemento técnico da publicação no blog.
Duas auditorias são combinadas aqui:
- Varredura de desempenho das versões: GitHub Releases desde
v2026.5.28até a versão estávelv2026.4.23, usando o fluxo de trabalhoOpenClaw Performance,profile=smokee a faixa do provedor simulado. A maioria das linhas de tags usa uma amostra; as linhasv2026.5.27ev2026.5.28usam os artefatos mais recentes com três repetições das branches de versão. - Contexto anterior de abril: linhas de base publicadas do provedor simulado em
clawgrit-reports, dev2026.4.1av2026.5.2, usadas apenas para evitar que as versões com falhas do fim de abril sejam tratadas como a linha de base pública de desempenho. - Varredura da ocupação da instalação: instalações novas com
npm install --ignore-scriptsem pacotes temporários, usandodu -sk node_modulespara medir o tamanho e uma varredura denode_modulespara contar as instâncias de pacotes. - Varredura do tamanho do pacote npm:
npm pack openclaw@<version> --dry-run --jsonpara as versões publicadas, registrando o tamanho do tarball compactado, o tamanho descompactado e a quantidade de arquivos.
Visão geral
Cobertura de desempenho: 77 versões solicitadas, 74 pontos respaldados por artefatos e 3 execuções de CI indisponíveis. Ponto estável medido mais recente: v2026.5.28.
Turno a frio 5,1 vezes mais rápido
v2026.4.14: 9,8sv2026.5.28: 1,9s
Tarball de 17,9MB
Pacote estável mais recente, abaixo do pico de tamanho de 43,3MB registrado em março.
Instalação nova de 361,7MiB
Reduz drasticamente a árvore aninhada de dependências do OpenClaw em relação ao pico da introdução do shrinkwrap em 2026.5.22, embora uma árvore aninhada menor, de 259,7MiB, ainda permaneça na auditoria da instalação local.
300 pacotes instalados
Medidos como raízes únicas de nome/versão de pacote em uma instalação nova com scripts desativados; 71 raízes a menos que na versão estável anterior.
O que mudou na 5.28
A limpeza entre v2026.5.27 e v2026.5.28 reduziu o grafo da instalação padrão, em vez de remover as próprias funcionalidades.
As raízes únicas de nome/versão de pacote caíram de 371 para 300. As instâncias de pacotes caíram de 372 para 301.
O openclaw/node_modules aninhado caiu de 656,1MiB para 259,7MiB na mesma auditoria da instalação local.
O cone de pacotes nativos de @napi-rs/canvas para todas as plataformas deixou de ser incluído na instalação padrão.
Menos pacotes padrão significam menos tarballs, mantenedores, binários nativos, comportamentos durante a instalação e caminhos de atualização transitivos nos quais confiar por padrão.
Principais números
Não use as linhas com falhas do fim de abril como linhas de base públicas de desempenho. v2026.4.23 e v2026.4.29 são evidências úteis de regressão, mas as grandes diferenças no estilo de 14x descrevem principalmente a recuperação de uma sequência problemática de versões.
Para a narrativa do blog, use como escala a linha de base publicada no início de abril. A linha de base é a v2026.4.14 da execução publicada do provedor simulado em clawgrit-reports (três repetições; essa execução falhou apenas porque a linha do tempo de diagnóstico não foi emitida, portanto as medianas a frio, a quente e de RSS ainda são úteis como escala aproximada). Trate isso como contexto narrativo, não como estatística de critério de aprovação de versão.
| Métrica | Linha de base do início de abril | v2026.5.28 |
Diferença |
|---|---|---|---|
| Turno a frio do agente | 9.819ms | 1.908ms | 80,6% menor, 5,1 vezes mais rápido |
| Turno a quente do agente | 7.458ms | 1.870ms | 74,9% menor, 4,0 vezes mais rápido |
| Pico de RSS do agente | 686,2MB | 581,0MB | 15,3% menor |
Na varredura de maio, a linha mais recente da branch de versão apresentou uma mudança significativa em relação à v2026.5.2:
| Métrica | v2026.5.2 |
v2026.5.28 |
Diferença |
|---|---|---|---|
| Turno a frio do agente | 3.897ms | 1.908ms | 51,0% menor |
| Turno a quente do agente | 3.610ms | 1.870ms | 48,2% menor |
| Pico de RSS do agente | 613,7MB | 581,0MB | 5,3% menor |
Em comparação com a versão estável anterior:
| Métrica | v2026.5.27 |
v2026.5.28 |
Diferença |
|---|---|---|---|
| Turno a frio do agente | 2.231ms | 1.908ms | 14,5% menor |
| Turno a quente do agente | 2.226ms | 1.870ms | 16,0% menor |
| Pico de RSS do agente | 649,0MB | 581,0MB | 10,5% menor |
Ocupação da instalação
| Métrica | Linha de base | v2026.5.28 |
Diferença |
|---|---|---|---|
Tamanho da instalação desde o pico de 2026.5.22 |
1.020,6MB | 361,7MiB | 64,6% menor |
Tamanho da instalação desde a versão mais recente 2026.5.27 |
767,1MiB | 361,7MiB | 52,8% menor |
Dependências desde a máxima mensal de 2026.2.26 |
645 | 300 | 53,5% menor |
Dependências desde a versão mais recente 2026.5.27 |
371 | 300 | 19,1% menor |
openclaw/node_modules aninhado desde 2026.5.22 |
911,8MB | 259,7MiB | 71,5% menor |
openclaw/node_modules aninhado desde 2026.5.27 |
656,1MiB | 259,7MiB | 60,4% menor |
Tamanho do pacote npm
| Versão | Tarball compactado | Pacote descompactado | Arquivos | Observações |
|---|---|---|---|---|
2026.1.30 |
12,8MB | 33,5MB | 4.607 | pacote inicial após a mudança de marca |
2026.2.26 |
23,6MB | 82,9MB | 10.125 | crescimento de funcionalidades |
2026.3.31 |
43,3MB | 182,6MB | 21.037 | ponto máximo do tamanho do pacote |
2026.4.29 |
22,9MB | 74,6MB | 9.309 | redução do pacote visível |
2026.5.12 |
23,4MB | 80,1MB | 12.035 | grande separação de plugins externos |
2026.5.22 |
17,2MB | 76,9MB | 12.386 | documentação/recursos excluídos do pacote |
2026.5.27 |
17,8MB | 79,0MB | 12.509 | pacote estável anterior |
2026.5.28 |
17,9MB | 81,0MB | 9.082 | pacote estável mais recente |
2026.5.12 é o marco visível da extração de plugins no changelog: Amazon Bedrock, Bedrock Mantle, Slack, sandbox OpenShell, Anthropic Vertex, Matrix e WhatsApp saíram do caminho de dependências do núcleo, para que seus cones de dependências sejam instalados com esses plugins, em vez de em todas as instalações do núcleo.
Resumo dos turnos do agente Kova
A sequência estável de abril contém duas histórias diferentes. O início de abril era lento, mas reconhecível. O fim de abril se tornou um precipício de regressões. A v2026.5.2 é o ponto em que a faixa do provedor simulado entra pela primeira vez no intervalo de 3 a 5 segundos e começa a passar consistentemente na varredura fornecida.
Contexto publicado anteriormente:
| Versão | Kova | Turno a frio | Turno a quente | Pico de RSS do agente |
|---|---|---|---|---|
v2026.4.10 |
FALHA | 11.031ms | 7.962ms | 679,0MB |
v2026.4.12 |
FALHA | 11.965ms | 8.289ms | 713,5MB |
v2026.4.14 |
FALHA | 9.819ms | 7.458ms | 686,2MB |
v2026.4.20 |
FALHA | 22.314ms | 18.811ms | 810,8MB |
v2026.4.22 |
FALHA | 9.630ms | 7.459ms | 743,0MB |
Varredura fornecida:
| Versão | Kova | Turno a frio | Turno a quente | Pico de RSS do agente |
|---|---|---|---|---|
v2026.4.23 |
FALHA | 47.847ms | 8.010ms | 1.082,7MB |
v2026.4.24 |
FALHA | 48.264ms | 25.483ms | 996,0MB |
v2026.4.25 |
FALHA | 81.080ms | 59.172ms | 1.113,9MB |
v2026.4.26 |
FALHA | 76.771ms | 54.941ms | 1.140,8MB |
v2026.4.27 |
FALHA | 60.902ms | 33.699ms | 1.156,0MB |
v2026.4.29 |
FALHA | 94.031ms | 57.334ms | 3.613,7MB |
v2026.5.2 |
PASSOU | 3.897ms | 3.610ms | 613,7MB |
v2026.5.7 |
PASSOU | 3.923ms | 3.693ms | 654,1MB |
v2026.5.12 |
PASSOU | 7.248ms | 6.629ms | 834,8MB |
v2026.5.18 |
PASSOU | 3.301ms | 2.913ms | 630,3MB |
v2026.5.20 |
PASSOU | 3.413ms | 2.952ms | 643,2MB |
v2026.5.22 |
PASSOU | 4.494ms | 4.093ms | 654,3MB |
v2026.5.26 |
PASSOU | 2.626ms | 2.282ms | 660,4MB |
v2026.5.27-beta.1 |
PASSOU | 2.575ms | 2.217ms | 635,3MB |
v2026.5.27 |
PASSOU | 2.231ms | 2.226ms | 649,0MB |
v2026.5.28 |
PASSOU | 1.908ms | 1.870ms | 581,0MB |
Sondagens de código-fonte
As sondagens de código-fonte foram ignoradas em 17 referências antigas bem-sucedidas porque essas árvores de código-fonte ainda não tinham os pontos de entrada de sondagem necessários. As métricas dos turnos do agente ainda existem para essas referências.
Pontos representativos das sondagens de código-fonte:
| Versão | readyz padrão p50 |
readyz com 50 plugins p50 |
Saúde da CLI p50 | RSS máximo do 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 |
O pico de saúde da CLI na v2026.5.22 é visível nesta tabela, embora a faixa de turnos do agente ainda tenha passado. Mantenha as sondagens de código-fonte ao investigar regressões específicas da CLI ou do Gateway.
Auditoria da ocupação da instalação
As amostras de dependências usam uma versão estável por mês, além do evento de introdução do shrinkwrap em 2026.5.22 e da versão mais recente, 2026.5.28.
| Ponto | Dependências instaladas | Instalação nova | Pacote OpenClaw | openclaw/node_modules aninhado |
Shrinkwrap raiz | Comportamento da instalação do Canvas |
|---|---|---|---|---|---|---|
Jan. 2026.1.30 |
605 | 438.4MB | 45.8MB | 2.4MB | não | wrapper de nível superior + darwin-arm64 |
Fev. 2026.2.26 |
645 | 575.7MB | 110.1MB | 3.5MB | não | wrapper de nível superior + darwin-arm64 |
Mar. 2026.3.31 |
438 | 584.1MB | 234.8MB | 0MB | não | wrapper de nível superior + darwin-arm64 |
Abr. 2026.4.29 |
392 | 335.0MB | 97.4MB | 0MB | não | nenhum instalado |
2026.5.22 |
401 | 1,020.6MB | 1,020.4MB | 911.8MB | sim | aninhados: todos os 12 pacotes @napi-rs/canvas |
Maio 2026.5.26 |
371 | 767.5MB | 767.4MB | 656.4MB | sim | aninhados: todos os 12 pacotes @napi-rs/canvas |
2026.5.27 |
371 | 767.1MiB | 766.9MiB | 656.1MiB | sim | aninhados: todos os 12 pacotes @napi-rs/canvas |
Mais recente 2026.5.28 |
300 | 361.7MiB | 361.6MiB | 259.7MiB | sim | nenhum instalado |
Limite do shrinkwrap
A versão 2026.5.20 foi lançada sem shrinkwrap raiz e sem uma grande árvore de
dependências aninhada do OpenClaw. A versão 2026.5.22 introduziu o shrinkwrap
raiz e instalou 911.8MB no openclaw/node_modules aninhado. A versão
2026.5.28 mantém o shrinkwrap e ainda instala 259.7MiB no
openclaw/node_modules aninhado, mas não instala mais nenhum pacote
@napi-rs/canvas na auditoria local de instalação nova.
A inspeção do tarball publicado confirma o limite:
| Versão | Publicada como estável? | npm-shrinkwrap.json raiz |
Observações |
|---|---|---|---|
2026.5.20 |
sim | não | última versão estável antes do shrinkwrap |
2026.5.21 |
não | n/d | nenhuma versão estável no npm |
2026.5.22 |
sim | sim | shrinkwrap introduzido |
2026.5.23 |
não | n/d | nenhuma versão estável no npm |
2026.5.24 |
não | n/d | nenhuma versão estável no npm |
2026.5.25 |
não | n/d | nenhuma versão estável no npm |
2026.5.26 |
sim | sim | árvore de dependências aninhada ainda presente |
2026.5.27 |
sim | sim | árvore de dependências aninhada ainda presente |
2026.5.28 |
sim | sim | árvore de dependências aninhada muito menor |
A distinção importante: o shrinkwrap em si não é o problema.
A v2026.5.28 ainda inclui o shrinkwrap raiz. O problema era a estrutura do
pacote que fazia o npm materializar uma grande árvore de dependências aninhada
do OpenClaw e todos os 12 pacotes de plataforma @napi-rs/canvas. A árvore
aninhada é menor na v2026.5.28, e a distribuição do Canvas para todas as
plataformas não aparece mais na auditoria local.
Para uma explicação em linguagem simples sobre shrinkwrap e as verificações de pacotes destinadas a mantenedores, consulte shrinkwrap do npm.
Interpretação da cadeia de suprimentos
A contagem de dependências é uma métrica de segurança operacional, não apenas uma métrica de tamanho da instalação. Cada pacote amplia o conjunto de mantenedores, tarballs, atualizações transitivas, binários nativos opcionais e comportamentos durante a instalação nos quais os operadores precisam confiar.
A direção da limpeza é:
- manter recursos pesados e opcionais fora da instalação padrão do núcleo
- fazer com que os pacotes de plugins sejam responsáveis por seu próprio grafo de dependências de runtime
- evitar reparos do gerenciador de pacotes durante o runtime na inicialização do Gateway
- preservar instalações determinísticas sem provocar a materialização de pacotes nativos para todas as plataformas
- manter scripts de instalação desativados nos fluxos de aceitação e medição de pacotes
- detectar árvores de dependências aninhadas e explosões de dependências nativas opcionais antes da publicação
Documentação relacionada: