Sessão OpenClaw queima 21,5 milhões de tokens em um dia, estratégias de otimização reduzem custos

iconOdaily
Compartilhar
Share IconShare IconShare IconShare IconShare IconShare IconCopy
AI summary iconResumo

expand icon
Uma sessão recente do OpenClaw queimou 21,5 milhões de tokens em um dia, principalmente devido à repetição de prefixo de cache, e não à saída do usuário ou do modelo. Mais de 79% do uso de tokens veio de leituras de cache, com grandes saídas intermediárias, como resultados de ferramentas e instantâneos de navegador, sendo reproduzidos. O relatório destaca estratégias de otimização de gás: evite grandes saídas de ferramentas em contexto de longo prazo, configure mecanismos de compactação e reduza texto de raciocínio persistente. Essas etapas visam reduzir os custos de tokens melhorando o gerenciamento de contexto em sistemas de agentes.

Por que minhas sessões do OpenClaw queimaram 21,5 milhões de tokens em um dia (e o que realmente resolveu)

Autor original: MOSHIII

Compilação original: Peggy, BlockBeats

Nota do editor: No momento em que os aplicativos de Agent estão se tornando amplamente difundidos, muitas equipes observaram um fenômeno aparentemente paradoxal: o sistema opera normalmente, mas o custo dos tokens aumenta continuamente e silenciosamente. Este artigo, ao analisar uma carga de trabalho real do OpenClaw, descobriu que a causa do aumento de custos geralmente não está nas entradas do usuário nem nas saídas do modelo, mas sim no negligenciado replay de contexto em cache (cached prefix replay). O modelo lê repetidamente grandes contextos históricos em cada chamada, gerando um consumo massivo de tokens.

O artigo combina dados de sessão específicos para mostrar como grandes artefatos intermediários, como saídas de ferramentas, instantâneos de navegador e logs JSON, são continuamente gravados no contexto histórico e lidos repetidamente no ciclo do agente.

Através deste caso, o autor apresenta uma abordagem clara de otimização: desde o design da estrutura de contexto, gerenciamento da saída de ferramentas até a configuração do mecanismo de compaction. Para desenvolvedores que estão construindo sistemas de Agentes, isso não é apenas um registro de diagnóstico técnico, mas também um guia prático para economizar dinheiro.

The following is the original text:

Analisando uma carga de trabalho real do OpenClaw, identifiquei um padrão que acho que muitos usuários de Agent reconhecerão:

O uso do token parece muito "ativo"

A resposta também parece normal

Mas o consumo de tokens experimentou um crescimento explosivo súbito

Abaixo está a análise estrutural, a causa raiz e o caminho de correção praticável para esta análise.

TL;DR

O maior fator de custo não é a mensagem do usuário ser muito longa, mas sim a grande quantidade de prefixos em cache (cached prefix) sendo repetidamente retransmitidos.

A partir dos dados da sessão:

Total de tokens: 21.543.714

cacheRead: 17.105.970 (79,40%)

4.345.264 (20,17%)

saída: 92.480 (0,43%)

Em outras palavras: o custo da maioria das chamadas não está realmente em processar novas intenções do usuário, mas em ler repetidamente grandes contextos históricos.

O momento de “Espere, como isso aconteceu?”

Eu originalmente pensei que o alto uso de token vinha de: prompts de usuário muito longos, grande quantidade de saída gerada ou chamadas de ferramentas caras.

Mas o padrão realmente dominante é:

Centenas a milhares de tokens

cacheRead: 170.000 a 180.000 tokens por chamada

Ou seja, o modelo lê repetidamente o mesmo prefixo estável e enorme em cada rodada.

Intervalo de dados

Analisiei os dados em dois níveis:

1. Logs de execução (runtime logs)

2. Transcrições da sessão

É importante salientar que:

Os logs de execução são usados principalmente para observar sinais de comportamento (como reinícios, erros e problemas de configuração).

Estatísticas precisas de tokens provenientes do campo usage do JSONL da sessão

Script utilizado:

scripts/session_token_breakdown.py

scripts/session_duplicate_waste_analysis.py

Arquivo de análise gerado:

tmp/session_token_stats_v2.txt

tmp/session_token_stats_v2.json

tmp/session_duplicate_waste.txt

tmp/session_duplicate_waste.json

tmp/session_duplicate_waste.png

Onde o token é realmente consumido?

1) Sessão concentrada

Uma sessão consumiu muito mais do que as outras:

570587c3-dc42-47e4-9dd4-985c2a50af86: 19.204.645 tokens

E depois uma queda acentuada e clara:

ef42abbb-d8a1-48d8-9924-2f869dea6d4a: 1.505.038

ea880b13-f97f-4d45-ba8c-a236cf6f2bb5: 649.584

2) Comportamento concentrado

Os tokens vêm principalmente de:

toolUse:16,372,294

parar: 5.171.420

O problema está principalmente na cadeia de chamadas de ferramentas em ciclo, e não na conversa normal.

3) Concentração de tempo

Os picos de token não são aleatórios, mas concentrados em alguns períodos horários:

2026-03-08 16:00: 4.105.105

2026-03-08 09:00: 4.036.070

2026-03-08 07:00: 2.793.648

O que há no grande prefixo de cache?

Não é o conteúdo da conversa, mas principalmente o grande subproduto:

Grande bloco de dados toolResult

Longas trilhas de raciocínio / pensamento

Grande snapshot JSON

Lista de arquivos

Coleta de dados pelo navegador

Registro da conversa do Subagente

No maior session, a quantidade de caracteres é aproximadamente:

366.469 caracteres

assistant:thinking:331,494 caracteres

assistant:toolCall:53,039 caracteres

Uma vez que esses conteúdos forem mantidos no contexto histórico, cada chamada subsequente poderá lê-los novamente por meio do prefixo cache.

Exemplos específicos (do arquivo de sessão)

Blocos de contexto de grande volume apareceram repetidamente no seguinte local:

sessions/570587c3-dc42-47e4-9dd4-985c2a50af86.jsonl:70

Arquivo de log JSON de grande gateway (aproximadamente 37 mil caracteres)

sessions/570587c3-dc42-47e4-9dd4-985c2a50af86.jsonl:134

Captura do navegador + encapsulamento seguro (aproximadamente 29.000 caracteres)

sessions/570587c3-dc42-47e4-9dd4-985c2a50af86.jsonl:219

Grande lista de arquivos de saída (aproximadamente 41 mil caracteres)

sessions/570587c3-dc42-47e4-9dd4-985c2a50af86.jsonl:311

session/status instantâneo de status + estrutura de prompt grande (aproximadamente 30 mil caracteres)

"Desperdício de conteúdo repetido" vs "Carga de retransmissão de cache"

Também medir a proporção de conteúdo repetido dentro de uma única chamada:

Proporção de repetição aproximada: 1,72%

Exists, but it's not the main issue.

A verdadeira questão é que o volume absoluto do prefixo de cache é muito grande

A estrutura é: grande contexto histórico, leitura reiniciada a cada chamada, com apenas poucas entradas novas adicionadas acima

Portanto, o foco da otimização não é a remoção de duplicatas, mas sim o design da estrutura do contexto.

Por que o ciclo do Agent é particularmente propenso a esse problema?

Três mecanismos se sobrepõem:

1. Grande quantidade de saídas de ferramentas foi gravada no contexto histórico

2. O ciclo da ferramenta gerará muitas chamadas com intervalos curtos.

3. A alteração do prefixo é mínima → o cache será lido novamente a cada vez

Se a compactação do contexto não for acionada de forma estável, o problema se amplificará rapidamente.

As estratégias de correção mais importantes (classificadas por impacto)

P0 — Não insira saídas de ferramentas enormes no contexto longo

Para saída de ferramenta ultra grande:

  • Manter resumo + caminho/ID de referência
  • Gravar payload original no arquivo artifact
  • Não mantenha o texto original completo no histórico do chat

Restrições prioritárias para estas categorias:

  • JSON grande
  • Lista longa de catálogo
  • Captura completa do navegador
  • Transcrição completa do Sub Agent

P1—Garantir que o mecanismo de compactação esteja realmente ativo

Nestes dados, problemas de compatibilidade de configuração apareceram várias vezes: chave de compactação inválida

Isso desativará silenciosamente o mecanismo de otimização.

Prática correta: use apenas configurações compatíveis com a versão

Em seguida, verifique:

openclaw doctor --fix

E verifique os logs de inicialização para confirmar que a compactação foi aceita.

P1—Reduzir a persistência de texto de reasoning

Evite que textos de raciocínio longos sejam repetidamente reproduzidos

Em ambiente de produção: salve um resumo curto, em vez do raciocínio completo

P3 — Melhorar o design do cache de prompts

O objetivo não é maximizar o cacheRead. O objetivo é usar o cache em prefixos compactos, estáveis e de alto valor.

Sugestão:

  • Coloque as regras estáveis no prompt do sistema
  • Não coloque dados instáveis no prefixo estável
  • Evite injetar grandes volumes de dados de debug a cada rodada

Plano de stop-loss prático (se eu precisasse lidar com isso amanhã)

1. Encontre a sessão com a maior proporção de cacheRead

2. Execute /compact on runaway session

3. Adicionar truncagem + artificalização à saída da ferramenta

4. Execute token statistics again after each modification

Monitore quatro KPIs principais:

cacheRead / totalTokens

toolUse avgTotal/call

Número de chamadas >= 100k tokens

Maior porcentagem de sessão

Sinal de sucesso

Se a otimização entrar em vigor, você deverá ver:

Chamadas de token reduzidas em mais de 100 mil

Proporção de cacheRead diminuiu

Peso da chamada toolUse reduzido

Redução do domínio de um único session

Se esses indicadores não mudaram, significa que sua estratégia de contexto ainda está muito flexível.

Comandos para reproduzir o experimento

python3 scripts/session_token_breakdown.py 'sessions' \

--include-deleted \

--top 20 \

--limiar-de-outlier 120000 \

--json-out tmp/session_token_stats_v2.json \

> tmp/session_token_stats_v2.txt

python3 scripts/session_duplicate_waste_analysis.py 'sessions' \

--include-deleted \

--top 20 \

--png-out tmp/session_duplicate_waste.png \

--json-out tmp/session_duplicate_waste.json \

> tmp/session_duplicate_waste.txt

Conclusão

Se o seu sistema Agent parecer estar funcionando normalmente, mas os custos estiverem aumentando continuamente, verifique primeiro este problema: você está pagando por novas inferências ou por uma grande repetição de contextos antigos?

No meu caso, a maior parte do custo vem realmente da reprodutibilidade do contexto.

Assim que você perceber isso, a solução torna-se clara: controle rigorosamente os dados que entram no contexto longo.

Link original

Aviso legal: as informações nesta página podem ter sido obtidas de terceiros e não refletem necessariamente os pontos de vista ou opiniões da KuCoin. Este conteúdo é fornecido apenas para fins informativos gerais, sem qualquer representação ou garantia de qualquer tipo, nem deve ser interpretado como aconselhamento financeiro ou de investimento. A KuCoin não é responsável por quaisquer erros ou omissões, ou por quaisquer resultados do uso destas informações. Os investimentos em ativos digitais podem ser arriscados. Avalie cuidadosamente os riscos de um produto e a sua tolerância ao risco com base nas suas próprias circunstâncias financeiras. Para mais informações, consulte nossos termos de uso e divulgação de risco.