Skip to main content
Le automazioni ti permettono di collegare eventi esterni — messaggi Slack, webhook GitHub, aggiornamenti dei ticket Linear, pianificazioni e webhook personalizzati — a sessione Devin che si avviano automaticamente. Invece di taggare manualmente Devin ogni volta che viene segnalato un bug o che un controllo CI fallisce, definisci il trigger una sola volta e Devin gestisce ogni evento non appena arriva. Puoi anche gestire le automazioni in modo dichiarativo con il provider Terraform. Per una guida video con quattro esempi, consulta il tutorial sulle automazioni di Devin.

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

  1. Vai su automazione nella barra laterale
  2. 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)
  3. Configura il trigger, le condizioni e l’action
  4. Fai clic su Crea automazione

Da un template

  1. Vai a Automazioni nella barra laterale
  2. 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
  3. Sfoglia la galleria dei template: ogni template è un’automazione preconfigurata per un flusso di lavoro comune
  4. Fai clic su un template per precompilare l’editor con il trigger, l’action e i limiti consigliati
  5. 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 con S) 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 /devin su 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 = failure per 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.
Ogni pianificazione ha un proprio fuso orario, che per impostazione predefinita corrisponde a quello del tuo browser e può essere modificato nell’editor della pianificazione. La pianificazione viene eseguita all’ora locale impostata, anche in caso di passaggio all’ora legale o solare.

Trigger webhook

I trigger webhook consentono di collegare qualsiasi sistema esterno a Devin tramite un endpoint HTTPS univoco.
  1. Crea un’automazione con un trigger Webhook
  2. Copia l’URL del webhook e il segreto mostrati nella configurazione del trigger
  3. Configura il tuo sistema esterno (PagerDuty, Datadog, Sentry o qualsiasi strumento personalizzato) in modo che invii richieste HTTP POST a questo URL
  4. Facoltativamente aggiungi un filtro del payload — un pattern regex a cui il corpo della richiesta deve corrispondere affinché l’automazione si attivi
Trasmetti il segreto del webhook in uno dei seguenti modi:
  • header X-Webhook-Secret: <secret>
  • header Authorization: Bearer <secret>
  • parametro di query ?secret=<secret>
Preferisci un header: le stringhe di query vengono spesso acquisite nei log di accesso di proxy, CDN e server. Il payload del webhook viene incluso nel prompt della sessione di Devin come contesto. I payload di dimensioni superiori a 200 KB vengono troncati automaticamente.

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.
Ogni richiesta deve includere il segreto nell’header HTTP X-Webhook-Secret. Ad esempio, per eseguire un test con curl:
Se perdi il segreto o devi ruotarlo, apri il trigger webhook nell’editor di automazione e rigeneralo. Il vecchio segreto smette subito di funzionare, quindi aggiorna il sistema esterno con il nuovo valore.

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.
Il pulsante Run now dell’automazione salta il controllo Preflight ed esegue direttamente le azioni configurate.

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.
  1. Crea un’automazione o modificane una esistente, quindi configurane i trigger e le condizioni.
  2. 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.
  3. Fai clic su Edit script, scegli Python, Node (JavaScript) o Bash nel selettore del runtime e modifica lo script iniziale.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
Le run di test eseguono lo script, ma non eseguono le azioni dell’automazione, non salvano modifiche al suo stato e non contrassegnano gli elementi emessi come gestiti. Le eventuali richieste esterne o gli effetti collaterali prodotti dallo script sono invece reali. Ad esempio, se testi uno script che scrive su un servizio esterno, la scrittura verrà eseguita comunque.

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:
Seleziona un messaggio Slack di esempio o un messaggio Slack recente in Test against per esaminare il risultato. Non basta stampare una decisione sullo standard output: lo script deve scrivere un JSON valido in OUTPUT_FILE e terminare con codice di uscita 0.

Elementi dello script, stato e limiti

  • Prevenzione dei duplicati: l’id di 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 una version, ad esempio il timestamp dell’ultimo aggiornamento nel sistema di origine. Senza un id, 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_FILE per 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-name nel 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.
I run in coda vengono visualizzati con lo stato Queued nell’attività dell’automazione.

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

Collegare le integrazioni MCP è vivamente consigliato: migliorano notevolmente la qualità delle automazioni, perché consentono a Devin di accedere a dati di runtime come logs, metriche e dettagli sugli errori.
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
La pagina dell’elenco delle automazioni mostra uno sparkline per ogni automazione, fornendo una panoramica visiva dell’attività degli ultimi 30 giorni.

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).