Riferimento rapido per la sintassi e il comportamento di environment.yaml. Per una panoramica dei concetti e le guide, vedi Configurazione dell’ambiente.
| Campo | Tipo | Obbligatorio | Eseguito durante | Descrizione |
|---|
initialize | stringa o elenco | No | Solo build | Comandi di configurazione una tantum. I risultati vengono salvati nell’immagine macchina. Deve essere idempotente. |
maintenance | stringa o elenco | No | Build + avvio della sessione | Comandi ricorrenti per le dipendenze. Devono essere rapidi e incrementali. |
knowledge | elenco di oggetti | No | Mai (solo riferimento) | Informazioni caricate nel contesto di Devin all’avvio della sessione. |
| Campo | Tipo | Obbligatorio | Descrizione |
|---|
name | string | No | Etichetta leggibile mostrata nei log di build. Aiuta a identificare più facilmente gli errori. |
run | string | No | Comandi shell da eseguire. Sono supportate stringhe su più righe. I passaggi senza run vengono ignorati. |
Campi di una voce Knowledge
| Campo | Tipo | Obbligatorio | Descrizione |
|---|
name | string | Sì | Identificatore (ad es. test, lint, startup, architecture, notes). |
contents | string | Sì | Contenuto di riferimento. Non viene eseguito come comando. |
- I comandi vengono eseguiti in bash con
set -e abilitato — se una riga restituisce un errore, il passaggio si interrompe immediatamente.
- I comandi specifici per repo vengono eseguiti dalla directory radice della repo (
~/repos/<repo-name>). I comandi Enterprise e org-wide vengono eseguiti dalla directory home (~).
- Ogni passaggio nella forma estesa viene eseguito nel proprio contesto di shell.
| Ambito | Timeout |
|---|
| Comando singolo | 1 ora |
| Build totale | 2 ore |
Best practice:
- Usa subshell per i comandi nelle sottodirectory:
(cd packages/frontend && npm install).
- Preferisci installazioni incrementali in
maintenance (ad esempio, npm install invece di npm ci).
- Evita i comandi di build (
npm run build, make) in maintenance — vengono eseguiti a ogni sessione.
- Aggiungi i flag
-y per evitare prompt interattivi: sudo DEBIAN_FRONTEND=noninteractive apt-get install -y.
- I comandi devono poter essere eseguiti in sicurezza più volte —
maintenance viene eseguito a ogni sessione.
L’immagine di base di Devin (Ubuntu 22.04, x86_64) include questi strumenti. Non devi installarli.
| Categoria | Inclusi |
|---|
| Linguaggi | Node.js (tramite nvm), Python 3.12 (tramite pyenv, con anche le versioni 3.9–3.11 disponibili), Rust (tramite rustup), Java (OpenJDK 17), Scala, Go |
| Gestori di pacchetti | npm, yarn, pnpm, pip, cargo |
| Controllo versione | git, gh (GitHub CLI), git-lfs |
| Container | Docker (con plugin Compose — usa docker compose, non docker-compose) |
| Strumenti di build | make, build-essential (gcc, g++) |
| Utilità | curl, wget, jq, ripgrep, direnv, awscli, ffmpeg, Homebrew, OpenVPN |
| Browser | Chrome (per il testing nel browser) |
Questo elenco potrebbe non essere completo. Esegui which <tool> o <tool> --version in una sessione di Devin per verificare. Se manca qualcosa, installalo nella sezione initialize.
| Termine | Definizione |
|---|
| Configurazione | Una configurazione dell’ambiente salvata (il contenuto YAML). Ogni repo/org/enterprise ha la propria. |
| Versione della configurazione | Una revisione specifica di una configurazione. Ogni salvataggio crea una nuova versione. |
| Build | Il processo di esecuzione della configurazione per creare un’immagine macchina. |
| Immagine macchina | L’ambiente salvato creato da una build riuscita. Le sessioni si avviano dall’ultima immagine generata con successo. |
| Configurato | Un repository con una configurazione YAML esplicita (initialize/maintenance/knowledge). |
| Incluso | Un repository clonato nell’immagine macchina ma senza configurazione personalizzata. |
| Disponibile | Un repository accessibile all’org ma non aggiunto all’ambiente. |
| $ENVRC | Un file speciale per impostare le variabili d’ambiente. Simile a $GITHUB_ENV di GitHub Actions. |
| Successo parziale | Una build in cui la parte principale è riuscita, ma alcune configurazioni a livello di repository non sono andate a buon fine. |