openclaw-performance

Trabalho de performance no OpenClaw: fluxo lento ou pesado (latência, CPU, memória, SQL, RPC, renderizações), escrevendo ou revisando um PR de perf, ou adicionando um cache. Conte o trabalho, delete o desperdício primeiro, cache por último.

O que é openclaw-performance?

Esta skill descreve uma metodologia rigorosa para otimização de performance no OpenClaw. Ela enfatiza que grandes ganhos vêm da eliminação de desperdício (trabalho desnecessário para uma requisição) e não de acelerar o trabalho existente, com cache sendo o último recurso. O fluxo de trabalho é dividido em quatro etapas principais: (1) Medir, definindo uma regra de aceitação no PR antes de qualquer execução, com workloads e métricas específicas para cada fluxo (ex: inicialização do CLI, startup do Gateway, turnos de chat, etc.); (2) Encontrar desperdício, analisando operações contadas (consultas SQL, RPCs, leituras de arquivo, renders) e identificando padrões comuns como trabalho prematuro no caminho crítico, recomputação por linha, re-verificação de estado já admitido, etc.; (3) Corrigir na ordem correta: deletar primeiro, depois uma vez no proprietário, carregar fato preparado, agrupar trabalhos independentes, e apenas por último usar cache com justificativa escrita; (4) Publicar, re-executando o workload da etapa 1 e garantindo que todas as métricas de usuário melhorem ou permaneçam estáveis, com a evidência (tabela antes/depois) no próprio PR. A skill é útil para qualquer desenvolvedor trabalhando em performance no OpenClaw, seja em CLI, Gateway, UI de Controle, ou concorrência com SQLite.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/openclaw-performance

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

OpenClaw Performance

Desperdício é o trabalho que uma requisição não precisa. Grandes ganhos de velocidade vêm de eliminar desperdício, não de fazer o mesmo trabalho mais rápido. Um cache é o último recurso: ele esconde o desperdício até que sua chave, invalidação ou taxa de acerto quebre, e o desperdício retorne.

1. Medir

Escreva a regra de aceitação no PR antes da primeira execução: fluxo, workload, métrica, frio ou quente, amostras, e a mudança que conta como vitória ou regressão.

FluxoWorkload comprometido
Inicialização do CLIpnpm test:startup:bench (:check contém o orçamento)
Inicialização / reinicialização do Gatewayscripts/bench-gateway-startup.ts, scripts/bench-gateway-restart.ts, scripts/perf/post-restart-burst-measure.ts
Turno de chat, quadros por turnoscripts/bench-channel-turn.mts, scripts/perf/transcript-broadcast-measure.ts
Carga fria da UI de Controlescripts/bench-control-ui-cold-load.ts, pnpm ui:check-performance (:base compara)
Lista de sessões, forma multi-agentescripts/perf/team-shape-fixture.ts, src/gateway/session-list-viewers.perf.test.ts
Concorrência, estado SQLitescripts/bench-gateway-concurrency.ts, pnpm test:sqlite:perf
  • Conte primeiro: operações por ação (consultas SQL, RPCs e quadros, leituras de arquivo, cargas de catálogo ou registro, spawns, renderizações) antes do tempo de parede. As contagens permanecem estáveis em um host carregado. Uma contagem que deveria ser zero é o bug.
  • Fluxo real: um Gateway isolado no head sob teste, transporte real, o caminho lento incluído. Um Gateway mockado, um build desatualizado ou um servidor de desenvolvimento mede outra coisa.
  • Amostras: linha de base e candidato intercalados (ABAB), pelo menos 5 cada, frio e quente separados; mediana e p95 com dispersão, executados serialmente, carga do host registrada.
  • Repetível: apenas scripts comprometidos contam; estenda um existente quando nenhum se encaixa.
  • Perfil: node --cpu-prof por thread, ou um trace de performance do navegador, no caminho quente.

Concluído quando o fluxo tem um workload comprometido, uma tabela de linha de base e uma regra escrita.

2. Encontrar desperdício

Pergunte para cada operação contada: esta requisição precisa disso? Desperdícios recorrentes do OpenClaw:

  • Trabalho prematuro no caminho crítico: uma busca de registro importou o carregador de plugins (#133518, 47,07 s → 10,36 s); runtimes opcionais carregados na inicialização (#119374).
  • Recomputação por linha ou por chamada: uma leitura síncrona por linha arquivada (#156665, 56.700 leituras → 0); padrões de log resolvidos por quadro (#150042, 539 → 17 ms por 10.000 quadros).
  • Re-verificação de estado já admitido: verificações de esquema, admissão ou frescor em handles quentes (#166102, #172676; 14 PRs na cadeia de admissão SQLite).
  • Re-escaneamento completo por delta transmitido: cada token reprocessava a resposta inteira (#158526, 5.342 → 1 ms CPU em 256 KiB).
  • Re-lendo sua própria escrita: dois backups de banco de dados por busca (#161551, 772,8 → 7,7 ms); Doctor re-escaneava e fazia backup do que acabava de verificar (#174665, ~26 → 3,0 s).
  • Construções repetidas de catálogo ou registro: uma reconstrução de catálogo por agente na inicialização (#116261, 24,9 → 5,0 s); reconstruções por falta ou TTL (#127178, #167008).
  • Esperando por dados opcionais: a página de Uso esperava por planos de provedor e re-tentava leituras não relacionadas (#176358).
  • Cópias defensivas e encapsulamento: structuredClone por turno (#172940, 1,685 MiB → 0); encapsulamento de limite por valor (#163818, 11.571 → 500 ns/evento).
  • Spawn ou fan-out por chamada: um processo filho por resolução (#155779, 100 → 0).
  • Cascatas de renderização e cargas completas: uma renderização por atualização (#159400, 250 → 79); linhas completas reenviadas para um delta (#165404, 21,75 → 0,95 MB).

Concluído quando cada contagem dominante traça para o código que a emite, com um sim ou não em "necessário".

3. Corrigir nesta ordem

  1. Delete o desperdício. Deleções raramente voltam; uma deleção falhou removeu uma guarda, então mantenha toda verificação que protege um contrato e prove que o contrato ainda se mantém.
  2. Uma vez no proprietário: chamadores consomem o fato registrado do proprietário.
  3. Carregue o fato preparado pelo caminho quente.
  4. Agrupe trabalho independente, e prove que o agrupamento mantém quadros, caudas de latência e inicialização a frio estáveis: coalescência foi revertida três vezes (#162560, #173901, #175092).
  5. Cache, com uma razão escrita do porquê as etapas 1–4 não se aplicam. Siga a "Identidade do cache" raiz, invalide a partir das escritas do proprietário, limite o tamanho, e adicione um teste de contagem de trabalho intercalado. Três de quatro re-correções de cache foram falhas silenciosas: leitores se removendo mutuamente (#115369 → #174741), um orçamento que triturou (#149773 → #149879).

Uma movimentação de worker ou um adiamento realoca custo; conte trabalho da thread principal e total ambos.

Concluído quando o desperdício desapareceu das contagens, ou o PR diz qual etapa parou e por quê.

4. Publicar

  • Re-execute o workload da etapa 1 na linha de base e no candidato sob a mesma regra.
  • Toda métrica voltada ao usuário melhora ou permanece estável: latência, p95/p99, quadros, inicialização a frio, CPU, memória, contagens. Uma métrica pior precisa da aceitação explícita do proprietário no PR. Uma mudança de 20% em uma célula é uma parada, nunca "dentro da dispersão": cinco de seis PRs de performance revertidos mostraram sua regressão em seu próprio corpo.
  • Reverta mudanças sem um ganho mensurável.
  • A evidência vive no PR, não em novos testes: as contagens antes/depois são a evidência. Estenda o teste de contagem de trabalho existente de um fluxo apenas quando este desperdício já voltou antes; test-audit é dono do valor do teste.
  • Evidência do PR: comando do workload, regra de aceitação, tabela antes/depois (contagens e tempos, mediana e p95, amostras), desperdício removido, e qualquer métrica que se moveu na direção errada.

Concluído quando a tabela atende a regra escrita na etapa 1.

Relacionados

Velocidade do conjunto de testes: openclaw-test-performance. Crescimento do heap de teste: openclaw-test-heap-leaks. Capacidade do CI: openclaw-ci-limits.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills when explicitly requested; install, verify, update, uninstall, publish, or sync skills.

Habilidades Relacionadas