Esta es la referencia completa de los campos de los blueprints. Para obtener una introducción a los blueprints y cómo se integran en el entorno de Devin, consulta Configuración declarativa
del entorno.
Descripción general
Un blueprint tiene tres secciones principales, además de los campos opcionalesruns-on, shell e includes, una sección post-build para blueprints de nivel de org y blueprint de nivel Enterprise, y una sección clone para blueprints de nivel de repositorio:
Todas las secciones son opcionales. Puedes incluir cualquier combinación.
initialize se ejecuta durante las compilaciones completas y para los espacios de trabajo recompilados desde cero. Los resultados se guardan en la instantánea. En una compilación diferencial, los espacios de trabajo heredados omiten initialize, traen el código más reciente y ejecutan solo maintenance. Escribe maintenance de modo que sea autocontenido y pueda ejecutarse de forma independiente sobre la instantánea existente sin requerir que initialize se ejecute inmediatamente antes ni depender de variables de entorno que initialize haya escrito previamente en $ENVRC. Al inicio de cada sesión, los comandos de maintenance no se ejecutan automáticamente; en su lugar, se muestran al agente como contexto para que sepa qué comandos de dependencias ejecutar si es necesario (p. ej., después de traer el código más reciente). Los comandos deben seguir siendo rápidos e incrementales. Las compilaciones se ejecutan automáticamente cuando cambia tu blueprint y de forma periódica (cada ~24 horas).
initialize
Usainitialize para instalar herramientas y entornos de ejecución que no dependan del estado específico de tu código: entornos de ejecución de lenguajes, paquetes del sistema y CLI globales.
Forma sencilla
Para comandos de shell sencillos, usa un escalar de bloque:Forma estructurada
Para los pasos con nombre, las variables de entorno o GitHub Actions, usa una lista:run.
Cuándo usar initialize vs. maintenance
Ambas secciones se ejecutan durante las compilaciones completas. En las compilaciones diferenciales, los espacios de trabajo heredados omiten
initialize y ejecutan solo maintenance tras hacer pull del código más reciente. Las herramientas y los entornos de ejecución van en initialize; los comandos de dependencias que siguen los archivos de bloqueo de tu código van en maintenance.
maintenance
Usamaintenance para instalar dependencias y ejecutar otros comandos que deban ejecutarse después de clonar tu código. Estos comandos se ejecutan durante las compilaciones y se muestran al agente al inicio de la sesión para que pueda volver a ejecutarlos si las dependencias han cambiado. Aquí es donde van npm install, pip install, uv sync y comandos similares.
Para los blueprints a nivel de repositorio, los comandos
maintenance se ejecutan desde el directorio raíz del repositorio. Para los blueprints a nivel de organización, se ejecutan desde el directorio de inicio (~).knowledge
La secciónknowledge no se ejecuta. Proporciona información de referencia que Devin utiliza cuando trabaja en tu proyecto. Aquí es donde le indicas a Devin los comandos correctos para linting, pruebas, compilación y cualquier otro flujo de trabajo específico del proyecto.
El campo
name es una etiqueta. Por convención, lint, test y build son los nombres estándar. Devin los usa como referencia al verificar su trabajo. Puede agregar cualquier elemento de conocimiento adicional con nombres personalizados:
runs-on
El campo opcional de nivel superiorruns-on acepta una cadena o una lista de cadenas. Su valor predeterminado es ["default"]. Las etiquetas default y linux son alias, sin distinción entre mayúsculas y minúsculas, de la plataforma Linux predeterminada. Cualquier otra etiqueta debe coincidir con una configuración de máquina registrada en tu cuenta, como windows o macos.
Cuando un bloque incluye varias etiquetas de plataforma, Devin crea una compilación de instantánea por plataforma y ejecuta los mismos pasos en cada una. Dos bloques del mismo archivo no pueden resolverse en la misma plataforma; esto incluye los alias default y linux.
Para obtener información sobre la configuración específica de cada plataforma, consulta Compatibilidad con Windows y Compatibilidad con macOS.
shell
El campo opcional de nivel superiorshell selecciona el shell que ejecuta los pasos run del bloque en máquinas Windows. Se aplica a todos los pasos run de las secciones initialize, maintenance y post-build del bloque.
Los valores no distinguen entre mayúsculas y minúsculas. Cualquier otro valor se rechaza con el error
shell: must be 'default', 'bash', or 'powershell'.
shell: powershell:
- Los secretos, las variables
enva nivel de paso, las variables que los pasos anteriores escribieron en$ENVRCy el directorio de trabajo son los mismos que en los pasos de bash. Lee las variables de entorno con la sintaxis de PowerShell ($env:NAME). - Los ejemplos de
$ENVRCentre pasos están pensados para pasos de bash. En un paso de PowerShell,$env:ENVRCcontiene la ruta del archivo en formato de Git Bash (/c/...), por lo que esos ejemplos no funcionan tal cual; coloca los pasos que necesiten conservar variables para pasos posteriores en un bloque que use el shell predeterminado. - Usa rutas nativas de Windows (
C:\Users\...) en lugar del formato/c/...de Git Bash. - Un error de PowerShell (por ejemplo, un cmdlet que falla o un comando desconocido) detiene el paso.
- En el caso de los ejecutables nativos, solo el código de salida del último que ejecute el script determina el resultado del paso. Comprueba
$LASTEXITCODEdespués de los comandos nativos anteriores cuyo fallo deba detener el paso. - Los pasos
uses(GitHub Actions) no se ven afectados.
shell se define por bloque, un blueprint de varios documentos puede usar shell: powershell en su documento de Windows sin afectar al documento de Linux. En un bloque que incluya varias plataformas en runs-on, los mismos cuerpos run se ejecutan en PowerShell en Windows y en bash en las demás plataformas, por lo que deben ser válidos en ambos shells.
includes
El campo opcionalincludes solo se aplica a los blueprints basados en Git: Devin lo resuelve al detectar el archivo .devin/blueprint.yaml situado en la raíz de un repositorio. Se ignora en los blueprints creados en el editor de Settings y no se permite en un blueprint de espacio de trabajo incluido.
Acepta una cadena o una lista de cadenas. Cada entrada identifica un subdirectorio del espacio de trabajo; Devin busca <dir>/.devin/blueprint.yaml, aunque también puede usarse la ruta completa del archivo. Las rutas no pueden contener ...
No se permiten inclusiones anidadas y cada ruta de espacio de trabajo solo puede aparecer una vez. Si falta un archivo incluido, Devin considera eliminado ese espacio de trabajo.
post-build
La secciónpost-build está disponible solo en blueprints de nivel de organización y de nivel Enterprise (no es compatible con blueprints de nivel de repositorio). Sus pasos se ejecutan durante la compilación después de que se hayan clonado todos los repositorios y se hayan completado sus pasos initialize y maintenance, pero antes de la comprobación de estado y de que se cree la imagen de instantánea. Por eso, es el lugar adecuado para validaciones entre repositorios y comprobaciones de estado que requieren el Environment completamente montado.
Como se ejecuta al final de la compilación, con todo el Environment ya listo, un paso de post-build puede ver cada repositorio clonado y cada herramienta instalada por los blueprints de Enterprise, de la organización y del repositorio.
Los pasos
post-build usan los mismos tipos de pasos que initialize (comandos de shell run y uses de GitHub Actions), y se ejecutan desde el directorio de inicio (~).clone
Para los blueprints de nivel de repositorio, la sección opcionalclone anula los valores predeterminados que Devin usa al clonar el repositorio en la instantánea. Todos los campos son opcionales y, si no se especifican, adoptan un valor predeterminado razonable que mantiene el comportamiento actual.
clone solo se aplica a blueprints de nivel de repositorio: controla cómo se clona ese repositorio concreto en la instantánea. No tiene efecto en blueprints de nivel de organización ni de nivel Enterprise.Tipos de pasos
Cada paso deinitialize, maintenance o post-build utiliza uno de estos dos tipos: comandos de shell (run) o GitHub Actions (uses). Los pasos de maintenance solo admiten run; consulta GitHub Actions.
Reglas abreviadas y de validación
- Una sección proporcionada como una cadena sin formato se convierte en un único paso
run. - Una entrada de lista proporcionada como una cadena sin formato se convierte en un paso
run. - Un paso debe definir
runouses, pero nunca ambos. - Los pasos
usesno se pueden utilizar enmaintenance. La compilación falla con'uses' steps are not supported in maintenance sections. withsolo es válido en pasosuses.- Todos los valores de
withse convierten en cadenas; entrecomille los valores numéricos cuando la acción espere una cadena.
Reglas para documentos YAML
Cada documento delimitado por--- debe ser un mapeo YAML. Se rechaza una secuencia de nivel superior con each YAML document must be a mapping, not a sequence; use '---' to separate multiple blocks.
Comandos de shell (run)
Ejecuta cualquier comando de shell en bash, o en Windows PowerShell en Windows si el bloque define shell: powershell:
Detalles de ejecución:
- Los comandos se ejecutan en bash (Git Bash en Windows). Si algún comando de un script de varias líneas falla, todo el paso se detiene de inmediato. En Windows, establece el campo de nivel superior
shellenpowershellpara ejecutar los comandos en Windows PowerShell. - Los blueprints a nivel de organización se ejecutan en el directorio de inicio (
~). - Los blueprints a nivel de repositorio se ejecutan en la raíz del repositorio clonado.
- Cada paso tiene un tiempo de espera de 3 horas.
- Los secretos están disponibles automáticamente como variables de entorno.
GitHub Actions (uses)
Ejecuta GitHub Actions directamente en la sección initialize (o post-build) de tu blueprint:
Formato de la referencia de la acción:
github.com/ como el sufijo @<ref> son obligatorios. La ref suele ser una etiqueta de versión como v5.
Acciones de uso común:
Se admiten las acciones de Node.js (
node16, node20, node24) y las acciones compuestas. Las acciones de Docker solo se admiten en compilaciones de Linux, no en compilaciones de Windows. Los pasos de limpieza post se omiten. Consulta limitaciones de GitHub Actions.with:
Los valores que se pasan mediante with se proporcionan a la acción como entradas, siguiendo las mismas convenciones que los flujos de trabajo de GitHub Actions. Todos los valores se convierten en cadenas.
setup-python agrega el binario de Python a PATH, que sigue disponible en todos los pasos posteriores y en maintenance.
run vs uses: cuál usar
En la práctica, la mayoría de las configuraciones usan
uses para los entornos de ejecución y run para todo lo demás.
Variables de entorno y secretos
Variables de entorno por paso
Cualquier paso puede definir variables de entorno adicionales con el campoenv:
Variables de entorno compartidas entre pasos ($ENVRC)
Para propagar variables de entorno entre pasos, escríbalas en el archivo $ENVRC:
$ENVRC se exportan automáticamente y están disponibles para todos los
pasos siguientes y para la sesión de Devin generada por la compilación actual. Esto funciona
de manera similar a $GITHUB_ENV en GitHub Actions.
Esto también se aplica a PATH. Si instala una herramienta en un directorio no estándar
(cualquier directorio fuera de /usr/bin o /usr/local/bin), añádala a $ENVRC para que
los pasos siguientes y los blueprint de nivel de repositorio puedan encontrar el binario:
export PATH=... dentro de un bloque run: solo afecta al shell de ese paso.
Cada paso inicia un nuevo proceso de shell, por lo que los cambios en PATH que no se escriben en
$ENVRC se pierden.
Las acciones
uses: (p. ej., actions/setup-node) propagan automáticamente sus adiciones a PATH
a $ENVRC — solo tiene que hacer esto manualmente en los pasos run:.$ENVRC se restablece al inicio de cada compilación, incluidas las compilaciones diferenciales.
Los valores escritos durante una compilación no están disponibles en la siguiente. En
particular, un espacio de trabajo heredado solo ejecuta maintenance, por lo que no puede depender de
PATH ni de otras variables que initialize escribió en $ENVRC en la compilación
anterior. Configure cualquier entorno requerido por maintenance dentro de
maintenance.
Secretos
Los secretos configurados en la interfaz de Devin (a través de la pestaña Secretos en cada editor de blueprint) se inyectan automáticamente como variables de entorno. No hace falta declararlos en tu blueprint. Solo refiérelos por su nombre (p. ej.,$MY_SECRET).
Los secretos se inyectan antes de ejecutar cada paso durante las compilaciones. Se eliminan de la propia imagen de instantánea, por lo que las credenciales nunca quedan incorporadas en imágenes guardadas de la máquina. Fuera de los comandos del blueprint, los secretos no se exportan a todas las shells; Devin los vincula a los comandos específicos que los necesitan.
- Secretos de la organización: Están disponibles como variables de entorno en todos los pasos de todos los blueprints de la organización. Configúralos en la pestaña Secretos del editor del blueprint de toda la organización.
- Secretos de Enterprise: Se combinan con los secretos de la organización (los secretos de la organización tienen prioridad si hay conflictos de nombre). Están disponibles en todas las organizaciones de Enterprise.
- Secretos del repositorio: Están disponibles como variables de entorno en los pasos y comandos del blueprint de ese repo. Configúralos en la pestaña Secretos del editor de blueprint del repositorio.
Secretos solo para compilación: Los secretos de Enterprise se pueden marcar como Build only cuando los agregas en la pestaña Secretos del editor del blueprint de Enterprise. Esta opción no está disponible para los secretos de organización ni de repositorio. Un secreto solo para compilación está disponible únicamente para los pasos de los blueprints de Enterprise y de la organización durante las compilaciones de instantánea. Se elimina antes de que se clonen los repositorios, por lo que los pasos del blueprint del repo y los pasos de
post-build no pueden leerlo, y nunca se inyecta en las sesiones de Devin. Úsalo para credenciales necesarias solo durante la configuración de Enterprise o de la organización (p. ej., para descargar artefactos privados en el initialize del blueprint de Enterprise).Archivos adjuntos
Puedes subir archivos (comosettings.xml u otros archivos de configuración) desde el editor de blueprint. Los archivos subidos se guardan en ~/.files/ y se configura una variable de entorno que apunta a la ruta de cada archivo:
FILE_.
Los nombres de archivo deben ser nombres simples: no pueden comenzar con un punto ni contener separadores de ruta, espacios en blanco o caracteres de control. Para usar un archivo oculto como .npmrc, súbelo con un nombre sin el punto inicial (por ejemplo, npmrc) y cópialo a su ubicación en un paso del blueprint.
Usa archivos adjuntos en los pasos de tu blueprint:
blueprints respaldados por Git
Puedes almacenar blueprints como archivos.devin/blueprint.yaml directamente en tu repositorio y luego sincronizarlos mediante la API o la UI. Consulta blueprints respaldados por Git para obtener instrucciones de configuración y más detalles.
Ejemplo completo
Para ver cómo se combinan los blueprints entre niveles (enterprise → org → repo), los estados de compilación, los estados del repositorio y qué activa una recompilación, consulta Compilaciones y
sesiones en la página de configuración declarativa.

