Concetti fondamentali
Un’automazione è composta da un trigger e da azioni, con condizioni e un controllo Preflight facoltativi:Tipi di azione
Fonti di attivazione
Le fonti diverse dalla pianificazione compaiono nel picker dei trigger una volta collegata la relativa integrazione in Settings > Connections.
Una singola automazione può avere più trigger: si combinano con logica OR, quindi l’automazione si attiva quando corrisponde uno qualsiasi dei trigger. Per esempio, puoi avere un’automazione che si attiva sia in caso di fallimento della CI su GitHub sia con una reazione su Slack.
Creare un’automazione
Dalla pagina delle automazioni
- Vai su automazione nella barra laterale
- Fai clic su Crea automazione e scegli Create per aprire un editor vuoto (se non hai ancora alcuna automazione, fai invece clic su Create manually nella pagina iniziale). Lo stesso menu offre anche Template (apre la galleria dei template) e Generate with Devin (avvia una sessione che crea l’automazione insieme a te)
- Configura il trigger, le condizioni e l’action
- Fai clic su Crea automazione
Da un template
- Vai a Automazioni nella barra laterale
- Fai clic su Crea automazione > Template (se non hai ancora alcuna automazione, fai invece clic su Crea da template nella pagina iniziale), oppure vai direttamente a
/automations/templates - Sfoglia la galleria dei template: ogni template è un’automazione preconfigurata per un flusso di lavoro comune
- Fai clic su un template per precompilare l’editor con il trigger, l’action e i limiti consigliati
- Personalizza la configurazione (ad es. seleziona il canale Slack o la repo) e fai clic su Crea automazione
Uso del linguaggio naturale
Nella pagina delle automazioni, fai clic su Crea automazione > Generate with Devin (se non hai ancora alcuna automazione, fai invece clic sulla scheda Generate with Devin nella pagina iniziale). Devin apre una nuova sessione per aiutarti a creare l’automazione. Descrivi ciò che vuoi fare — ad esempio: “Quando un controllo CI fallisce su my-org/my-repo, fai in modo che Devin lo corregga ed esegua il push sullo stesso branch.” Devin genererà per te la configurazione dell’automazione, che potrai esaminare e creare.Configurazione dei trigger
Trigger Slack
I trigger Slack si attivano quando viene pubblicato un messaggio o viene aggiunta una reazione in un canale a cui Devin è stato invitato.- Messaggio Slack: Si attiva alla pubblicazione di nuovi messaggi. Per default viene aggiunta una condizione sul canale; puoi rimuoverla per intercettare i messaggi di più canali, ma in tal caso ogni gruppo di condizioni necessita di almeno un altro filtro (ad esempio il testo del messaggio o il tipo di mittente — Include thread replies da solo non è sufficiente).
- Gruppo di utenti menzionato: Si attiva quando viene menzionato un gruppo di utenti Slack (ad esempio
@oncall). Seleziona il gruppo o inserisci il suo ID Slack (inizia conS) e, facoltativamente, limitalo a canali specifici. - Reazione Slack: Si attiva quando a un messaggio viene aggiunta una specifica reazione emoji (ad es. 🚨 per gli incidenti). Puoi filtrare in base al nome della reazione e al canale.
Per i trigger con ambito su un canale, Devin deve essere invitato nel canale Slack. Devi anche aver collegato il tuo account Slack personale in Settings > Connections > Slack.
Trigger di GitHub
I trigger di GitHub si attivano in risposta agli eventi del repository. Devi selezionare un repository specifico per ogni trigger.- Issue: Si attiva sugli eventi della issue (apertura, chiusura, riapertura, modifica, aggiunta di label).
- Commento su issue: Si attiva quando viene pubblicato un commento su una issue di GitHub. In genere viene usato con una condizione
starts_with "/devin", così gli utenti possono digitare/devinsu qualsiasi issue per attivare Devin. - Pull request: Si attiva sugli eventi della PR (apertura, sincronizzazione, ecc.).
- Review della pull request: Si attiva quando viene inviata una review su una PR.
- Commento di review della pull request: Si attiva sui singoli commenti di review.
- Check run (CI): Si attiva quando un controllo CI viene completato. Filtra per
conclusion = failureper correggere automaticamente le build non riuscite. - Push: Si attiva quando viene eseguito un push su un branch.
Per impostazione predefinita, le automazioni GitHub si attivano solo sui repository privati. Un Admin può abilitare una singola connessione GitHub per i repository pubblici: in Settings → Connections → GitHub, apri il menu della connessione e imposta Ambito dell’automazione su Tutti i repo installati. Chiunque su Internet può commentare o aprire una PR su un repo pubblico, quindi i trigger dei repository pubblici comportano un rischio maggiore di prompt injection: abilitali consapevolmente e mantieni restrittive le condizioni dei trigger.
Trigger GitLab
I trigger GitLab si attivano in base agli eventi di progetto nella tua istanza GitLab collegata:- Merge request: si attiva sulle azioni relative alle MR (aperta, chiusa, merged, riaperta, approvata, aggiornata).
- Commento MR: si attiva quando viene pubblicato un commento (nota) su una merge request, inclusi i thread di review dei diff.
- Issue: si attiva sulle azioni relative alle issue (aperta, chiusa, riaperta, aggiornata).
- commento su issue: si attiva quando viene pubblicato un commento su una issue.
- Push: si attiva sui push verso un branch.
- Pipeline: si attiva quando una pipeline raggiunge un determinato status: filtra per status (ad es.
failed) per correggere automaticamente le pipeline non riuscite.
Trigger di Linear
I trigger di Linear si attivano in risposta agli eventi relativi alle issue nel tuo workspace Linear connesso. Devi selezionare un team per ogni trigger.- Issue creata: Si attiva quando viene creata una nuova issue nel team selezionato.
- etichetta aggiunta: Si attiva quando una label viene applicata a un’issue (ad es.
bug,devin). - Stato modificato: Si attiva quando cambia lo stato di un’issue (ad es. viene spostata in “In Progress”).
- Priorità modificata: Si attiva quando cambia la priorità di un’issue.
- Assegnata: Si attiva quando un’issue viene assegnata a qualcuno.
- Issue spostata: Si attiva quando un’issue viene spostata in un altro team: il filtro per team del trigger corrisponde al team di destinazione.
Trigger Jira
I trigger Jira si attivano in base agli eventi sulle issue nel sito Jira collegato. Puoi filtrare per progetto, label, status, assegnatario ed epic:- Issue creata: si attiva alla creazione di una nuova issue.
- issue aggiornata: si attiva quando cambiano i campi di una issue.
- etichetta aggiunta: si attiva quando una label viene applicata a una issue.
- stato modificato: si attiva quando cambia lo status di una issue.
- assegnata: si attiva quando una issue viene assegnata a qualcuno.
- Comment created or edited: si attiva quando un commento viene aggiunto o modificato su una issue.
Trigger di pianificazione
I trigger di pianificazione si attivano in base a una pianificazione temporale, ricorrente oppure come singola run una tantum. Nel menu a discesa dei trigger, espandi Pianificazione e scegli Ogni ora, Ogni giorno, Ogni settimana, Esegui una volta oppure Pianificazione personalizzata.- Ricorrente: imposta la frequenza (oraria, giornaliera, settimanale) e l’ora. Dietro le quinte, le pianificazioni usano il formato RRULE di iCalendar. Scegli Pianificazione personalizzata per creare una ricorrenza personalizzata (ripeti ogni N minuti/ore/giorni/settimane/mesi) oppure inserisci direttamente una stringa RRULE grezza (ad es.
FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0) per cadenze più complesse. - Esegui una volta: si attiva una sola volta a una data e ora future specifiche, poi si disattiva automaticamente. Utile per attività differite una tantum, ad es. “sveglia Devin tra 12 ore per eseguire un’attività”. Scegli la data e l’ora (per impostazione predefinita è un’ora da adesso); devono essere nel futuro.
Trigger webhook
I trigger webhook consentono di collegare qualsiasi sistema esterno a Devin tramite un endpoint HTTPS univoco.- Crea un’automazione con un trigger Webhook
- Copia l’URL del webhook e il segreto mostrati nella configurazione del trigger
- Configura il tuo sistema esterno (PagerDuty, Datadog, Sentry o qualsiasi strumento personalizzato) in modo che invii richieste HTTP POST a questo URL
- Facoltativamente aggiungi un filtro del payload — un pattern regex a cui il corpo della richiesta deve corrispondere affinché l’automazione si attivi
- header
X-Webhook-Secret: <secret> - header
Authorization: Bearer <secret> - parametro di query
?secret=<secret>
Segreto del webhook
Ogni trigger webhook dispone di un segreto che autentica le richieste in arrivo: le chiamate prive del segreto corretto vengono rifiutate. Il segreto viene generato automaticamente e visualizzato quando aggiungi il trigger webhook nell’editor di automazione.Copia il segreto quando viene visualizzato: non verrà più mostrato. Se lo perdi, non potrai recuperarlo; rigeneralo.
X-Webhook-Secret. Ad esempio, per eseguire un test con curl:
Controlli Preflight
Un controllo Preflight è un passaggio facoltativo che viene eseguito tra l’attivazione del trigger e le azioni dell’automazione. Un’automazione può averne di due tipi:
Per aggiungerne uno, fai clic su Add a step before the agent runs sotto la sezione del trigger e scegli filtro LLM o Run a script.
Gli script Preflight sono in fase di rilascio graduale. Se l’opzione Run a script non è disponibile, gli script non sono ancora abilitati per la tua organizzazione.
Filtro LLM
Seleziona filtro LLM e descrivi quali eventi includere o escludere. Ad esempio: «PRs relative al servizio di autenticazione» oppure «messaggi Slack sulla cena». Un modello decisionale leggero legge l’intero evento. L’agente viene eseguito solo per gli eventi corrispondenti.Configurare e testare uno script Preflight
Lo script viene eseguito in una macchina virtuale (VM) separata e di breve durata, non all’interno della sessione Devin che potrebbe avviare. Può leggere l’evento, conservare una piccola quantità di stato tra una run e l’altra e decidere quale lavoro far arrivare alle azioni configurate.- Crea un’automazione o modificane una esistente, quindi configurane i trigger e le condizioni.
- Fai clic su Add a step before the agent runs sotto la sezione dei trigger e seleziona Run a script nella scheda Before the agent runs.
- Fai clic su Edit script, scegli Python, Node (JavaScript) o Bash nel selettore del runtime e modifica lo script iniziale.
- Se necessario, usa Select secrets nell’editor degli script per associare i segreti dell’organizzazione. Vengono iniettati come variabili d’ambiente solo i segreti selezionati. Per salvare o testare uno script con segreti associati è necessaria l’autorizzazione a gestire i segreti dell’organizzazione.
- Imposta Timeout (seconds) nella scheda: il valore predefinito è 60 secondi e l’intervallo consentito va da 1 a 300 secondi. Per impostazione predefinita, lo script usa il Minimal environment; se sono disponibili snapshot della macchina, il selettore Environment consente anche di scegliere uno snapshot dell’organizzazione che includa le tue dipendenze.
- Nell’editor degli script, scegli un evento in Test against e fai clic su Run. Puoi testare lo script non salvato su un evento di esempio di un trigger configurato oppure su un evento recente di un’automazione esistente. Esamina il risultato, i log e, per gli elementi emessi, l’anteprima di quanti verrebbero eseguiti, risulterebbero duplicati o verrebbero rinviati.
- Fai clic su Save script per applicare le modifiche apportate nell’editor, quindi su Crea automazione oppure salva l’automazione per rendere persistente la configurazione.
Input e output dello script
Lo script riceve queste variabili d’ambiente. Ognuna contiene un percorso di file, non i dati JSON veri e propri:
Scrivi in
OUTPUT_FILE esattamente uno tra run e items, facoltativamente con una stringa reason:
Ad esempio, questo script Python lascia passare un messaggio Slack solo se il testo contiene
urgent:
OUTPUT_FILE e terminare con codice di uscita 0.
Elementi dello script, stato e limiti
- Prevenzione dei duplicati: l’
iddi un elemento identifica un’unità di lavoro all’interno di questa automazione, non semplicemente un’entità.{"id": "INC-1"}viene gestito una sola volta; per elaborare una nuova occorrenza dello stesso incidente, aggiungi unaversion, ad esempio il timestamp dell’ultimo aggiornamento nel sistema di origine. Senza unid, Preflight identifica l’elemento tramite un hash del suo contenuto, quindi modificarne il contenuto può causare un’altra run. - Limite di elementi per run: per impostazione predefinita, vengono inviati al massimo 10 nuovi elementi per run; il limite massimo consentito dal sistema è 50. Gli elementi che superano il limite non vengono gestiti né pianificati automaticamente: la run successiva dello script dovrà emetterli di nuovo. Non far avanzare un cursore oltre il lavoro rinviato solo perché è comparso nel tuo output.
- Esiti precedenti: usa
LAST_RUN_FILEper distinguere il lavoro in esecuzione, completato, non riuscito o saltato. Un elemento la cui run non riesce viene rilasciato, in modo che una run successiva dello script possa emetterlo di nuovo. - Stato persistente: le run live dello script di un’automazione vengono eseguite una alla volta. Gli script non riusciti non fanno avanzare lo stato salvato né contrassegnano gli elementi come gestiti. Clear state cancella sia lo stato JSON salvato sia la cronologia degli elementi già gestiti; dopo questa reimpostazione, gli elementi gestiti in precedenza possono essere eseguiti di nuovo.
- Limiti di dimensione: il sorgente e l’output dello script sono limitati a 256 KiB ciascuno, lo stato salvato a 64 KiB e i log acquisiti a 1 MiB.
- Errori: un codice di uscita diverso da zero, un timeout, un output o uno stato non validi o un errore dell’infrastruttura interrompono l’evento prima che vengano eseguite le relative azioni. Lo script non viene ritentato automaticamente per quell’evento; un trigger successivo può eseguirlo di nuovo.
- Accesso alla rete: la VM dello script rispetta le restrizioni di rete dell’automazione e il profilo di sicurezza applicabile. Ad esempio, per interrogare periodicamente un servizio di avvisi esterno, il relativo host deve essere consentito. Associare un segreto non concede l’accesso alla rete.
Configurare le actions
Avvia sessione
L’azione più comune. Quando il trigger si attiva, Devin avvia una nuova sessione con il tuo prompt. Il payload dell’evento (ad es. il testo del messaggio di Slack, il corpo del webhook di GitHub o i dettagli del ticket di Linear) viene aggiunto automaticamente al prompt, in modo che Devin abbia il contesto completo. Opzioni:- Prompt: Le istruzioni che Devin segue. Scrivilo come faresti con un normale prompt per Devin.
- Playbook (facoltativo): Usa
@playbook-namenel tuo prompt per includere un playbook con istruzioni aggiuntive. - Tag (facoltativo): Aggiungi tag alle sessioni create da questa automazione per facilitare il filtraggio.
Invia un messaggio a una sessione
Invia un messaggio a una sessione Devin esistente e di lunga durata. Utile quando vuoi che un’unica sessione persistente elabori gli eventi nel tempo, invece di avviare una nuova sessione per ciascun evento. Devi selezionare la sessione di destinazione durante la configurazione di questa action.Triage con Devin (monitor)
Crea una sessione persistente di Devin che monitora un canale Slack. Per tutti i dettagli su questo tipo di action, consulta la guida all’auto-triage.Notifica email
Invia una notifica email quando viene eseguita l’automazione. Scegli quando inviare la notifica:- Sempre — a ogni esecuzione
- In caso di errore — solo quando la sessione non riesce o si verifica un errore
- In caso di successo — solo quando la sessione si completa correttamente
Limiti e protezioni
Le automazioni includono controlli integrati per evitare un utilizzo incontrollato:Limite di ACU
Imposta un budget massimo di ACU (Agent Compute Unit) per ogni sessione avviata da questa automazione. Se Devin raggiunge il limite, la sessione si arresta. In questo modo, una singola esecuzione non può consumare risorse eccessive.Limite di invocazione
Imposta un limite al numero di volte in cui l’automazione può attivarsi entro un intervallo di tempo. Ad esempio, “al massimo 10 invocazioni all’ora” impedisce che un canale Slack particolarmente attivo o una raffica di fallimenti della CI generino decine di sessioni. Entrambi i campi sono facoltativi — se vengono svuotati, l’automazione viene eseguita senza quel limite. Le nuove automazioni partono senza limite di ACU e con un limite di frequenza di 50 run all’ora (150 all’ora per le automazioni di triage che monitorano canali Slack); i template applicano gli stessi valori predefiniti.Accodamento
Per impostazione predefinita, ogni evento corrispondente avvia subito un run. Attiva Enable queueing nell’editor di automazione per limitare il numero di run eseguiti contemporaneamente:- Concurrent runs: il numero massimo di run simultanei di questa automazione. Gli eventi in eccesso restano in coda. Un run smette di essere conteggiato ai fini del limite non appena la sua sessione termina e resta in attesa di nuove istruzioni.
- Queue depth: il numero massimo di eventi che possono restare in coda. Gli eventi che arrivano quando la coda è piena vengono scartati.
Policy di rete
Puoi abilitare una policy di rete per limitare gli host esterni a cui possono accedere le sessioni dell’automazione. Questo è particolarmente importante per le automazioni che elaborano input utente non attendibile (ad es. messaggi Slack, payload di webhook). Puoi aggiungere domini specifici all’allowlist se Devin deve raggiungere servizi esterni. La policy di rete di un’automazione può solo limitare l’accesso: viene intersecata con il profilo di sicurezza che regola le sessioni dell’automazione.Integrazioni MCP
Le automazioni usano le integrazioni MCP per consentire a Devin di accedere a strumenti esterni. Quando crei un’automazione, la sezione Connessioni mostra quali server MCP sono consigliati e il loro stato di connessione. Ad esempio, il template “Fix Sentry Errors Daily” consiglia Sentry MCP, così Devin può recuperare da Sentry gli errori non risolti. Il template “Investigate Alerts Triggered” consiglia Datadog MCP per recuperare metriche e tracce. Abilita i server MCP nella tab Settings → Connections → MCPs (oppure installa i relativi plugin dal marketplace dei plugin) prima di creare automazioni che ne hanno bisogno.Accesso agli strumenti di Slack
Per impostazione predefinita, le sessioni di automazione possono leggere e scrivere nei canali Slack coinvolti nel trigger. Puoi concedere l’accesso ad altri canali Slack nella sezione strumenti di Slack dell’editor di automazione. Questa opzione è utile quando Devin deve leggere più canali oltre a quello che ha attivato l’automazione.Attività e monitoraggio
Ogni automazione tiene traccia della cronologia delle proprie invocazioni. Nella pagina dei dettagli dell’automazione, la scheda Activity mostra:- Invocazioni recenti con timestamp
- Se ogni invocazione è riuscita o è stata ignorata
- Collegamenti alle sessioni Devin create
- Messaggi di errore per le invocazioni non riuscite
Attivazione e disattivazione
Attiva o disattiva un’automazione in qualsiasi momento dall’elenco delle automazioni o dalla pagina di dettaglio. Le automazioni disattivate smettono di elaborare gli eventi, ma mantengono la configurazione. Quando riattivi un’automazione, l’elaborazione degli eventi riprende immediatamente.Template
Devin include una libreria di template di automazione predefiniti per i flussi di lavoro più comuni:
Per sfogliare tutti i template, apri la pagina automazione nell’app Devin e clicca su Crea automazione > Template (oppure vai direttamente su
/automations/templates).
