MemoryLake
Volver a todos los artículos
Tutorial10 de septiembre de 2026·12 min de lectura

Cómo consolidar los archivos de reglas de Kilo Code en una sola lista ordenada (Guía 2026)

Kilo Code publica una tabla de prioridades para las fuentes de instrucciones, y es realmente útil. Primero el prompt del agente, luego el array instructions del proyecto, después el AGENTS.md raíz, luego el array instructions global, con las habilidades cargadas bajo demanda.

El problema es lo que la tabla deja fuera. Kilo también carga archivos AGENTS.md por directorio que no aparecen en ningún lado de ella, incluye automáticamente un directorio de reglas heredado completo "por compatibilidad con versiones anteriores" y, en la CLI, lee los directorios .claude/ y .agents/ "por compatibilidad con otras herramientas". Ninguno de esos tres son filas en la tabla de prioridades, y solo uno de ellos es algo que tú declaraste.

Así que la descripción honesta de tu conjunto de reglas cargado es: lo que nombra tu kilo.jsonc, más cualquier otra cosa que resulte estar en el disco. Esta guía trata sobre cerrar esa brecha: construir una sola lista que puedas leer de arriba a abajo y luego demostrar que es la lista completa.

Primero, una nota sobre los nombres, porque constantemente se confunden tres herramientas aquí. Kilo Code es la herramienta con kilo.jsonc y .kilo/. Kiro es el agente de AWS, con archivos de dirección bajo .kiro/steering/. Cline es el proyecto upstream de Kilo Code, razón por la cual Kilo aún reconoce algunas rutas de la era de Cline. Todo lo que se muestra a continuación es Kilo Code.

Por qué tu kilo.jsonc no es la lista completa

El modelo de reglas actual de Kilo es explícito y, por sí solo, se comporta bien. Las reglas del proyecto se "configuran a través de la clave instructions en el archivo kilo.jsonc de tu proyecto", donde "cada entrada apunta a una ruta de archivo o patrón glob". Las reglas globales usan la misma clave en la configuración global, "normalmente en ~/.config/kilo/kilo.jsonc".

El orden de carga sigue al array: "Las reglas se cargan en el orden en que aparecen en el array instructions en kilo.jsonc", primero la configuración global, luego la del proyecto. La precedencia se resuelve al revés: "las instrucciones a nivel de proyecto tienen precedencia sobre las instrucciones globales para directivas en conflicto". Incluso puedes pausar una regla sin eliminarla, ya que "JSONC admite comentarios //".

Eso es un manifiesto, y un manifiesto es un buen diseño. Todo lo que se muestra a continuación es lo que queda fuera de él.

Las entradas glob renuncian al orden. La documentación es directa: "Los archivos que coinciden con patrones glob se cargan en orden del sistema de archivos". Dado que la posición del array es tu único control de precedencia, una sola entrada como .kilo/rules/*.md convierte tu lista ordenada en una desordenada para todo lo que coincida. La configuración de ejemplo en la documentación empareja un archivo específico con un glob que cubre el mismo directorio, lo que parece conveniente y elimina silenciosamente tu capacidad de decidir qué regla gana.

El directorio heredado se carga sin estar listado. Esto es lo que le cuesta días a la gente:

"Si existen directorios .kilocode/rules/ en tu proyecto, sus contenidos se incluyen automáticamente por compatibilidad con versiones anteriores. Para migrar por completo, mueve tus archivos de reglas y haz referencia a ellos en kilo.jsonc."

Lee eso como un comportamiento activo, no como una simple nota. Kilo cambió el nombre de su directorio de .kilocode/ a .kilo/, y el antiguo todavía se carga, automáticamente, sin ninguna entrada en tu array y sin posición en la tabla de prioridades. Un repositorio que pasó por una versión anterior tiene un segundo árbol de reglas ejecutándose en paralelo, y el kilo.jsonc que estás leyendo no lo menciona.

Los archivos AGENTS.md por directorio se inyectan al acceder a los archivos. Kilo admite AGENTS.md en subdirectorios y describe el mecanismo con precisión: "Los archivos AGENTS.md por directorio se cargan dinámicamente cuando el agente lee archivos en ese directorio; no se precargan al inicio de la sesión. Cuando el agente lee un archivo en src/backend/, se descubre el AGENTS.md correspondiente y su contenido se inyecta en la conversación como etiquetas <system-reminder>".

Esa es una buena característica. También significa que tu conjunto de instrucciones efectivo cambia a mitad de la conversación dependiendo de qué archivos haya abierto el agente, y la tabla de prioridades (que cubre solo el archivo raíz) no describe qué rango ocupan esas inyecciones.

El AGENTS.md raíz no se puede desactivar. "AGENTS.md en sí no se puede desactivar individualmente; siempre se carga si está presente. Para anular sus instrucciones, usa fuentes de mayor prioridad como la clave de configuración instructions o prompts específicos del agente". Tanto AGENTS.md como AGENT.md son también "archivos protegidos contra escritura en Kilo Code", por lo que "el agente de IA no puede modificar estos archivos sin la aprobación explícita del usuario". Bueno para la seguridad, y vale la pena saberlo antes de pedirle al agente que los organice.

El nombre del archivo distingue entre mayúsculas y minúsculas de una manera que sorprende a la gente. Kilo advierte: "El nombre del archivo debe estar en mayúsculas (AGENTS.md), no en minúsculas (agents.md)". Los nombres admitidos en orden de precedencia son AGENTS.md y luego AGENT.md. Otros agentes difieren aquí (algunos tratan ambos casos como equivalentes), por lo que un repositorio compartido debería estandarizarse en mayúsculas.

El antiguo banco de memoria sigue activo. El aviso de depreciación de Kilo dice que "la función de banco de memoria de Kilo Code ha sido descontinuada en favor de AGENTS.md", e inmediatamente agrega: "Las reglas existentes del banco de memoria seguirán funcionando". Los indicadores de estado son la parte a vigilar: "los indicadores de estado heredados del Memory Bank como [Memory Bank: Active] y [Memory Bank: Missing] aún pueden aparecer, pero no están garantizados en todos los clientes o modos". Esa advertencia es clave: la insignia está limitada a los clientes y modos donde es compatible, así que trátala como una pista en lugar de como la respuesta definitiva, y verifícalo mediante el comportamiento en su lugar.

Juntas, estas son cinco fuentes más allá de tu array. Esa es la causa real de la mayoría de los informes de "mi regla no se está aplicando", y es un problema de configuración más que un problema del modelo, la distinción que señalamos en por qué los agentes ignoran tus archivos de instrucciones.

Qué intenta la gente en su lugar

Leer kilo.jsonc y confiar en él. El enfoque más común, y es incorrecto por diseño. El array es uno de varios datos de entrada, y los dos silenciosos (el directorio heredado y las inyecciones por directorio) son exactamente los que un archivo de configuración no te puede mostrar.

Agregar un glob amplio para capturar todo. ".kilo/rules/**/*.md" garantiza que no se pierda nada y renuncia al orden para todo el conjunto, ya que las coincidencias de glob se cargan "en orden del sistema de archivos". Has cambiado una lista incompleta por una desordenada.

Eliminar .kilocode/ de inmediato. Destino correcto, primer paso arriesgado. Esos archivos han estado vigentes, posiblemente durante meses, y parte del comportamiento en el que confías puede provenir de ellos. Muévelos fuera de la ruta de carga y ponlos bajo revisión, luego decide.

Poner todo en AGENTS.md. Ocupa el tercer lugar, no se puede desactivar y es el formato que leen otras herramientas. Pero no admite frontmatter ni carga condicional, por lo que un solo archivo raíz se convierte en contexto siempre activo para cada tarea. La cuestión del presupuesto de contexto siempre activo es la misma que examinamos en qué leen realmente los agentes de programación.

Convertir reglas en habilidades. Las habilidades se cargan bajo demanda, lo que suena como condicionalidad gratuita, y Kilo es inusualmente sincero sobre cómo funciona la selección: "El agente (LLM) decide si usar una habilidad en función del campo description de la habilidad. No hay coincidencia de palabras clave ni búsqueda semántica: el agente evalúa tu solicitud frente a todas las descripciones de habilidades disponibles y determina si una 'se aplica de manera clara e inequívoca'". Una convención que siempre debe cumplirse no sobrevive a un juicio de relevancia, razón por la cual una habilidad no es un sustituto de una regla, y tampoco un sustituto de la memoria, como argumentamos en por qué las habilidades de los agentes no son memoria.

La solución: Construir una sola lista ordenada y luego demostrar que es la lista completa

Tres pasos. El tercero es el que la gente se salta, y es el único que detecta las fuentes silenciosas.

Paso 1: Inventariar cada ruta desde la que Kilo puede cargar

Recorre el repositorio y anota lo que existe en cada una de estas ubicaciones, antes de cambiar nada.

Comienza con el conjunto declarado: el array instructions en el kilo.jsonc del proyecto, y la misma clave en ~/.config/kilo/kilo.jsonc. Expande cada glob a mano en los nombres de archivo reales con los que coincide, en orden del sistema de archivos, para que puedas ver el orden que usará Kilo.

Luego, el conjunto no declarado. Busca .kilocode/rules/ en cualquier parte del proyecto (el aviso dice "directorios", en plural, así que busca también en los subdirectorios). Busca .kilo/rules/memory-bank/ y el heredado .kilocode/rules/memory-bank/. Encuentra cada AGENTS.md y AGENT.md en el árbol, no solo el de la raíz, y anota qué directorio gobierna cada uno. Si usas la CLI, verifica también .claude/ y .agents/, ya que se leen "por compatibilidad con otras herramientas"; los directorios de habilidades externas se pueden desactivar con la variable de entorno KILO_DISABLE_EXTERNAL_SKILLS si quieres dejarlos fuera de juego.

Ahora tienes una lista. Será más larga que tu kilo.jsonc, y la diferencia es aquello que no sabías que se estaba ejecutando.

Paso 2: Reducir la lista a un solo array declarado y ordenado

Decide un destino para cada elemento, luego haz que el array coincida con la realidad.

Las convenciones de todo el repositorio que siempre deben aplicarse van en el AGENTS.md raíz: no se puede desactivar, otras herramientas lo leen y está protegido contra escritura para evitar ediciones accidentales del agente. Mantenlo corto; está siempre activo.

Las reglas que necesitan un orden explícito van en .kilo/rules/ como archivos individuales, cada uno listado por su ruta completa en el array instructions del proyecto. Lístalos uno por línea en el orden que desees. No uses un glob aquí; un glob es precisamente lo que descarta tu orden.

La guía específica del directorio va en los archivos AGENTS.md por directorio, que es el único mecanismo que documenta Kilo para el contenido que se carga según el lugar donde esté trabajando el agente.

Las preferencias personales van en el array global de kilo.jsonc, recordando que lo global se sitúa en la prioridad 4, por debajo tanto del array del proyecto como del AGENTS.md raíz.

Luego vacía la ruta heredada. Mueve el contenido de .kilocode/rules/ a algún lugar fuera de la ruta de carga (un subdirectorio docs/ funciona) y vuelve a agregar solo lo que realmente deseas, mediante una ruta explícita en el array. Lo mismo para el banco de memoria: la propia instrucción de migración de Kilo es "examinar el contenido en .kilo/rules/memory-bank/ (o el heredado .kilocode/rules/memory-bank/)" y "mover ese contenido al archivo AGENTS.md de tu proyecto". Mueve las partes que sigan siendo verdaderas; elimina las partes que describan una versión anterior de la base de código.

Paso 3: Demostrar la lista por contradicción, no por lectura

Un archivo de configuración no puede verificarse a sí mismo frente a archivos que no menciona. Así que prueba el límite directamente.

Coloca una instrucción deliberadamente inusual e inofensiva al final de tu fuente de menor prioridad prevista, algo como una convención inconfundible de nomenclatura de variables que nunca usarías de otra manera. Pídele al agente que escriba una función pequeña. Si aparece la convención, la fuente se está cargando y nada por encima de ella la contradice.

Luego invierte la prueba. Coloca una instrucción directamente contradictoria en una fuente que creas que no se está cargando: la ruta heredada .kilocode/rules/, antes de vaciarla. Pregunta de nuevo. Si la versión contradictoria gana, esa ruta está activa y supera a lo que creías que era autoritativo. Kilo no muestra conflictos entre fuentes de instrucciones, por lo que una prueba de contradicción es la única forma de ver la resolución; el patrón general se cubre en detección de conflictos de memoria.

Repite una vez desde un subdirectorio que tenga su propio AGENTS.md, ya que los archivos por directorio se inyectan solo cuando el agente lee un archivo allí. Una ejecución de prueba desde la raíz del repositorio no los ejercitará.

Configuración en MemoryLake

La consolidación te proporciona una lista ordenada. No te dice por qué hay alguna línea en ella, y una regla sin una razón registrada es lo primero que se descarta durante la próxima limpieza.

MemoryLake guarda las razones: qué regla existe debido a qué incidente, qué se intentó y se rechazó, y qué restricciones provinieron de una persona en lugar del código. Se sitúa fuera del array instructions, por lo que el reordenamiento, el cambio de nombre y las migraciones de directorios no pueden hacer que se pierda. Comienza aquí.

Paso 1: Crear una clave API

Crea un espacio de trabajo para el repositorio y genera una clave API. Limítala al repositorio, no a Kilo, para que la próxima migración de herramienta sea un cambio de configuración en lugar de una reescritura.

La consola de MemoryLake mostrando la pantalla de claves API, donde se crea y copia una nueva clave para su uso en un agente
La consola de MemoryLake mostrando la pantalla de claves API, donde se crea y copia una nueva clave para su uso en un agente

Paso 2: Subir tus primeras memorias

Haz esto durante el Paso 1 de la consolidación, mientras lees archivos que no sabías que se estaban cargando. Para cada regla que encuentres en .kilocode/rules/, registra por qué se escribió antes de decidir si conservarla; ese juicio es mucho más difícil de hacer más adelante. Agrega los contenidos del banco de memoria que aún sean precisos y anota qué partes eliminaste y por qué.

El espacio de trabajo de MemoryLake con los primeros documentos subidos, listando cada archivo a medida que se convierte en memoria de búsqueda
El espacio de trabajo de MemoryLake con los primeros documentos subidos, listando cada archivo a medida que se convierte en memoria de búsqueda

Paso 3: Conectar tu IA y agentes

Conecta Kilo Code a través de las interfaces que utilices; la extensión de VS Code y la CLI comparten la tabla de prioridades pero difieren en los directorios externos, por lo que ambos deberían leer el mismo conjunto de decisiones. Si todavía ejecutas Cline en el mismo repositorio, conéctalo también: ambos comparten la herencia de archivos de reglas, y una capa compartida evita que se desvíen.

La pantalla de integraciones de MemoryLake que enumera los clientes de IA y los frameworks de agentes que se pueden conectar a la capa de memoria
La pantalla de integraciones de MemoryLake que enumera los clientes de IA y los frameworks de agentes que se pueden conectar a la capa de memoria

Qué cambia esto en la práctica

"Mi regla no se está aplicando" se convierte en una comprobación de cinco minutos en lugar de una tarde entera. Tienes un inventario, por lo que la pregunta es cuál de las fuentes conocidas está ganando, no si existe algún archivo desconocido.

El orden se vuelve real. Reemplazar los globs con rutas explícitas significa que la posición del array realmente determina la precedencia, por lo que un conflicto tiene una respuesta predecible que puedes señalar.

El directorio heredado deja de ser una segunda fuente de verdad. Una vez que .kilocode/rules/ está vacío, la tabla de prioridades más tu mapa de AGENTS.md por directorio es la imagen completa.

And las razones sobreviven a la limpieza. La consolidación elimina archivos por diseño. Eliminar una regla está bien; eliminar el único registro de por qué existía es la forma en que se vuelve a tener la misma discusión en seis meses.

Buenas prácticas para los archivos de reglas de Kilo Code

Lista las rutas explícitamente, no con globs. Una línea por archivo en el array instructions es más detallada y es la única forma de controlar el orden. Reserva los globs para directorios donde el orden realmente no importe.

Comenta en lugar de eliminar. Los comentarios de JSONC te permiten pausar una regla con una nota sobre por qué está pausada, lo cual es más informativo que una línea faltante.

Mantén corto el AGENTS.md raíz. No se puede desactivar y siempre se carga, por lo que cada línea es un costo de contexto permanente. Envía cualquier cosa específica de un área a un archivo por directorio.

Estandariza en mayúsculas AGENTS.md. Kilo lo requiere, y las herramientas no coinciden en la distinción entre mayúsculas y minúsculas, por lo que las mayúsculas son la opción sin costo para un repositorio compartido.

No confíes en los indicadores de estado del banco de memoria. Kilo dice que "aún pueden aparecer, pero no están garantizados en todos los clientes o modos". Verifícalo por contradicción en su lugar.

Vuelve a ejecutar la prueba de contradicción después de cualquier actualización de dependencia o versión. Las rutas de compatibilidad con versiones anteriores son exactamente el tipo de cosas que cambian entre lanzamientos, y un cambio silencioso aquí parece que el modelo empeoró, el diagnóstico erróneo detrás de mucho de lo que cubrimos en Cline olvida el contexto del proyecto, sobre la herramienta de la cual Kilo hizo un fork. Si todavía estás planeando ese paso, migrar de Cline a Kilo Code cubre el mapeo de archivos; esta guía trata sobre qué hacer una vez que estés allí.

Conclusión

El array instructions de Kilo Code es un manifiesto real, y los manifiestos son la idea correcta. El truco es que tres de los comportamientos de carga de Kilo quedan fuera de él: el directorio heredado .kilocode/rules/ se carga automáticamente, los archivos AGENTS.md por directorio se inyectan cuando el agente lee archivos cerca de ellos, y la CLI lee directorios de compatibilidad de otras herramientas.

Consolidar significa nombrar cada ruta explícitamente, vaciar las que no nombraste y luego probar por contradicción, porque un archivo de configuración no puede auditar fuentes que nunca menciona. Haz eso una vez y la tabla de prioridades se convertirá en una descripción precisa de tu proyecto en lugar de una parcial.

Preguntas frecuentes

¿Sigue leyendo Kilo Code .kilocode/rules/?

Sí. Su documentación establece que si existen directorios .kilocode/rules/, "sus contenidos se incluyen automáticamente por compatibilidad con versiones anteriores", y recomienda mover los archivos y hacer referencia a ellos en kilo.jsonc para migrar por completo. Se cargan sin aparecer en tu array instructions.

¿En qué orden se cargan mis reglas?

El orden en que aparecen en el array instructions, primero la configuración global y luego la del proyecto, teniendo precedencia las entradas del proyecto en caso de conflictos. Los archivos que coinciden con un patrón glob se "cargan en orden del sistema de archivos", por lo que una entrada glob renuncia al control de la posición en el array.

¿Puedo desactivar AGENTS.md?

No. Kilo documenta que "AGENTS.md en sí no se puede desactivar individualmente; siempre se carga si está presente", y sugiere anularlo con fuentes de mayor prioridad como la clave instructions o un prompt específico del agente.

¿Por qué mis archivos AGENTS.md de subdirectorio a veces parecen inactivos?

Porque se cargan al acceder. Kilo los describe como "cargados dinámicamente cuando el agente lee archivos en ese directorio", inyectados como etiquetas <system-reminder> en ese momento en lugar de precargados al inicio de la sesión. Si el agente nunca abre un archivo en ese directorio, el archivo nunca se carga.

¿Ha desaparecido el banco de memoria?

Descontinuado, no eliminado. El aviso dice que la función "ha sido descontinuada en favor de AGENTS.md" mientras que "las reglas existentes del banco de memoria seguirán funcionando". Sus indicadores de estado "aún pueden aparecer, pero no están garantizados en todos los clientes o modos", así que trátalos como no confiables.

¿Importa si el nombre del archivo está en mayúsculas o minúsculas?

Sí. Kilo requiere mayúsculas: "el nombre del archivo debe estar en mayúsculas (AGENTS.md), no en minúsculas (agents.md)". Los nombres admitidos son AGENTS.md, luego AGENT.md como alternativa. Dado que otros agentes manejan las mayúsculas y minúsculas de manera diferente, las mayúsculas son la convención segura para cualquier repositorio compartido.