Lección 06 · memoria

El contexto está completo, aprende a cortar.

"El agente puede olvidarse estratégicamente y seguir trabajando para siempre". Olvido estratégico = capacidades de ingeniería.

⏱ ~12 min · 📝 3 widgets interactivos · 🧑‍💻 Basado en shareAI-lab · s06_context_compact.py

¿Por qué compacto?

Si el agente se ejecuta durante mucho tiempo, messages[] se expandirá: cada read_file devolverá miles de tokens, cada bash devolverá cientos y cada ronda de diálogo también devolverá el texto de pensamiento del modelo. Después de 50 rondas, el contexto se puede llenar a más de 100K. Dos consecuencias:

  • Encontrar el límite superior del modelo: colapsa cuando se alcanza el tamaño de la ventana o el precio aumenta linealmente con cada llamada a la API.
  • Dilución de la atención: ahora que la tarea en cuestión está ahogada en resultados de herramientas irrelevantes de hace 30 rondas, el modelo comienza a perder el foco.

La idea del s06: permitir que el agente olvide activamente contenido sin importancia pero conserve los estados clave. Mecanismo de tres capas, de ligero a pesado.

Capa 1 · micro_compact (se ejecuta silenciosamente en cada ronda)

El nivel más barato. Ejecútelo antes de cada llamada de LLM y reemplace más de 3 resultados de herramientas antiguos con marcadores de posición:

# A partir de la décima ronda, la mayoría de los resultados de herramientas se convierten en:
{
  "tipo": "tool_result",
  "tool_use_id": "tolu_01A",
  "content": "[Anterior: bash usado]" # Reducido de miles de caracteres a docenas
}

Existe un caso especial: el resultado de read_file no está comprimido. ¿Por qué? Debido a que el resultado de lectura es un material de referencia, si presiona el modelo, tendrá que leerlo nuevamente, lo cual es más costoso.

PRESERVE_RESULT_TOOLS = {"read_file"} # Nunca comprimir

Mire micro_compact y presione girar para comer los resultados anteriores.

Los siguientes pasos simulan 10 rondas de interacción y permiten que micro_compact se ejecute una vez antes de cada ronda. Observe que el antiguo resultado_herramienta en mensajes[] se convierte en [Anterior: ...], pero los últimos 3 siguen siendo los mismos.

Capa 2 · auto_compact (se activa cuando se excede el umbral)

Incluso si el micro sigue funcionando, explotará cuando se canse hasta alcanzar cierto tamaño. s06 establece un umbral (50000 token predeterminado):

  1. Estime el número de tokens len(str(messages)) // 4 (aproximado pero útil).
  2. Excede el umbral → Escriba la transcripción completa en .transcripts/transcript_TIMESTAMP.jsonl (deje la parte inferior).
  3. Pídale al LLM que escriba un resumen de toda la conversación.
  4. Reemplace los mensajes completos con un "RESUMEN [comprimido]...".

El coste es obvio: el resultado de la herramienta específica y el tono conversacional se pierden, y sólo queda el esquema. Pero el agente puede seguir haciéndolo, que es el principal beneficio.

Capa 3 · Ajusta el modelo tú mismo herramienta compacta

auto_compact es activado automáticamente por el arnés y el modelo no lo reconoce. La capa 3 hace lo contrario: proporciona al modelo una herramienta compacta y deja que solicite activamente la compresión, por ejemplo, si considera que la exploración anterior es inútil y es necesario iniciar una nueva etapa.

Llamada de modelo:

tool_use("compact", focus="mantener las decisiones de diseño de API")

La activación es igual que la automática, pero puede tomar un parámetro focus para indicar en qué centrarse al resumir. Es muy práctico en el combate real: el modelo sabe cuáles son las "pequeñas tareas terminadas", lo cual es más preciso que la heurística del arnés.

¿Qué capa es apropiada? pregunta verdadera o falsa

Los siguientes escenarios determinan qué activación de micro/auto/manual es más razonable.

Interactivo

Widget 1 · Micro Compacto · Ver herramienta_resultado Pulsar girar Envejecimiento

Paso a paso y observa como el antiguo resultado_herramienta se reemplaza por [Anterior: usado X], mientras que los últimos 3 permanecen intactos. read_file nunca se comprime (resaltado en verde).

Turn: 0 · Tokens: ~0
Interactivo

Widget 2 · Simulador de umbral · ¿Qué capa se activa después de que sube el token?

Arrastre el control deslizante para cambiar la cantidad de tokens y ver cuál de las tres capas está activa.

3000
Interactivo

Widget 3 · Qué capa es apropiada · 6 preguntas de juicio de escena

Elija micro/automático/manual para cada escena y hable sobre cuándo cada una es adecuada para activarse.

答对 0 / 6