Por qué Amp carga más de lo que pediste
Tres reglas de inclusión, y dos de ellas son incondicionales
El descubrimiento de Amp es preciso, lo que hace que sea fácil de entender una vez que lo has leído:
"Los archivosAGENTS.mden el directorio de trabajo actual (o raíces del espacio de trabajo del editor) y los directorios padres (hasta$HOME) siempre se incluyen."
"Los archivos AGENTS.md de subárbol se incluyen cuando el agente lee un archivo en el subárbol.""Los archivos de guía para todo el sistema, así como$HOME/.config/amp/AGENTS.mdy$HOME/.config/AGENTS.md, siempre se incluyen si existen."
Así que dos de las tres son siempre. Solo la regla del subárbol es condicional, y se activa cuando el agente lee un archivo en ese subárbol, en lugar de por cualquier cosa que configures.
Eso significa que la forma predeterminada de agregar guías (ponerlas en el AGENTS.md raíz) es también la forma más costosa. Es residente para cada tarea en el repositorio.
Los archivos personales y del sistema se apilan encima
La tabla de ubicaciones enumera varios lugares donde Amp busca: los archivos del repositorio, $HOME/.config/amp/AGENTS.md y $HOME/.config/AGENTS.md para "Preferencias personales, comandos específicos del dispositivo y guías que estás probando localmente antes de confirmar (commit)", y /etc/ampcode/AGENTS.md, /Library/Application Support/ampcode/AGENTS.md o %ProgramData%\ampcode\AGENTS.md para "Guías para todo el sistema o gestionadas por la organización para todas las sesiones de Amp".
Todos ellos se incluyen siempre que existen. En una máquina donde alguien ha configurado un archivo gestionado por la organización, tú tienes uno personal y el repositorio tiene uno raíz, tres archivos son residentes antes de que el agente mire cualquier código.
Un plan de respaldo (fallback) que puede sorprenderte
"Si no existe ningúnAGENTS.mden un directorio, pero sí existe un archivo llamadoAGENT.md(sin laS) oCLAUDE.md, ese archivo se incluirá."
Útil: significa que un repositorio configurado para otra herramienta funciona en Amp sin cambios. También significa que un CLAUDE.md obsoleto que olvidaste es una guía activa, y un directorio del que pensabas que habías eliminado las instrucciones aún podría tener algunas. Vale la pena saberlo antes de ir a buscar por qué sigue reapareciendo una vieja convención.
El propio Amp recomienda dividir
La documentación no trata un único archivo raíz grande como el diseño previsto:
"En un repositorio grande con múltiples subproyectos, recomendamos mantener elAGENTS.mdde nivel superior general y crear archivosAGENTS.mdmás específicos en los subárboles para cada subproyecto."
Esa es la primera mitad de la respuesta. El mecanismo de globs es la segunda mitad, y maneja el caso que los subárboles no pueden: guías que se aplican a un tipo de archivo en lugar de a un directorio.
Lo que la gente intenta
Poner todo en el AGENTS.md raíz. Es lo predeterminado, y funciona hasta que el archivo crece más allá del punto en el que el agente sigue todo de manera confiable. Cada convención compite con todas las demás por la atención, en cada tarea.
Eliminar guías para ahorrar contexto. Efectivo pero con pérdida de información. La regla que eliminaste estaba allí porque alguien se equivocó una vez.
Crear archivos de subárbol para todo. Realmente bueno cuando la guía tiene forma de directorio, que es por lo que Amp lo recomienda. No hace nada para "nunca usar el tipo any", que se aplica a los archivos de TypeScript dondequiera que vivan.
Escribir la condición en prosa y cruzar los dedos. Agregar "cuando trabajes en endpoints de API, sigue estas reglas" a un archivo residente. El texto sigue costando lo mismo, y ahora dependes de que el modelo aplique un filtro que podrías haber expresado como un patrón.
Mencionar archivos con @ sin frontmatter. A mitad de camino. Amp admite menciones con @ para incorporar otros archivos, y la documentación es clara sobre el comportamiento predeterminado: "Si no se especifican globs, el archivo siempre se incluye cuando se menciona con @". Así que una mención por sí sola reorganiza tus archivos sin reducir lo que se carga.
Usar un solo hilo largo para todo. Problema adyacente, mismo síntoma. El propio consejo de Amp: "Usa un hilo por tarea. Los hilos pueden durar mucho tiempo, pero un hilo que mezcla trabajo no relacionado le da al agente un peor contexto para razonar". Cuando un hilo se alarga, el movimiento documentado es un traspaso (handoff): "pídele al agente 'Handoff and...' (Traspasar y...) y comenzará un hilo nuevo con el contexto que importa".
La solución: Referenciar archivos desde AGENTS.md y luego condicionarlos con Globs
Paso 1: Dividir el archivo raíz según lo que lo activa
Lee tu AGENTS.md raíz y clasifica cada bloque en tres pilas.
Universal. Comandos de compilación y prueba, diseño del repositorio, pasos de revisión y lanzamiento, las convenciones que se aplican en todas partes. Esto se queda en el archivo raíz. La tabla de ubicaciones de Amp describe exactamente este contenido para la raíz: "Arquitectura, comandos de compilación/prueba, descripción general de las API internas, pasos de revisión y lanzamiento".
Con forma de directorio. Guías que solo importan dentro de un subproyecto. Esto se convierte en un AGENTS.md en ese subárbol, donde Amp lo incluirá cuando el agente lea un archivo allí.
Con forma de tipo de archivo. Convenciones de lenguaje, patrones de prueba, reglas del framework. Para esto sirven los globs, y suele ser la pila más grande en un repositorio maduro.
Paso 2: Conectar los archivos condicionados por globs
Tres movimientos, exactamente como los presenta la documentación.
Primero, coloca una mención en tu AGENTS.md. Puede ir en cualquier parte del archivo: Ver @docs/*.md. Los patrones glob se admiten en la propia mención, por lo que una sola línea puede abarcar un directorio completo de archivos de convenciones.
Segundo, crea cada archivo referenciado con una lista de globs en el frontmatter de YAML. El ejemplo documentado crea docs/typescript-conventions.md, lo abre con un bloque de frontmatter que enumera los globs '**/*.ts' y '**/*.tsx', y continúa con las convenciones mismas; la regla de ejemplo es "Nunca usar el tipo any".
Tercero, repite por lenguaje o área de interés. La documentación ofrece tres estructuras para copiar: guía de frontend con globs: ["src/components/**", "**/*.tsx"], backend con globs: ["server/**", "api/**"] y guía de pruebas con globs: ["*.test.ts", "__tests__/*"].
El comportamiento que obtienes se explica claramente: "Los archivos mencionados con globs solo se incluirán si Amp ha leído un archivo que coincida con alguno de los globs". Ten en cuenta el activador: que Amp haya leído un archivo coincidente, no que tú lo hayas abierto.
Dos detalles que te ahorrarán una tarde confusa. La resolución de rutas para las menciones es relativa al archivo que las menciona, no a tu directorio de trabajo: "Las rutas relativas se interpretan en relación con el archivo del agente que contiene la mención". Las rutas absolutas y @~/algun/camino también funcionan. Y la resolución de globs tiene su propia regla: "Los globs se prefijan implícitamente con **/ a menos que comiencen con ../ o ./, en cuyo caso se refieren a rutas relativas al archivo mencionado". Así que *.test.ts coincide con archivos de prueba en cualquier lugar, mientras que ./fixtures/*.json significa al lado del archivo que lo declaró.
Uno más, que importa si documentas rutas en prosa: "Las menciones con @ en bloques de código se ignoran para evitar falsos positivos". Puedes escribir sobre una ruta dentro de comillas invertidas (backticks) sin importarla.
Paso 3: Verificar qué se cargó y luego extraer los hechos
Amp te ofrece una forma directa de comprobar tu trabajo: "Para ver los archivos de agente que Amp está utilizando, selecciona agents-md list en la paleta de comandos". Ejecútalo desde unos cuantos directorios diferentes y después de que el agente haya tocado diferentes tipos de archivos. Esa es la forma más rápida de confirmar que un glob está haciendo lo que crees.
Luego haz la pasada que realmente reduce el conjunto residente. Revisa lo que queda en tu archivo raíz y pregúntate, de cada línea, si es una instrucción o un hecho. "Ejecutar pnpm test antes de confirmar (commit)" es una instrucción: corta, de comportamiento, pertenece a AGENTS.md. "La API tiene versión en la ruta porque dos clientes móviles fijan una compilación antigua" es un hecho. No tiene ningún glob que encaje, porque no se trata de un tipo de archivo; se trata de tu proyecto, y el agente lo necesita cada vez que surge el tema, en lugar de cada vez que coincide un patrón.
Los hechos son los que hacen que los archivos de instrucciones crezcan más allá del punto de ser seguidos, y ningún mecanismo de restricción soluciona eso, porque la restricción siempre tiene la forma incorrecta. Lo que lo soluciona es mantenerlos en algún lugar que el agente lea bajo demanda. MemoryLake se configura en tres pasos.
Paso 1: Crear una clave API
Inicia sesión y genera una clave API desde tu panel de control. Se encuentra completamente fuera de la cadena de AGENTS.md, por lo que nada de lo que contiene es residente en cada sesión ni está condicionado por un patrón que no le encaja.

Paso 2: Subir tus primeras memorias
Introduce los hechos: decisiones arquitectónicas y las razones detrás de ellas, vocabulario del dominio, propiedad del servicio, por qué existe una solución alternativa (workaround), las respuestas que sigues dando en las revisiones de código. Cualquier cosa que sea cierta sobre el proyecto en lugar de sobre un tipo de archivo.

Deja el comportamiento en AGENTS.md, condicionado por globs donde realmente se aplique un patrón. Las dos capas hacen trabajos diferentes.
Paso 3: Conectar tu IA y agentes
Apunta Amp al almacén. Tu archivo raíz se vuelve lo suficientemente corto como para ser seguido de manera confiable, tus archivos condicionados por globs se mantienen acotados y de comportamiento, y el conocimiento del proyecto llega cuando la pregunta lo requiere; el mismo razonamiento detrás de reducir el uso de tokens con una capa de memoria.

Qué cambia esto en la práctica
El primer cambio es que agregar guías deja de ser un dilema. Hoy en día, una nueva convención va a un archivo residente y penaliza cada tarea, o se queda fuera. Los archivos condicionados eliminan esa elección para cualquier cosa que tenga forma de tipo de archivo.
El segundo es que el cumplimiento mejora sin necesidad de que escribas mejor prosa. Un conjunto de instrucciones residente más corto se sigue de manera más consistente que uno largo, por lo que vale la pena dividirlo incluso cuando el presupuesto de contexto no es ajustado.
El tercero es que cambiar de herramienta se vuelve más barato. Amp ya lee AGENT.md y CLAUDE.md como respaldos, por lo que la capa de instrucciones es casi portátil; la estructura descrita en migrar CLAUDE.md a AGENTS.md. La capa de hechos es la parte que es portátil solo si la mantienes fuera de la herramienta.
Buenas prácticas para acotar las instrucciones de Amp
- Mantén el archivo raíz general. Arquitectura, comandos de compilación y prueba, pasos de revisión y lanzamiento. La propia recomendación de Amp para repositorios grandes.
- Usa archivos de subárbol para guías con forma de directorio. Se cargan cuando el agente lee un archivo en el subárbol.
- Usa
globspara guías con forma de tipo de archivo. Convenciones de lenguaje, patrones de prueba, reglas del framework. - Recuerda que una mención con
@a secas sigue siendo incondicional. Singlobs, un archivo mencionado siempre se incluye. - Ten en cuenta las dos reglas de resolución. Las rutas de mención se resuelven en relación con el archivo que las menciona; los globs obtienen un
**/implícito a menos que comiencen con./o../. - Comprueba si hay respaldos obsoletos. Un
AGENT.mdoCLAUDE.mdsobrante es una guía activa en un directorio sinAGENTS.md. - Verifica con
agents-md list. Ejecútalo desde diferentes directorios y después de tocar diferentes tipos de archivos. - Un hilo por tarea, y haz un traspaso (handoff) cuando crezca. Es la guía de Amp, y se trata de la calidad del contexto más que de la limpieza.
Conclusión
El sistema de instrucciones de Amp es inusualmente explícito sobre cuándo se carga cada archivo, y uno de sus modos (archivos condicionados por globs referenciados desde AGENTS.md) convierte las instrucciones de un costo fijo en uno condicional. Requiere unas pocas líneas de frontmatter y es el cambio de mayor impacto disponible en un repositorio cuyo archivo raíz ha crecido.
Lo que no puede solucionar es el contenido que no tiene un patrón. Los hechos del proyecto no tienen forma de tipo de archivo, y la restricción condicional es la herramienta incorrecta para ellos. Separa las instrucciones del conocimiento, condiciona las instrucciones y coloca el conocimiento en un lugar al que el agente pueda acceder sin pagar alquiler por él en cada sesión.