Lección 1: La ventana de contexto es toda la memoria que tiene un agente
Objetivos de aprendizaje:
- Explicar por qué «el agente recuerda nuestra conversación anterior» es una ilusión
- Identificar qué cuenta para la ventana de contexto de una sola solicitud y qué no
- Explicar qué es la degradación de contexto (context rot) y por qué una ventana más grande no es automáticamente mejor para trabajar
- Determinar si una llamada a la API es sin estado y qué implica eso para la memoria
Requisitos: los primeros cuatro cursos de esta serie, incluido el protocolo de ida y vuelta de las llamadas a herramientas de Agent Tool Calling: Getting Agents to Actually Do Things | Siguiente: Lección 2 >>
Una conversación que parece recordar
Estás conversando con un agente de atención al cliente:
En el segundo turno, el agente claramente «recuerda» que te llamas Sarah y recuerda que preguntaste por ORD-2026-8842. Parece que archivó esos detalles en algún lugar y que puede recuperarlos la próxima vez.
La verdad es mucho más simple. En cada solicitud, tu código vuelve a empaquetar cada mensaje desde el inicio de la conversación hasta ahora y lo envía al modelo tal cual.1 El modelo no está viendo «recuerdo que te llamas Sarah»: está releyendo desde cero «el usuario dijo: me llamo Sarah», cada vez. Cada oración del turno anterior, cada llamada a herramienta, tiene que ser colocada en la solicitud de este turno por tu propio código. El modelo no almacena nada por su cuenta.
La llamada a la API es sin estado
Dicho de forma aún más directa: entre una llamada y la siguiente, no se guarda nada por ti en el servidor. Una vez que se procesa esta solicitud, esos tokens desaparecen de la vista del modelo. Si la siguiente solicitud no lleva nada, el modelo ve una hoja en blanco: ni siquiera sabe tu nombre.
La razón por la que se siente como memoria es que la aplicación anfitriona hace el trabajo pesado por ti: reenvía el arreglo completo de mensajes del historial. Eso no es una capacidad del modelo; es un arreglo en tu código que no deja de crecer. Esta propiedad tiene un nombre: sin estado (stateless). En palabras de la documentación oficial: "The Messages API is stateless, which means that you always send the full conversational history to the API." (la API de mensajes es sin estado, así que siempre envías el historial completo de la conversación a la API).1 El servidor no guarda ningún estado privado por sesión entre solicitudes; toda la «memoria» tiene que ser transportada y reenviada por el propio cliente.
Qué hay realmente en la ventana de contexto
Todo lo que el modelo puede ver vive en un contenedor llamado ventana de contexto. La documentación es explícita en que todo lo que va en una solicitud cuenta: "Everything in the request counts toward the context window: the system prompt, every message in messages (including tool results, images, and documents), and your tool definitions. The output Claude generates for the turn, including its extended thinking, counts too." (todo en la solicitud cuenta para la ventana de contexto: el prompt del sistema, cada mensaje en messages —incluidos resultados de herramientas, imágenes y documentos— y tus definiciones de herramientas; la salida que Claude genera en el turno, incluido su razonamiento extendido, también cuenta).2
En esta solicitud, system, tools y los tres mensajes del arreglo messages cuentan para la ventana de contexto. Una vez que se genera la respuesta del modelo, esos tokens de salida también cuentan para el uso de la ventana de este mismo turno. La respuesta lleva un campo usage que te dice cuántos tokens de entrada y de salida consumió realmente el turno: "Every response reports what the request consumed in its usage field." (cada respuesta informa lo que consumió la solicitud en su campo usage).2
Cualquier cosa que no esté empaquetada en esta solicitud —digamos un registro de pedido en una base de datos que ninguna herramienta ha consultado todavía— no forma parte de la ventana de contexto. El modelo no puede verla ni puede saber que existe de la nada. Por eso la «memoria» tiene que ser transportada activamente a esta solicitud mediante algún mecanismo; no es alcanzable de forma automática.
La ventana se degrada: más grande no es mejor
Hay un techo para lo que la ventana puede contener —la capacidad varía según el modelo, y la cifra oficial llega hasta 1 millón de tokens: "The context window (up to 1M tokens, depending on the model) holds the conversation history plus the new output Claude generates." (la ventana de contexto —hasta 1M de tokens, según el modelo— contiene el historial de la conversación más la nueva salida que genera Claude).2 Pero eso no significa que debas llenarla lo máximo posible. La documentación nombra un fenómeno concreto, la degradación de contexto (context rot): "As token count grows, accuracy and recall degrade, a phenomenon known as context rot. This makes curating what's in context just as important as how much space is available." (a medida que crece el número de tokens, la precisión y la recuperación se degradan, un fenómeno conocido como context rot; esto hace que curar lo que hay en el contexto sea tan importante como cuánto espacio hay disponible).2 En otras palabras, cuanto más contenido contiene la ventana y más desordenada se vuelve, peor le va al modelo para extraer de ahí la respuesta correcta, lo que hace que qué pones en el contexto importe tanto como cuánto espacio queda.2
Esto moldea directamente el diseño de la memoria: volcar todo el historial en el contexto no es gratis (llena la capacidad de la ventana) y tampoco es sin costo (obliga al modelo a esforzarse más para encontrar la única oración que de verdad importa ahora mismo, sepultada bajo un montón de información obsoleta). La Lección 2 cubre cómo manejar esa acumulación en la práctica: cómo truncar el historial, cómo resumirlo, en lugar de dejarlo crecer sin límite.
La palabra «memoria» es en realidad una metáfora
Volvamos a esa conversación de soporte del principio. Cuando decimos «el agente recuerda que te llamas Sarah», la forma precisa de expresarlo es: tu código reenvió el historial completo —el que contiene «me llamo Sarah»— al modelo tal cual, una vez más, y el modelo lo releyó dentro de esta solicitud. No hay almacenamiento, no hay recuperación, solo un reenvío.
Esto no es hilar fino. Entender que «la memoria es una ilusión producida por el reenvío» moldea directamente cómo diseñas un agente que de verdad «recuerde»:
- Si el arreglo del historial crece sin límite, la ventana se llena tarde o temprano, y encima chocas con la degradación de contexto: el problema que resuelve la Lección 2.
- Si cierta información necesita persistir a través de varias sesiones (no solo dentro de esta conversación), no puedes contar con embutirla en el arreglo messages; tiene que escribirse en algún lugar externo: la memoria externa que cubre la Lección 3.
- Si el agente necesita saber «hasta dónde he avanzado» a mitad de una tarea, ese progreso igualmente tiene que ser estado estructurado visible en la ventana de contexto, no algo que el modelo adivine: el tema de la Lección 4.
Los tres hilos son corolarios distintos del mismo hecho: el modelo solo conoce lo que está en la ventana; lo que no está en la ventana no existe en lo que al modelo respecta.
Resumen
- «El agente recuerda nuestra conversación anterior» es una ilusión: la verdad es que la aplicación anfitriona vuelve a empaquetar el historial completo en cada solicitud, y el modelo no almacena nada por sí mismo1
- La llamada a la API es sin estado; el servidor no guarda ningún estado privado por sesión entre solicitudes, así que toda la «memoria» tiene que ser transportada activamente por el cliente1
- La ventana de contexto contiene todo lo que esta solicitud lleva realmente: el prompt del sistema, cada mensaje en
messages (incluidos resultados de herramientas, imágenes, documentos), las definiciones de herramientas y la propia salida del modelo para el turno2
- La ventana tiene un techo de tamaño, y más grande no es automáticamente mejor de usar: la degradación de contexto significa que cuantos más tokens amontonas, más se degradan la precisión y la recuperación2
- Captar que «el modelo solo conoce lo que está en la ventana» lleva directo a los problemas que resuelven las tres lecciones siguientes: cómo gestionar el historial, cómo externalizar la memoria, cómo estructurar el estado
Lección 2: Gestionar el historial de conversación: añadir, truncar, resumir >>