MemoryLake
Volver a todos los artículos
Tutorial2 de septiembre de 2026·10 min de lectura

Cómo migrar de GitHub Copilot a Devin Desktop sin perder el contexto (2026)

Tanto GitHub Copilot como Devin Desktop leen AGENTS.md. Eso hace que parezca que la migración ya está hecha.

Pero no es así, porque las dos herramientas colocan ese archivo en lugares opuestos de su pila de prioridad. En Copilot, las instrucciones del agente en AGENTS.md se sitúan en la parte inferior de la jerarquía de instrucciones del repositorio y "actualmente no son compatibles con todas las funciones de Copilot". En Devin Desktop, un archivo AGENTS.md en el nivel raíz siempre está activo y alimenta el mismo motor de reglas que impulsa .devin/rules/.

Por lo tanto, el único archivo que ambas herramientas leen es la señal más débil en la herramienta que dejas y una de las más fuertes en la herramienta a la que llegas. Si haces mal el mapeo, pasarás una semana preguntándote por qué Devin sigue una convención que creías haber descartado.

Qué se transfiere realmente

La superficie de personalización de Copilot tiene tres capas, y GitHub documenta un orden de precedencia preciso para ellas: primero las instrucciones personales, luego las instrucciones del repositorio y después las instrucciones de la organización, con lo cual "se proporcionan todos los conjuntos de instrucciones relevantes a Copilot".

Dentro de la capa del repositorio hay tres subtipos, clasificados en orden:

  1. Instrucciones específicas de ruta en .github/instructions/**/*.instructions.md
  2. Instrucciones para todo el repositorio en .github/copilot-instructions.md
  3. Instrucciones del agente, "especificadas en archivos llamados AGENTS.md, CLAUDE.md o GEMINI.md"

Por otra parte, Copilot tiene un sistema de memoria. Copilot Memory está "actualmente en vista previa pública y sujeto a cambios", y almacena dos tipos de elementos: "Hechos a nivel de repositorio", como "convenciones de código, decisiones arquitectónicas, comandos de compilación y reglas específicas del proyecto", y "Preferencias a nivel de usuario", descritas como "Preferencias personales implícitas o explícitas sobre cómo un usuario desea interactuar con Copilot".

Ahora, el inventario.

Se transfiere tal cual. AGENTS.md. Ambas herramientas lo leen, no se necesita conversión. Esta es la única victoria gratuita, y es real.

Se transfiere con reescritura. .github/copilot-instructions.md y tus archivos .instructions.md específicos de ruta. El contenido es markdown portable; lo que cambia es el mecanismo de activación, que se detalla más adelante.

No se transfiere. Tres cosas, cada una por una razón diferente.

Instrucciones personales, debido al alcance: "Las instrucciones personalizadas personales solo son compatibles con GitHub Copilot Chat en GitHub". En primer lugar, nunca llegaban a tu editor, por lo que no hay nada que mover, pero pueden contener preferencias que valga la pena anotar.

Instrucciones personalizadas de la organización, porque son configuraciones de GitHub a nivel de organización, "actualmente solo compatibles con Copilot Chat en GitHub.com, Copilot code review en GitHub.com y Copilot cloud agent en GitHub.com". Si tu organización depende de ellas, ten en cuenta que dejar Copilot en un equipo no las elimina para los demás.

Copilot Memory, debido a dónde reside y qué tan estrechamente está vinculada. Los hechos a nivel de repositorio están "disponibles para cualquier usuario que tenga acceso a Copilot Memory en ese repositorio, pero esos hechos solo se pueden usar en operaciones en el mismo repositorio". Las preferencias a nivel de usuario "solo están disponibles en las interacciones posteriores de ese mismo usuario". No existe una ruta de exportación documentada hacia la herramienta de otro proveedor. Puedes verlos, y los propietarios del repositorio pueden revisar y eliminar los hechos a nivel de repositorio, pero extraerlos manualmente es el camino de migración.

Un detalle hace que esto sea menos doloroso de lo que parece: Copilot Memory es más limitada de lo que la mayoría de la gente asume. Según GitHub, "Copilot Memory se utiliza actualmente en Copilot cloud agent, Copilot code review y Copilot CLI". Si el uso de Copilot por parte de tu equipo ha sido principalmente la autocompletación en el editor y el chat, es posible que haya mucho menos allí de lo que temías. Compruébalo antes de presupuestar tiempo para ello; la misma confusión de superficies que hace que la gente se pregunte por qué Copilot olvida el contexto de la base de código se aplica aquí.

Esta guía no vuelve a explicar cómo funcionan las propias capas de Copilot; si necesitas eso primero, configurar la memoria de Copilot en VS Code cubre el lado de origen por completo. Lo que sigue asume que has decidido migrar y deseas realizar el mapeo.

La migración manual

Paso 1: Determina de qué capa de Copilot provenía realmente cada regla y luego haz el inventario

Haz esto antes de escribir nada en el lado de Devin, porque el orden de precedencia te indica cuál era tu comportamiento efectivo.

El orden completo de Copilot, de mayor a menor prioridad, es: instrucciones personales, instrucciones específicas de ruta, instrucciones para todo el repositorio, instrucciones del agente como AGENTS.md y, por último, instrucciones personalizadas de la organización. Si una convención existía tanto en copilot-instructions.md como en AGENTS.md, la primera ganaba. Migrar ambas a la capa siempre activa de Devin resucita a la perdedora.

Recopila cuatro cosas:

  • .github/copilot-instructions.md, completo.
  • Cada .github/instructions/**/*.instructions.md, con sus patrones de ruta. Los patrones son la parte valiosa.
  • AGENTS.md, CLAUDE.md o GEMINI.md si están presentes.
  • El contenido de tu Copilot Memory, extraído manualmente. Los hechos a nivel de repositorio son los que valen la pena; las preferencias a nivel de usuario son individuales y es más fácil simplemente volver a declararlas. GitHub señala que "los usuarios pueden ver y eliminar sus propias preferencias a nivel de usuario independientemente de su plan de Copilot", por lo que cada persona puede encargarse de las suyas.

Mientras lees los hechos a nivel de repositorio, ten en cuenta algo útil sobre cómo se mantenían veraces: se "almacenan con citas que apuntan al código que los respalda", y cuando Copilot usa uno, "verifica esas citas con la rama actual para confirmar que la información sigue siendo precisa. Solo se utilizan hechos validados". Nada en Devin hace eso por ti. Un hecho que migras es un hecho del que ahora eres responsable.

Paso 2: Elige un modo de activación para cada regla, porque Devin te obliga a hacerlo

Este es el verdadero trabajo, y es donde una migración perezosa produce una ventana de contexto saturada.

Las reglas de Devin Desktop residen en .devin/rules (preferido, y "tiene precedencia sobre .windsurf/"), con búsqueda en "tu directorio de espacio de trabajo actual", "cualquier subdirectorio de tu espacio de trabajo" y "directorios padre hasta la raíz de git". Cada regla del espacio de trabajo declara un modo de activación en el frontmatter a través del campo trigger:

Modotrigger:Cómo llega a CascadeCosto de contexto
Siempre activoalways_onContenido completo de la regla en el prompt del sistema en cada mensajeCada mensaje
Decisión del modelomodel_decision"Solo se muestra la description en el prompt del sistema"Descripción siempre; contenido completo bajo demanda
GlobglobSe aplica cuando se lee o edita un archivo que coincide con los globsSolo cuando se tocan archivos coincidentes
ManualmanualNo está en el prompt del sistema; se activa escribiendo @nombre-reglaSolo cuando se menciona con @

El mapeo desde Copilot es casi mecánico. Los archivos .instructions.md específicos de ruta se convierten en reglas glob (transfiere los patrones directamente). El contenido de copilot-instructions.md para todo el repositorio se divide: las partes que siempre deben aplicarse se convierten en always_on, y las partes que son situacionales se convierten en model_decision. Las preferencias personales van al archivo de reglas globales.

Dos límites a tener en cuenta: "Los archivos de reglas del espacio de trabajo están limitados a 12,000 caracteres cada uno. El archivo de reglas globales está limitado a 6,000 caracteres". Y ten en cuenta dónde vive ese archivo global: ~/.codeium/windsurf/memories/global_rules.md, dentro del directorio memories, razón por la cual mucha gente cree que no tiene ninguna regla global.

Luego, la excepción del frontmatter: "El archivo de reglas globales (global_rules.md) y los archivos AGENTS.md a nivel de raíz no usan frontmatter; siempre están activos". Esa es la trampa de la introducción. Tu AGENTS.md era la instrucción de repositorio de menor prioridad para Copilot; en Devin es incondicional.

Por último, una advertencia que cambia lo que deberías intentar migrar. El documento de memories de Devin Desktop comienza con esto: "Las Memories se aplican únicamente al agente heredado Cascade." Y: "El agente Devin Local (el agente predeterminado para nuevas pestañas) no conserva las memories". Si tu plan era mover Copilot Memory a las memories de Devin, el agente predeterminado no las mantendrá. La propia recomendación del proveedor apunta a otra parte: "Para el conocimiento que deseas que Cascade reutilice de manera confiable, escríbelo como una Regla o agrégalo a AGENTS.md en tu repositorio en lugar de depender de las Memories generadas automáticamente. Las Reglas están controladas por versiones, se pueden compartir con tu equipo y te brindan un control explícito sobre la activación".

Sigue ese consejo. El destino para los hechos migrados de Copilot Memory es una Regla, no una memory.

La mejor manera: mantén los hechos donde no se apliquen los modos de activación

Los pasos 1 y 2 producen una configuración correcta de Devin. También te otorgan un límite global de 6,000 caracteres, un límite de espacio de trabajo de 12,000 caracteres por archivo y la necesidad de decidir un modo de activación para cada cosa que sabes sobre tu proyecto.

Los modos de activación son un buen diseño para las reglas (instrucciones sobre cómo comportarse). No se adaptan bien a los hechos. "Usamos bun, no npm" requiere un disparador. "El servicio de pagos reintenta tres veces debido a una peculiaridad del sistema ascendente documentada en el ticket 4471" no requiere un disparador; quiere ser localizable cuando sea relevante, para siempre, sin consumir espacio en el prompt del sistema en cada mensaje.

Esa es la brecha que llena una capa de memoria, y también es lo que hace que la próxima migración sea económica. MemoryLake se configura en tres pasos.

Paso 1: Crea una clave de API

Inicia sesión y genera una clave de API desde tu panel de control. La credencial pertenece a tu equipo, no a Copilot ni a Devin, por lo que el almacenamiento es accesible desde cualquier agente que esté frente a él, incluido el agente Devin Local que no conserva sus propias memories.

Creación de una clave de API de MemoryLake al migrar de GitHub Copilot a Devin Desktop
Creación de una clave de API de MemoryLake al migrar de GitHub Copilot a Devin Desktop

Paso 2: Sube tus primeras memories

Aquí es donde va la extracción de Copilot Memory. Hechos a nivel de repositorio: decisiones arquitectónicas, comandos de compilación, reglas específicas del proyecto y las razones detrás de ellos. Luego, las preferencias a nivel de usuario que cada persona recuperó y las instrucciones personales que solo llegaban a Copilot Chat en GitHub.com.

Escritura del razonamiento detrás de cada regla en MemoryLake en lugar de un archivo de reglas con un modo de activación
Escritura del razonamiento detrás de cada regla en MemoryLake en lugar de un archivo de reglas con un modo de activación

Deja tus reglas de comportamiento reales en .devin/rules/ con los disparadores adecuados, y mantén las que siempre son verdaderas en AGENTS.md. La división es la clave: las reglas se mantienen lo suficientemente pequeñas como para no superar los límites de caracteres, y los hechos dejan de competir por ese espacio.

Paso 3: Conecta tu IA y agentes

Apunta Devin Desktop al almacenamiento. Como el almacenamiento es externo, no importa si la pestaña actual está ejecutando Cascade o el agente Devin Local, lo cual es la respuesta práctica a la advertencia en la parte superior de la página de memories de Devin.

Conexión de Devin Desktop, GitHub Copilot y otros agentes a una capa de memoria compartida
Conexión de Devin Desktop, GitHub Copilot y otros agentes a una capa de memoria compartida

Qué cambia esto en la práctica

El primer cambio es que los límites de caracteres dejan de ser una restricción de diseño para tu conocimiento. Seis mil caracteres es un límite razonable para saber cómo debe comportarse un agente, pero irracional para lo que debe saber.

El segundo es que dejas de pagar un impuesto de modo de activación sobre los hechos. model_decision coloca una descripción en el prompt del sistema en cada mensaje y recupera el cuerpo cuando parece relevante; algo sensato para una regla, pero un desperdicio para doscientos hechos de dominio que luego tendrías que describir individualmente.

El tercero es que la división entre Cascade y Devin Local pasa a ser problema de otro. Los proveedores reorganizan los agentes; tanto el archivo que confirmaste como el almacenamiento que posees sobreviven a ello. Los equipos que ya hicieron esto sobrevivieron al cambio de nombre de Windsurf a Devin Desktop sin tocar su base de conocimientos.

Buenas prácticas para una migración de Copilot a Devin

  • Lee el orden de precedencia antes de copiar nada. Si una convención existía en dos capas de Copilot, solo la de mayor prioridad estaba en efecto.
  • Comprueba primero qué contiene realmente Copilot Memory. Sirve a Copilot cloud agent, Copilot code review y Copilot CLI, no a todas las superficies. Puede que haya menos que mover de lo que esperas.
  • Transfiere los patrones de ruta textualmente. Las instrucciones específicas de ruta de Copilot se mapean limpiamente al disparador glob de Devin.
  • Asigna un modo de activación deliberadamente. Dejar todo por defecto en always_on es la forma en que una ventana de contexto se llena antes del primer prompt.
  • Busca global_rules.md dentro del directorio de memories. Está en ~/.codeium/windsurf/memories/global_rules.md, y siempre está activo sin frontmatter.
  • Prefiere .devin/rules sobre .windsurf/rules. Es la ubicación preferida y tiene precedencia, y el archivo único heredado .windsurfrules en la raíz del espacio de trabajo todavía se lee, así que elimínalo si está desactualizado.
  • No migres hechos a memories generadas automáticamente. Los propios documentos de Devin recomiendan Reglas o AGENTS.md para cualquier cosa que desees reutilizar de manera confiable, y el agente predeterminado no conserva las memories en absoluto.
  • Audita lo que sobrevivió después de una semana. Un conjunto de reglas migrado que nadie verificó es un conjunto de reglas que silenciosamente se ignora a medias. Auditar lo que tu IA recuerda es un buen hábito para comenzar con una configuración limpia.

Conclusión

AGENTS.md hace que esta migración parezca trivial y es genuinamente la mejor parte de ella. El resto es un trabajo de traducción entre dos filosofías diferentes: Copilot clasifica las fuentes de instrucciones y se las entrega todas al modelo, mientras que Devin obliga a cada regla a declarar cuándo quiere ser cargada.

Do esa traducción una vez, deliberadamente, con el orden de precedencia frente a ti. Y coloca los hechos (las decisiones, el conocimiento de dominio, las razones) en un lugar que no requiera que elijas un disparador para cada uno de ellos.

Preguntas frecuentes

¿Lee Devin Desktop mi .github/copilot-instructions.md?

No. Devin lee .devin/rules/*.md, .windsurf/rules/*.md como alternativa, el archivo heredado .windsurfrules, el archivo de reglas globales y AGENTS.md. Los archivos de instrucciones .github de Copilot son específicos de Copilot, por lo que su contenido debe reescribirse en una de las ubicaciones de Devin.

¿Puedo exportar Copilot Memory?

No existe una exportación documentada hacia otra herramienta. Puedes ver los hechos a nivel de repositorio y tus propias preferencias a nivel de usuario, y los propietarios del repositorio pueden revisar y eliminar los hechos a nivel de repositorio. Extraerlos y escribirlos es el camino de migración.

¿Por qué mi AGENTS.md de repente tiene más efecto en Devin?

Porque cambió de rango. En Copilot, las instrucciones del agente se sitúan por debajo de las instrucciones específicas de ruta y para todo el repositorio en el orden de precedencia, y no son compatibles con todas las funciones. En Devin, un archivo AGENTS.md a nivel de raíz no utiliza frontmatter y siempre está activo.

¿En torno a qué agente de Devin debo planificar?

En ambos, con cuidado. Las Memories se aplican únicamente al agente heredado Cascade, y el agente Devin Local (el predeterminado para nuevas pestañas) no conserva las memories. Las Reglas y AGENTS.md funcionan en todo el sistema de reglas, razón por la cual el proveedor los recomienda para cualquier cosa duradera.

¿Cómo evito saturar mi ventana de contexto?

Asigna modos de activación con honestidad. Solo las reglas verdaderamente universales deben ser always_on; las convenciones con alcance de archivo pertenecen a glob; las referencias ocasionales pertenecen a model_decision o manual. Luego, mantén los hechos completamente fuera de las reglas para no tener que describir cada uno solo para que sea recuperable.

¿Me siguen las instrucciones personalizadas de la organización?

No, y tampoco desaparecen. Son configuraciones de GitHub a nivel de organización que se aplican a Copilot Chat, code review y al agente en la nube en GitHub.com, para todos los miembros de la organización. Si tu equipo deja de usar Copilot, esas instrucciones siguen vigentes para todos los que no lo hayan hecho. Consulta migrar Copilot a Codex para ver cómo se mapea la misma capa en un destino diferente.

Lecturas relacionadas