Phase 14 - Lesson 08

Bloques de Memoria y Sleep-Time Compute (Letta)

MemGPT se convirtió en Letta en 2024. La evolución de 2026 añade dos ideas: bloques de memoria funcionales discretos que el modelo puede editar directamente, y un agente de tiempo de sueño (sleep-time agent) que consolida la memoria de forma asíncrona mientras el agente principal está inactivo. Así es como se escala la memoria más allá de una sola conversación.

Type: Build Languages: Python (stdlib) Prerequisites: Phase 14 · 07 (MemGPT) Time: ~75 minutes

Objetivos de Aprendizaje

  • Nombrar las tres capas de memoria que utiliza Letta (core, recall, archival) y la función de cada una.
  • Explicar el patrón de bloques de memoria: bloque Human, bloque Persona y bloques definidos por el usuario como objetos tipados de primera clase.
  • Describir qué es sleep-time compute, por qué se encuentra fuera del camino crítico y por que puede ejecutar un modelo más fuerte que el agente principal.
  • Implementar un bucle programado de dos agentes donde un agente principal sirve las respuestas y un agente de tiempo de sueño consolida los bloques entre turnos.

El Problema

MemGPT (Lección 07) resolvió el flujo de control de memoria virtual. Surgieron tres problemas de producción:

  1. Latencia. Cada operación de memoria se encuentra en el camino crítico. Si el agente tiene que podar, resumir o conciliar mientras el usuario espera, la latencia de cola se dispara.
  2. Deterioro de la memoria. Las escrituras se acumulan. Los hechos contradichos permanecen. La recuperación se ahoga en contenido obsoleto.
  3. Pérdida de estructura. Un almacenamiento de archivo plano no puede expresar "el bloque Human siempre está en el prompt; el bloque Persona siempre está en el prompt; el bloque Task cambia por sesión".

Letta (letta.com) es la reescritura de 2026. Los bloques de memoria hacen que la estructura sea explícita; el sleep-time compute mueve la consolidación fuera del camino crítico.

El Concepto

Tres capas

Capa Alcance Dónde reside Escrito por
Core Siempre visible Dentro del prompt principal Llamada a herramienta del agente + reescrituras en tiempo de sueño
Recall Historial de conversación Recuperable Registro automático de turnos
Archival Hechos arbitrarios Vector + KV + grafo Llamada a herramienta del agente + ingesta en tiempo de sueño

Core es el núcleo de MemGPT. Recall es el búfer de conversación con su cola desalojada. Archival es el almacenamiento externo. La división limpia la sobrecarga de dos capas de MemGPT.

Bloques de memoria

Un bloque es una sección tipada, persistente y editable de la capa core. El artículo original de MemGPT definió dos:

  • Bloque Human — hechos sobre el usuario (nombre, rol, preferencias, objetivos).
  • Bloque Persona — el autoconcepto del agente (identidad, tono, restricciones).

Letta generaliza a bloques arbitrarios definidos por el usuario: un bloque Task para el objetivo actual, un bloque Project para hechos de la base de código, un bloque Safety para restricciones estrictas. Cada bloque tiene un id, label, value, limit (límite de caracteres), description (para que el modelo sepa cuándo editarlo).

Los bloques son editables a través de la superficie de herramientas:

  • block_append(label, text)
  • block_replace(label, old, new)
  • block_read(label)
  • block_summarize(label) — condensa un bloque que está cerca de su límite.

Sleep-time compute

La adición de Letta de 2025: ejecutar un segundo agente en segundo plano, fuera del camino crítico. Los agentes de tiempo de sueño procesan transcripciones de conversaciones y el contexto de la base de código, escriben learned_context en bloques compartidos y consolidan o invalidan registros de archivo.

Propiedades resultantes:

  • Sin costo de latencia. Las respuestas principales no esperan por las operaciones de memoria.
  • Se permite un modelo más fuerte. El agente de tiempo de sueño puede ser un modelo más caro y lento porque no está limitado por la latencia.
  • Ventana de consolidación natural. Desduplicar, resumir e invalidar hechos contradichos cuando el usuario no está esperando.

La forma coincide con cómo funcionan los humanos: haces la tarea, la consultas con la almohada (duermes sobre ella), la memoria a largo plazo se consolida durante la noche.

Letta V1 y razonamiento nativo

Letta V1 (letta_v1_agent, 2026) desaprueba send_message/heartbeat y los tokens Thought: en línea en favor del razonamiento nativo. La API de Respuestas (OpenAI) y la API de Mensajes con pensamiento extendido (Anthropic) emiten razonamiento en un canal separado, transmitido a través de turnos (encriptado entre proveedores en producción). El bucle de control sigue siendo ReAct. El rastro de pensamiento es estructural, no en forma de prompt.

Dónde falla este patrón

  • Saturación de bloques. El block_append infinito alcanza el límite rápidamente. Conecte un resumidor de bloques antes de la escritura que supere el límite.
  • Desviación silenciosa. El agente de tiempo de sueño reescreve un bloco y el agente principal nunca lo nota. Use versiones de bloques e incluya diferencias en el rastro.
  • Consolidación envenenada. El agente de tiempo de sueño procesa en core contenido accesible a atacantes. La Lección 27 también se aplica a la superficie de tiempo de sueño.

Build It

code/main.py implementa:

  • Block — id, label, value, limit, description.
  • BlockStore — CRUD + ayudante near_limit(label).
  • Dos agentes programados — PrimaryAgent sirve un turno, SleepTimeAgent consolida entre turnos.
  • Un rastro que muestra una conversación de tres turnos con escritas de bloques, más un paso de tiempo de sueño que resume un bloque e invalida un hecho obsoleto.

Ejecútelo:

python3 code/main.py

La transcripción muestra la división: los turnos principales son rápidos y producen escritas crudas; el paso de sueño compacta y limpia.

Use It

  • Letta (letta.com) para la implementación de referencia. Autohospedado o nube gestionada.
  • Claude Agent SDK skills como conocimiento en forma de bloque — una skill es un bloque de instrucciones con nombre, versión y recuperable que el agente carga bajo demanda.
  • Builds personalizados para equipos que desean control sobre el backend de almacenamiento. Use el contrato de la API de Letta para poder migrar más tarde.

Ship It

outputs/skill-memory-blocks.md genera un sistema de bloques en formato Letta con ganchos de tiempo de sueño para cualquier runtime, incluyendo reglas de seguridad y cableado de citas.

Ejercicios

  1. Añada una herramienta block_summarize que reemplace el valor del bloque por un resumen generado por el modelo cuando near_limit devuelva verdadero. ¿Qué umbral de activación minimiza tanto las llamadas de resumen como el desbordamiento del bloque?
  2. Implemente la desduplicación en tiempo de sueño sobre el archivo: dos registros cuyo texto tiene más del 90% de coincidencia de tokens se colapsan en uno. Hágalo solo en el paso de sueño, nunca en el camino crítico.
  3. Cree versiones de los bloques. En cada escritura, registre el valor antiguo y una diferencia (diff). Exponga block_history(label) para que los operadores puedan depurar "por que el agente olvidó X".
  4. Trate a los agentes de tiempo de sueño como escritores no confiables. Cuando toquen el bloque Persona o Safety, requiera la revisión de un segundo agente antes de confirmar.
  5. Adapte el ejemplo para usar la API de Letta (letta_v1_agent). ¿Qué cambia en el esquema del bloque y cómo altera el razonamiento nativo la forma del rastro?

Términos Clave

Término Lo que la gente dice Lo que realmente significa
Bloque de memoria "Sección de prompt editable" Segmento de memoria core persistente, tipado y editable por LLM
Bloque Human "Memoria de usuario" Hechos sobre el usuario, fijados en core
Bloque Persona "Identidad del agente" Autoconcepto, tono, restricciones, fijados en core
Sleep-time compute "Trabajo de memoria asíncrono" Segundo agente realizando consolidación fuera del camino crítico
Core / Recall / Archival "Capas" División de memoria en tres capas: siempre visible / conversación / externa
Límite de bloque "Límite" Límite de caracteres por bloque; fuerza la resumen
Razonamiento nativo "Canal de pensamiento" Salida de razonamiento a nivel de proveedor, no Thought: a nivel de prompt
Contexto aprendido "Salida del sueño" Hechos que el agente de tiempo de sueño escribe en bloques compartidos

Lecturas Adicionales

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).