// editor
Devin Desktop
Donde tú y Devin Local realmente trabajan.
Para usuarios de Devin Desktop
Devin Desktop (el IDE Windsurf) es el editor y Devin Local es el agente. En un monorepo, el agente igual necesita un mapa de qué archivo importa. Maguyva indexa tu base de código y la pone a disposición vía MCP (semántico, AST, grafo y texto), así que “dónde pasa la autenticación” devuelve el flujo de auth real, no siete stubs de prueba.
Nivel Free: 3 repositorios, Hasta 50 mil líneas de repo indexadas, sin tarjeta.
Devin Desktop edita lo que le señalas. Maguyva le dice a Devin Local qué archivo señalar. Cuatro piezas. Cada una tiene su trabajo.
// editor
Donde tú y Devin Local realmente trabajan.
// contexto manual
El contexto manual funciona, hasta que el repo se hace grande.
// base de código
Información sobre la base de código obtenida automáticamente vía MCP.
// quién paga
Los agentes no generan cargos por usuario. Ver precios
El IDE no es el problema. Devin Local, el autocompletado de tabulador, las ediciones multiarchivo y .devin/rules/ son excelentes, y ya los usas para:
.devin/rules/ para convenciones del repo y reglas de estilo.@ para traer un archivo específico al contexto.Sigue haciendo eso. Nada de eso desaparece.
Pero en un monorepo real (TypeScript con dependencias de workspace, servicios en Python, paquetes mixtos) el contexto del agente se rompe en el momento en que el archivo relevante todavía no está en el radar de Devin Local.
Cuatro arreglos manuales junto con su modo de falla. Izquierda = lo que haces hoy. Derecha = dónde se rompe.
// the fix
Mencionas con @ los tres archivos que crees que importan. Devin Local edita limpiamente dentro de ellos.
// where it breaks
Funciona cuando ya sabes cuáles archivos están involucrados. El objetivo de las herramientas de contexto es justamente mostrar los archivos que no sabías que había que mencionar.
// the fix
Pegas 200 líneas de otro paquete en Devin Local para darle suficiente contexto.
// where it breaks
El snippet que pegaste a las 9 a. m. no refleja el rebase que tu compañero hizo a las 11 a. m. Devin Local está editando a partir de una versión fantasma del paquete.
// the fix
Escribes un archivo .devin/rules/ o un markdown de arquitectura. Hoy está correcto.
// where it breaks
Todo lo que escribes a mano se desactualiza. El código es la fuente de verdad. Un doc que explica la capa de colas es correcto durante una semana, y después está mal para siempre.
// the fix
Agregas .devin/rules/ para nomenclatura, lint y comandos de build. Genial para el comportamiento.
// where it breaks
.devin/rules/ es el lugar correcto para “siempre ejecuta pnpm tsc -b antes de los commits”. No es un índice consultable de cada símbolo, archivo y punto de llamada en tu monorepo.
No es un reemplazo de Devin Desktop. Es la capa de contexto de repo que se conecta al soporte MCP de Devin Local.
.devin/rules/ sigue haciendo su trabajo. Las menciones con @ siguen haciendo el suyo. Maguyva llena el hueco que ellos no cubren. Devin Local edita el archivo que le señalas.
Maguyva le dice al agente qué archivo señalar.
Entre paquetes, entre lenguajes. Fundamentado en el grafo de llamadas real, no en el grep de Devin Local.
// workflow 01
devin> ¿dónde pasa la autenticación en este monorepo? graph::query("authentication flow") packages/web/src/auth/session.ts:42 middleware packages/api/src/auth/jwt.ts:88 verificación del token packages/shared/src/auth/types.ts:12 AuthContext packages/admin/src/auth/admin-only.ts:31 control RBAC → 4 puntos de entrada en 4 paquetes, ordenados por densidad de puntos de llamada. [exit 0]
No mencionaste ningún archivo. No pegaste ningún snippet. Devin Local tiene los cuatro archivos que importan, en el orden correcto, y puede hacer una edición fundamentada.
// workflow 02
devin> ¿cómo maneja normalizePhoneNumber el formato E.164? semantic::query("normalize phone E.164") packages/shared/util/phone.ts:88 normalizePhoneNumber() ← impl real packages/api/test/phone.spec.ts:14 jest.mock(...) ← stub [exit 0]
Los nombres mienten. Los mocks tapan el código real. Maguyva ubica la implementación real por encima del mock de prueba, en todos los paquetes.
// workflow 03
devin> ¿qué llama a QueueDispatcher.publish en todo el monorepo? graph::callers(QueueDispatcher.publish) 3 en packages/billing/* 1 en packages/audit/* 1 en packages/notifications/* 1 en services/python-worker/* ← entre lenguajes vía stub de gRPC [exit 0]
Entre paquetes, y entre lenguajes cuando tienes un repo políglota, los puntos de llamada aparecen inline. El diff está fundamentado en importadores reales, no en el grep de Devin Local.
Tres pasos. Nivel Free: 3 repositorios, Hasta 50 mil líneas de repo indexadas, sin tarjeta.
// step 01
Elige el monorepo donde más problemas te ha causado la falta de contexto.
// step 02
~/.config/devin/mcp_config.json
{
"mcpServers": {
"maguyva": {
"url": "https://maguyva.tools/mcp",
"headers": {
"Authorization": "Bearer ${env:MAGUYVA_API_KEY}"
}
}
}
} // step 03
No empieces con toda tu empresa. Empieza con un repo y una pregunta verificable, como “¿qué llama a formatInvoice entre paquetes?”