Los monorepos y los espacios de trabajo con varios paquetes requieren atención adicional en los blueprints, ya que distintos subdirectorios pueden usar diferentes lenguajes, gestores de paquetes o conjuntos de dependencias. Devin admite dos enfoques:Documentation Index
Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
Use this file to discover all available pages before exploring further.
Espacios de trabajo nativos (recomendado)
Crea un blueprint independiente para cada subdirectorio. Cada espacio de trabajo tiene sus propias secciones de initialize, maintenance y Knowledge, con el directorio de trabajo configurado automáticamente en ese subdirectorio.
Subshells
Ejecuta comandos en subdirectorios dentro de un solo blueprint usando
(cd dir && command). Es una opción más sencilla para monorepos pequeños con solo unos pocos paquetes.Espacios de trabajo nativos
Recomendado para la mayoría de los monorepos. Los espacios de trabajo nativos asignan a cada subdirectorio su propio blueprint, con una configuración, Knowledge y un directorio de trabajo aislados. Esto es más limpio y más fácil de mantener que usar subshells a medida que aumenta la cantidad de packages.
cd ni de subshells.
El blueprint raíz
Crear un workspace
- Ve a Settings > Environment > Blueprints
- Haz clic en el repositorio
- Haz clic en Agregar workspace
- Ingresa la ruta del subdirectorio (p. ej.,
packages/frontend) - Escribe el blueprint para ese workspace
Ejemplo
- Raíz
- packages/frontend
- packages/backend
knowledge de cada workspace se limitan a ese subdirectorio. Cuando Devin trabaja en packages/frontend, ve los comandos de lint/test/dev del frontend, no los del backend.
Cuándo usar workspaces nativos
- Los subdirectorios tienen lenguajes o gestores de paquetes diferentes
- Cada paquete necesita sus propias entradas de Knowledge (comandos de lint, test y compilación)
- Quieres una configuración aislada — si un blueprint falla en un workspace, no bloquea a los demás
- El número de paquetes está creciendo y un solo blueprint se está volviendo difícil de gestionar
Subshells
(cd ... && ...) crean un subshell. Cuando el subshell termina, el directorio de trabajo vuelve a la raíz del repositorio para el siguiente paso.
Por qué importan los subshells
- Correcto (con subshells)
- Incorrecto (sin subshells)
packages/.Cuándo usar subshells
- El monorepo tiene unos pocos paquetes con una configuración sencilla
- Todos los paquetes comparten el mismo lenguaje y gestor de paquetes
- No necesitas entradas de Knowledge específicas para cada paquete
Entradas de Knowledge para monorepos
Ejemplos
workspace de Turborepo / Nx
Múltiples versiones de JDK
Prácticas recomendadas
Prefiere workspaces nativos para monorepos complejos
Prefiere workspaces nativos para monorepos complejos
Cuando cada subdirectorio tiene su propio lenguaje, gestor de paquetes o proceso de compilación, los workspaces nativos mantienen cada blueprint centrado e independiente. Reserva los subshells para casos sencillos con pocos paquetes.
Usa siempre subshells para los cambios de directorio
Usa siempre subshells para los cambios de directorio
Cuando uses el enfoque de subshells, encierra los comandos
cd entre paréntesis: (cd dir && command). Esto evita que el cambio de directorio de un paso afecte al paso siguiente.Pon las herramientas compartidas en el blueprint de org
Pon las herramientas compartidas en el blueprint de org
Los entornos de ejecución y los gestores de paquetes que se usan en múltiples repos deben ir en el blueprint de toda la organización. Esto evita duplicaciones y mantiene los blueprints del repo centrados en la configuración específica del proyecto.
Ordena los pasos de maintenance según las dependencias
Ordena los pasos de maintenance según las dependencias
Si el paquete A depende de que el paquete B se compile primero, coloca el paso de compilación de B antes del paso de instalación de A en
maintenance. Los pasos del blueprint se ejecutan secuencialmente en el orden en que aparecen.Agrega una entrada de Knowledge sobre la estructura
Agrega una entrada de Knowledge sobre la estructura
Una entrada de Knowledge llamada
structure que asigne directorios a sus lenguajes y herramientas ayuda a Devin a navegar por la base de código. Incluye qué gestor de paquetes usa cada subdirectorio y cualquier dependencia entre paquetes.Usa entradas de Knowledge por paquete
Usa entradas de Knowledge por paquete
En lugar de una sola entrada de Knowledge grande, crea entradas separadas para cada paquete (p. ej.,
frontend, backend, ml-pipeline). Con workspaces nativos, cada workspace ya incluye su propia sección de Knowledge.Mantén maintenance incremental
Mantén maintenance incremental
Usa
pnpm install (no pnpm install --force) y uv sync (no rm -rf .venv && uv sync). Los comandos incrementales son más rápidos durante las reconstrucciones periódicas.- Configuración declarativa de Environment
- Referencia de blueprint
- Biblioteca de plantillas — incluye plantillas de monorepo listas para usar
