Aula 06 · memória

O contexto está completo, aprenda a cortar

“O agente pode esquecer estrategicamente e continuar trabalhando para sempre.” Esquecimento estratégico = capacidades de engenharia.

⏱ ~12 min · 📝 3 componentes interativos · 🧑‍💻 Baseado em shareAI-lab · s06_context_compact.py

Por que compacto?

Se o agente for executado por um longo período, messages[] se expandirá: cada read_file retornará milhares de tokens, cada bash retornará centenas e cada rodada de diálogo também retornará o texto de pensamento do modelo. Após 50 rodadas, o contexto pode ser preenchido com mais de 100K. Duas consequências:

  • Encontrando o limite superior do modelo: ele entra em colapso quando o tamanho da janela é atingido ou o preço aumenta linearmente a cada chamada de API.
  • Diluição de atenção: agora que a tarefa em questão está afogada em tool_results irrelevantes de 30 rodadas atrás, o modelo começa a perder o foco.

A ideia de s06: deixar o agente esquecer ativamente o conteúdo sem importância, mas reter os estados-chave. Mecanismo de três camadas, do leve ao pesado.

Camada 1 · micro_compact (funciona silenciosamente a cada rodada)

O nível mais barato. Execute-o antes de cada chamada do LLM e substitua mais de três tool_results antigos por espaços reservados:

# Avançando a partir da 10ª rodada, a maioria dos tool_results se tornam:
{
  "tipo": "tool_result",
  "tool_use_id": "tolu_01A",
  "content": "[Anterior: bash usado]" # Reduzido de milhares de caracteres para dezenas
}

      

Há um caso especial: o resultado de read_file não está compactado. Por que? Como a saída de read é um material de referência, se você pressionar o modelo terá que lê-lo novamente, o que é mais caro.

PRESERVE_RESULT_TOOLS = {"read_file"} # Nunca compactar

Olhe para micro_compact e pressione turn para ver os resultados antigos

As etapas a seguir simulam 10 rodadas de interação e permitem que o micro_compact seja executado uma vez antes de cada rodada. Veja que o antigo tool_result em messages[] se torna [Anterior: ...], mas os 3 últimos permanecem os mesmos.

Camada 2 · auto_compact (acionado quando o limite é excedido)

Mesmo que o micro continue funcionando, ele ainda explodirá quando ficar cansado até um certo tamanho. s06 define um limite (padrão 50000 token):

  1. Estime o número de tokens len(str(messages)) // 4 (aproximado, mas útil).
  2. Excede o limite → Escreva a transcrição completa em .transcripts/transcript_TIMESTAMP.jsonl (deixe o final).
  3. Peça ao LLM para escrever um resumo de toda a conversa.
  4. Substitua todas as mensagens por um "[compactado] RESUMO...".

O custo é óbvio: o resultado específico da ferramenta e o tom de conversação são perdidos, restando apenas o contorno. Mas o agente pode continuar fazendo, que é o principal benefício.

Camada 3 · Ajuste o modelo você mesmo, ferramenta compacta

auto_compact é acionado automaticamente pelo chicote e não é conhecido pelo modelo. A camada 3 faz o oposto: forneça ao modelo uma ferramenta compactar e deixe-o solicitar compactação ativamente - por exemplo, se achar que a exploração anterior é inútil e um novo estágio precisa ser iniciado.

Chamada de modelo:

tool_use("compact", focus="manter as decisões de design da API")

O acionamento é igual ao automático, mas pode usar um parâmetro focus para informar no que focar ao resumir. É muito prático em combate real - o modelo sabe quais são as “pequenas tarefas concluídas”, o que é mais preciso do que a heurística do arnês.

Qual camada é apropriada? pergunta verdadeira ou falsa

Os cenários a seguir determinam qual acionamento de micro / automático / manual é mais razoável.

Interativo

Widget 1 · Micro Compacto · Veja tool_result Press turn Envelhecimento

Passo a passo e observe como o antigo tool_result é substituído por [Anterior: usado X], enquanto os 3 últimos permanecem intactos. read_file nunca é compactado (destacado em verde).

Turn: 0 · Tokens: ~0
Interativo

Widget 2 · Simulador de Limite · Qual camada é acionada após o token subir?

Arraste o controle deslizante para alterar o número de tokens e ver qual das três camadas está ativa.

3000
Interativo

Widget 3 · Qual camada é apropriada · 6 questões de julgamento de cena

Escolha micro/automático/manual para cada cena e fale sobre quando cada um é adequado para acionamento.

答对 0 / 6