Sistema de memoria
Un sistema que intenta dar estado a un agente a lo largo de varias sesiones. Guarda información en el entorno durante una sesión y la carga de nuevo en la ventana de contexto al inicio de las siguientes, para que el agente mantenga la continuidad incluso cuando el usuario borra la sesión.
Un sistema de memoria tiene dos partes. La ruta de escritura: durante una sesión, el agente registra en archivos del entorno lo que ha aprendido, como una preferencia que expresaste o un dato del proyecto. La ruta de lectura: al comenzar una sesión, el harness vuelve a cargar esos archivos o un índice de ellos en la ventana de contexto. Muchos harnesses incluyen su propio sistema de memoria —el comando `/memory` de Claude Code es uno—, pero también puedes crear el tuyo: un directorio de notas y una instrucción en AGENTS.md para consultarlo.
Se aplican las mismas compensaciones que con cualquier contenido que siempre se carga. Los recuerdos se acumulan, por lo que la mayoría de los sistemas cargan un índice de una línea y dejan el contenido detrás de punteros de contexto, en vez de insertarlo todo. Además, los recuerdos son fuentes secundarias y se desactualizan: un dato registrado en marzo se carga con la misma confianza en junio, aunque el proyecto haya cambiado. Un sistema de memoria necesita depuración, igual que AGENTS.md.
Uso:
«Siempre tengo que volver a decirle que usamos Postgres, no MySQL».
«Configura un sistema de memoria: que escriba lo que aprende en el sistema de archivos en el primer turno y lo vuelva a cargar al inicio de la sesión. El modelo en sí no tiene estado; la capa de memoria simula la continuidad».
AGENTS.md
Un archivo del entorno que el harness carga en la ventana de contexto al inicio de una sesión: el encargo permanente del proyecto para el agente. Es una convención común a distintos harnesses; algunos tienen además su propia variante (la de Claude Code es CLAUDE.md).
Como se carga automáticamente, sirve para no tener que repetir lo mismo en cada sesión. El modelo no tiene estado: una corrección que le das en una sesión desaparece en la siguiente, y acabas recordándole a cada sesión nueva que el proyecto usa pnpm, que las pruebas requieren cierta opción o que no se debe tocar un directorio generado. Cuando ya has corregido dos veces lo mismo al agente, esa corrección puede merecer una línea en AGENTS.md.
El contenido adecuado es aquello que el agente no puede deducir del código: comandos de compilación y pruebas, convenciones que no resultan obvias en el código base, restricciones firmes («no edites nunca el cliente generado»). Debe ser breve y declarativo: es un encargo, no documentación.
La contrapartida es que siempre se carga todo su contenido. Las instrucciones se acumulan y la mayoría no sirven para una tarea concreta; además, un AGENTS.md largo consume tokens y diluye el mensaje: cuantas más instrucciones hay en el contexto, menos fiable es que el agente siga cada una.
Evitar: usar AGENTS.md para contenido que debería mostrarse progresivamente. Cada elemento paga un coste en tokens en cada turno, en todas las sesiones, lo necesite o no la sesión actual. Una guía de estilo puede estar en una skill o detrás de un puntero de contexto; reserva AGENTS.md para las instrucciones que se aplican en todas partes.
Uso:
«¿Por qué cada sesión empieza con 4k tokens ya consumidos?»
«Mira AGENTS.md: alguien pegó ahí la guía de estilo entera en vez de ponerla detrás de una skill».
Divulgación progresiva
Cargar solo el contexto que el agente necesita en ese momento y usar punteros de contexto para el resto. El concepto procede del diseño de interfaces, donde consiste en mostrar a los usuarios únicamente los controles pertinentes para la tarea actual y ocultar los demás tras un clic.
La técnica existe porque el contexto tiene un coste por partida doble. Cada token que se carga de antemano se factura como token de entrada en cada turno, y cada token consume presupuesto de atención, lo necesite o no el agente. Si llenas AGENTS.md con toda la guía de estilo, el manual de despliegue y las convenciones de bases de datos, el agente empeora en todas esas áreas: las instrucciones pertinentes para la tarea actual quedan diluidas entre las irrelevantes. La señal es que el agente ignora reglas que sabes que están en su contexto: ahí están, pero enterradas.
La divulgación progresiva invierte la situación. Mantén pequeña la capa que siempre se carga: una frase por tema y un puntero al lugar donde están los detalles. El agente lee la guía de estilo al escribir un componente y el manual de despliegue cuando despliega; no consulta ninguno de los dos al corregir una prueba. Las skills son la forma que ofrece el harness: se carga una descripción breve en cada sesión, y las instrucciones completas solo cuando se activa.
Uso:
«¿Debería pegar toda la guía de estilo en AGENTS.md?»
«No: usa divulgación progresiva. Añade la guía de estilo como una skill que el agente carga cuando de verdad necesita escribir un componente. AGENTS.md tiene ese coste en tokens en cada turno».
Puntero de contexto
Una mención en un documento que apunta a otro para que el agente pueda incorporarlo a la ventana de contexto solo cuando la tarea lo requiera. Es la unidad básica con la que se construye la divulgación progresiva.
El motivo para usar un puntero en vez de insertar el contenido directamente es el coste. Un puntero ocupa una línea en la ventana de contexto. El documento al que apunta puede contener miles de tokens, pero estos no cuestan nada hasta que el agente sigue el puntero. Si insertas un manual de operaciones de 2.000 tokens en AGENTS.md, todas las sesiones pagan ese coste; si lo sustituyes por «proceso de despliegue: consulta `internal/deploy.md`», solo lo cargarán las sesiones que realicen despliegues. El agente sigue el puntero mediante una llamada a herramienta cuando la tarea lo requiere.
Para que funcione, un puntero necesita dos cosas: una ruta estable y una descripción suficiente para que el agente sepa cuándo conviene seguirlo. Una ruta sin más es un puntero que el agente no tiene motivos para seguir; si dices «consulta `internal/deploy.md`» sin indicar qué contiene, una sesión que lo necesita puede pasarla por alto. Redacta la línea de modo que encaje con las tareas: «para publicar, desplegar o revertir, lee primero `internal/deploy.md`».
Una vez que prestas atención, los punteros están por todas partes: líneas de AGENTS.md, descripciones de skills (el harness carga la descripción; el contenido de la skill queda al otro lado), nombres de archivo en el listado de un directorio y enlaces entre documentos.
Un puntero también puede vincular una fuente secundaria con la fuente primaria de la que procede: un resumen de compactación que identifica la transcripción original, o un documento que señala el archivo fuente que describe. Así se puede recuperar la información perdida de la fuente secundaria: si el resumen resulta insuficiente, el agente sigue el puntero y lee el original, en vez de trabajar solo con lo que conservó el resumen.
Evitar: «referencia», demasiado neutro; no transmite que seguir el enlace incorpora más contexto. «Portal», demasiado grandilocuente.
Uso:
«AGENTS.md se está haciendo enorme».
«La mayor parte debería ser punteros de contexto, no contenido. Deja las reglas permanentes en línea; convierte el manual de despliegue y la guía de estilo en skills y deja un puntero de contexto».
Skill
Una capacidad que se puede enseñar, empaquetada como unidad: instrucciones y recursos para hacer bien una tarea, guardados en el entorno hasta que un puntero de contexto la incorpora a la ventana de contexto para la tarea en cuestión. Es la unidad de divulgación progresiva en un harness.
Las skills son un estándar abierto, definido en agentskills.io. Las desarrolló originalmente Anthropic y desde entonces las han adoptado la mayoría de los principales harnesses, por lo que una skill escrita una vez funciona en todos ellos. El formato consiste en una carpeta que contiene:
- Un archivo `SKILL.md`: metadatos (como mínimo, un nombre y una descripción) e instrucciones.
- Opcionalmente, scripts que el agente puede ejecutar.
- Opcionalmente, plantillas y material de referencia al que remiten las instrucciones.
De forma predeterminada, solo el nombre y la descripción ocupan contexto. Cuando la tarea del agente coincide, este carga el resto. Hasta entonces, la skill apenas ocupa espacio: una o dos frases de tokens, por extensa que sea la totalidad de sus instrucciones.
Esto distingue las skills de AGENTS.md, que se carga en todas las sesiones, con independencia de la tarea. Una skill se lee cuando surge un tipo concreto de trabajo —publicar, crear la estructura de un servicio o redactar una migración— y se ignora el resto del tiempo.
Evitar: «herramienta»: una herramienta es algo que el agente invoca; una skill contiene instrucciones que lee.
Uso:
«¿Dónde debería poner el manual de despliegue?»
«En una skill: el agente solo la carga cuando la tarea implica desplegar. Si la pones en AGENTS.md, gastarías tokens en cada turno para algo que usamos una vez a la semana».
Subagente
Un agente que otro agente inicia mediante una llamada a herramienta. Se ejecuta en su propia sesión, con su propia ventana de contexto, y devuelve un único resultado de herramienta. Se diferencia de un traspaso: el agente que lo inicia espera recibir una respuesta; un traspaso no tiene vía de retorno. No puede iniciar otros subagentes: el árbol tiene un solo nivel. Los subagentes sirven para aislar el contexto, no para formar jerarquías.
La idea es mantener el trabajo ruidoso fuera del contexto del agente principal. Una búsqueda amplia o una expedición de lectura de archivos larga produce páginas de resultados de herramientas, la mayoría relevantes solo hasta encontrar la respuesta. Si se ejecuta dentro del agente principal, todo queda en su contexto durante el resto de la sesión. Si se ejecuta en un subagente, el ruido llena una ventana desechable; solo el informe final llega al agente principal. El informe es una fuente secundaria: el agente principal recibe el relato del subagente sobre lo que encontró, no los resultados sin procesar, así que no puede ver lo que el informe omita.
Los subagentes también pueden ejecutarse simultáneamente: un agente principal puede repartir varias tareas independientes entre ellos.
Uso:
«Los resultados de grep están saturando mi contexto».
«Lanza un subagente para hacer la búsqueda: consumirá su propia ventana de contexto con el ruido y te informará de las dos rutas de archivo que de verdad necesitas».