I flussi di lavoro dinamici sono disponibili in qualsiasi sessione Devin: descrivi il lavoro e chiedi a Devin di eseguirlo come flusso di lavoro.Account Enterprise: la funzionalità è disattivata finché un amministratore Enterprise non attiva Flussi di lavoro dinamici in Settings Enterprise > Devin. Fino ad allora, Devin non eseguirà flussi di lavoro in nessuna delle organizzazioni dell’Enterprise.
Cosa sono i flussi di lavoro dinamici?
Un flusso di lavoro dinamico è uno script Python deterministico che orchestra un team di agenti Devin. Devin scrive ed esegue lo script, che decide quali agenti eseguire, in quale ordine e quali istruzioni fornire a ciascuno, utilizzando i risultati strutturati degli agenti precedenti per creare i prompt di quelli successivi. Ogni chiamata a un agente viene registrata, pertanto un run del flusso di lavoro è osservabile durante l’esecuzione e può essere ripreso in caso di interruzione: gli agenti che hanno completato il lavoro riproducono istantaneamente i risultati registrati e viene rieseguito solo il lavoro incompleto. Questo va oltre i Devin gestiti, in cui la sessione di coordinamento genera e supervisiona manualmente le sessioni figlie. In un flusso di lavoro, l’orchestrazione stessa è codice.Come funzionano i flussi di lavoro dinamici e quando usarli, con un esempio di revisione dell'accessibilità di 12 componenti
Quando usare un flusso di lavoro
Richiedi un flusso di lavoro quando l’attività presenta una struttura ben definita:- Ampia ramificazione con un passaggio di consolidamento — circa cinque o più unità indipendenti (file, moduli, endpoint, ticket), ciascuna delle quali richiede valutazione o verifica, i cui risultati vengono poi aggregati.
- Una pipeline a fasi — le fasi successive utilizzano l’output strutturato di quelle precedenti, ad esempio audit → soluzione → verifica.
- La modifica è meccanica — un codemod, l’autocorrezione del linter o un generatore la eseguono più rapidamente e in modo più affidabile degli agenti.
- Sono necessarie solo una o due sessioni indipendenti, senza scambio di dati tra loro.
- Il lavoro è strettamente interconnesso tramite uno stato condiviso, oppure è di piccola portata e sequenziale.
Esempi di prompt
Descrivi l’attività e chiedi un flusso di lavoro; Devin scrive lo script. Migrazione — assegna un agente a ogni unità nel proprio branch, quindi riunisci i risultati:Come funziona un run
- Devin scrive lo script in un file e avvia il run. I run sono approvati automaticamente per impostazione predefinita; per fare in modo che Devin chieda la tua approvazione prima di ogni run, disattiva Settings → Preferences → Auto-approve workflows.
- Lo script viene eseguito sulla macchina di Devin. Le primitive del flusso di lavoro vengono iniettate automaticamente: non c’è nulla da installare o importare.
- Ogni chiamata a un agente avvia un agente e attende il relativo output strutturato. Per impostazione predefinita, tale agente è una sessione Devin indipendente sulla propria VM.
- L’avanzamento viene trasmesso alla sessione. Il pannello del flusso di lavoro mostra ogni fase, i relativi agenti e il loro status in tempo reale; da lì puoi aprire la sessione di qualsiasi agente.
- I risultati vengono registrati con un ID run, che consente di riprendere l’esecuzione.
Modello di creazione
Lo script è semplice codice Python. Devin lo scrive, ma è utile conoscerne la struttura quando lo si esamina:
Ogni chiamata a
agent() accetta uno schema JSON e restituisce un dict conforme a tale schema; in questo modo i risultati di una fase diventano il prompt della fase successiva. Mantieni gli schemi piccoli e semplici.
Esempio
Una pipeline di audit seguita dalla risoluzione su tre moduli:Dove vengono eseguiti gli agenti
Per impostazione predefinita, ogni agente viene eseguito sulla propria VM, ma può essere bloccato sulla macchina della sessione orchestratrice.VM separata (predefinita)
Una sessione Devin figlia completa con macchina, cloni del repo e ambiente propri. Non può vedere i file della sessione orchestratrice, quindi il passaggio del codice avviene tramite branch Git: ogni agente esegue il push di un branch e ne comunica il nome, che le fasi successive leggono dall’output strutturato.
VM condivisa
L’agente viene eseguito sulla macchina della sessione orchestratrice e condivide il relativo albero di lavoro, incluse le modifiche non sottoposte a commit: non è necessario alcun passaggio tramite Git. Usala quando gli agenti devono leggere o modificare l’albero di lavoro corrente oppure quando il repo esiste solo su quella macchina.
Determinismo e ripresa
Uno script di flusso di lavoro viene rieseguito dall’inizio quando un run viene ripreso e ogni chiamata dell’agente è associata a un hash del relativo prompt, schema e impostazioni di esecuzione. Tutto ciò che è già stato completato viene riprodotto a partire dal risultato registrato; il resto viene eseguito nuovamente in nuove sessioni. Questo funziona solo se lo script effettua ogni volta le stesse chiamate. La logica del flusso di lavoro e i prompt non devono dipendere dall’ora o dalla data corrente, dalla casualità, dagli ID generati, dalle variabili di ambiente, dallo stato del filesystem o dalle risposte di rete. Tutto ciò che richiede l’ispezione del mondo esterno deve trovarsi all’interno di una chiamataagent(), il cui output registrato viene utilizzato dal resto dello script.
Due conseguenze importanti:
- La modifica di un prompt riesegue quell’agente e tutti quelli successivi, mentre gli agenti precedenti non modificati vengono comunque riprodotti.
- Un run scaduto per timeout o interrotto riprende dal punto in cui si era fermato quando viene ripreso con il relativo ID. Il budget predefinito e massimo per un run è di sette giorni.
Costi
Ogni agente in un flusso di lavoro corrisponde a una sessione Devin, quindi un run può consumare molte più ACU rispetto alla stessa attività eseguita in un’unica sessione. Prima di applicare un flusso di lavoro a un intero repo, eseguilo su una porzione — una directory, tre moduli o una domanda più circoscritta — e verifica l’utilizzo delle ACU degli agenti nel pannello del flusso di lavoro. Richiedere una modalità meno costosa nelle fasi ad alto volume, come la classificazione per elemento, aiuta inoltre a mantenere sostenibile un’ampia distribuzione.Salvare un flusso di lavoro per riutilizzarlo
Una volta che un flusso di lavoro è pronto, puoi sottoporlo a commit nel tuo repo come skill: un fileworkflow.py accanto a un file SKILL.md che descrive quando utilizzarlo. Devin lo individuerà e lo rieseguirà per le attività future, anziché creare un nuovo script. Chiedi a Devin di salvare un flusso di lavoro e creerà i file necessari.
Correlati
- Funzionalità avanzate — orchestrare direttamente i Devin gestiti
- Skills — salvare procedure riutilizzabili, inclusi flussi di lavoro, nelle proprie repo
- Devin MCP — creare e monitorare sessioni programmaticamente

