Pular para o conteúdo principal
O ChatCLI implementa um sistema de recuperacao automatica de contexto que lida com dois tipos de falha comuns em sessoes longas: overflow da janela de contexto (“prompt too long”) e limite de tokens de saida. Quando a API rejeita uma requisicao por excesso de tamanho, o sistema aplica estrategias progressivamente mais agressivas para recuperar a sessao sem perder a conversa.

Recuperacao de Context Overflow

Quando a API retorna um erro de “context too long”, o ChatCLI aplica ate 3 niveis de recuperacao antes de desistir:
Primeira tentativa: reduz os limites de orcamento pela metade e limpa desalinhamentos.Acoes:
  • Repara pareamento de tool results (remove orfaos, injeta sinteticos)
  • Reduz DefaultTurnBudgetChars e DefaultPerResultMaxChars para 50% dos valores originais
  • Aplica enforcement de orcamento com limites reduzidos
  • Trunca mensagens longas do assistente para 5.000 chars
Os limites originais sao restaurados apos a aplicacao. Apenas o historico atual e afetado pela reducao.

Deteccao de Erro

O sistema reconhece multiplas formas de erro de overflow:
Mensagem de ErroProvedor
context length exceededAnthropic
prompt is too longOpenAI
request too largeVarios
max_tokens exceedVarios
input too longGoogle
token limitGenerico

Escalacao de Max Output Tokens

Quando o modelo para de gerar por atingir o limite de max_tokens, o ChatCLI pode escalar automaticamente:
TentativaAcao
1aDobra o max_tokens atual (ate o cap do provedor)
2aDobra novamente (ate o cap do provedor)
3a+Para de escalar, retorna conteudo parcial

Mensagem de Continuacao

Quando o modelo e interrompido por limite de tokens, o ChatCLI injeta uma mensagem de continuacao:
Your response was cut off at the token limit.
Resume DIRECTLY from where you stopped — do not repeat any content.
Continue the implementation or explanation from the exact point of interruption.
A mensagem instrui o modelo a continuar de onde parou, evitando repeticao de conteudo ja gerado.

Configuracao

Variavel de AmbienteDescricaoDefault
CHATCLI_MAX_RECOVERY_ATTEMPTSTentativas maximas de recuperacao de contexto3
CHATCLI_MAX_TOKEN_ESCALATIONSEscalacoes maximas de max_tokens2
CHATCLI_EMERGENCY_KEEP_MESSAGESMensagens mantidas no truncamento de emergencia10

Ratio de Orcamento Agressivo

No nivel 1, os limites de orcamento de tool results sao multiplicados por 0.5 (50%). Isso significa:
ParametroNormalNivel 1 Recuperacao
Budget por turno200.000 chars100.000 chars
Max por resultado20.000 chars10.000 chars

Fluxo de Recuperacao

API retorna erro "context too long"

  ├─ Tentativa 1: Orcamento agressivo (50%) + pairing cleanup
  │   └─ Reenvia para API
  │       ├─ Sucesso → continua normalmente
  │       └─ Falha → proxima tentativa

  ├─ Tentativa 2: Emergency truncate (system + ultimas 10 msgs)
  │   └─ Reenvia para API
  │       ├─ Sucesso → continua com historico reduzido
  │       └─ Falha → proxima tentativa

  └─ Tentativa 3: Nuclear truncate (system + ultimas 4 msgs)
      └─ Reenvia para API
          ├─ Sucesso → continua com historico minimo
          └─ Falha → erro reportado ao usuario
Apos o truncamento nuclear (nivel 3), o modelo perde todo o contexto da conversa anterior. Apenas as ultimas 2 trocas sao mantidas. Use /compact proativamente para evitar chegar a esse ponto.

Interacao com Outros Sistemas

A recuperacao de contexto trabalha em conjunto com:

Tool Result Budget

O orcamento de resultados e a primeira linha de defesa. A recuperacao ativa quando o orcamento nao foi suficiente.

Microcompactacao

A compactacao progressiva reduz o crescimento do contexto ao longo do tempo.

Controle de Conversa

O comando /compact e a forma proativa de prevenir overflow.

Cost Tracking

Monitore o uso de contexto para antecipar quando /compact sera necessario.