Costruire workflow

Crea e configura workflow di agenti IA multi-step in CodeCourier usando pipeline di persona, loop e impostazioni di sandbox configurabili.

7 min letto
workflowsbuildcreate

Costruire un workflow in CodeCourier significa definire un blueprint riutilizzabile che orchestra agenti IA in una pipeline multi-step. Questa guida percorre il processo di creazione del workflow, dalla scelta delle persona alla configurazione dei loop e delle impostazioni di sandbox.

Creare un nuovo workflow

Naviga alla pagina Workflows nel dashboard del tuo progetto e clicca il pulsante « New Workflow ». La finestra di dialogo di creazione del workflow ti guida attraverso la configurazione.

1

Dai un nome al tuo workflow

Assegna al tuo workflow un nome descrittivo (obbligatorio, fino a 200 caratteri). Un buon nome descrive lo scopo del workflow, come « Design-Review with E2E Testing » o « Prompt Refinement Pipeline ». Puoi anche aggiungere una descrizione opzionale per contesto aggiuntivo.

2

Aggiungi step di persona

Il cuore di un workflow è la sua pipeline di step di persona. Ogni step fa riferimento a una persona - un’identità di agente preconfigurata del tuo progetto. Devi aggiungere almeno uno step di persona; i workflow con zero step vengono rifiutati.

Per aggiungere uno step, seleziona una persona dal menu a tendina. Le persona disponibili sono quelle che hai creato nella sezione Personas del tuo progetto. Ogni persona porta:

  • Un ruolo (designer, checker, optimizer, prompter, investigator, deep-dive, evaluator, judge o answerer).
  • Uno strumento CLI (Claude Code, OpenCode, Codex, Pi).
  • Un modello (ad esempio, claude-opus-4-6, claude-sonnet-4-6).
  • Istruzioni personalizzate che guidano il comportamento dell’agente.
  • Impostazioni di thinking effort opzionali.
  • Selezioni di skill opzionali.
3

Configura gli Iteration Block (opzionale)

L’iterazione è opt-in e vive all’interno di un nodo Iteration Block. Se vuoi che un verdetto negativo di un checker inneschi un retry, poni la coppia designer+checker all’interno di un Iteration Block. Gli step dentro il block condividono lo stesso loopId e si ripetono insieme finché il checker non passa o il loopMaxIterations del block non viene raggiunto.

Gli step fuori da un Iteration Block vengono sempre eseguiti esattamente una volta. Un checker senza Iteration Block viene comunque eseguito e registra il suo verdetto, ma l’orchestratore non effettua un retry automatico - gli step a valle o l’interfaccia possono leggere il verdetto e decidere cosa fare.

loopMaxIterations è 3 di default per block. Un numero più alto dà al designer più possibilità di gestire il feedback, a costo di tempo di esecuzione e spesa.

4

Imposta i valori predefiniti della sandbox

Configura le impostazioni di sandbox predefinite che si applicano a tutti gli step del workflow:

  • Template ID - Il template E2B per le sandbox. Ogni step può sovrascriverlo tramite la propria persona, ma il workflow fornisce il valore di fallback.
  • Timeout - Tempo massimo di esecuzione per sandbox (da 1 minuto a 4 ore).
  • Memoria - Allocazione di RAM (da 256 MB a 8.192 MB).
  • Numero di CPU - Numero di processori (da 1 a 8).
  • Modello designer - Modello predefinito per gli step designer.
  • Modello checker - Modello predefinito per gli step checker (spesso un modello più economico dato che i checker fanno revisione, non implementazione).
5

Configura le soglie dell’Evaluator (opzionale)

Se il tuo workflow include uno step Evaluator, puoi configurare la sua soglia di qualità dalla pagina evaluator-setup di quella persona. La soglia è il punteggio composite minimo (0-100) che l’evaluator deve riportare affinché il thresholdResult sia true.

Sulla pagina evaluator-setup configuri anche:

  • Context - Contesto aggiuntivo che l’evaluator usa quando valuta la qualità (ad esempio, una descrizione delle convenzioni del progetto o degli standard di qualità).
  • Skill - Skill iniettati nella sandbox dell’evaluator per una valutazione specializzata (ad esempio, uno skill di testing per verificare la copertura).
  • Setup command - Comandi shell che preparano l’ambiente di valutazione (ad esempio, installare le dipendenze, costruire il progetto).
  • Setup script - Script personalizzati eseguiti prima della valutazione per stabilire una baseline o preparare fixture di test.

La configurazione dell’evaluator è separata dal blueprint del workflow stesso, così puoi regolare i criteri di qualità in modo indipendente senza modificare la pipeline.

6

Salva il workflow

Clicca salva per creare il blueprint del workflow. Il workflow viene memorizzato nella tabella workflows con la tua configurazione ed è immediatamente disponibile per l’esecuzione.

Requisito di persona

I workflow devono avere almeno uno step di persona. La finestra di dialogo di creazione lo valida - se tenti di salvare un workflow senza step, viene mostrato un errore di validazione. Assicurati di aver creato persona nella sezione Personas prima di costruire workflow.

Architettura della pipeline

Ordinamento degli step

Gli step vengono eseguiti nell’ordine in cui appaiono nell’array personaPipelineSteps. L’orchestratore di workflow li elabora in sequenza - lo step 2 non parte finché lo step 1 non si completa. Questo garantisce che ogni step possa basarsi sul lavoro degli step precedenti.

Iteration Block (gruppi di loop)

Un Iteration Block è il modo per inserire un gruppo di step in un’esecuzione ripetuta. Gli step consecutivi che condividono lo stesso loopId formano un block, e il block si ripete finché il checker del block non restituisce un verdetto positivo o il loopMaxIterations del block non viene raggiunto. Gli step senza loopId vengono eseguiti una volta, in ordine. Il pattern di iterazione tipico è:

Configurazione del loop Designer-Checker
// Example: persona pipeline steps with a loop
personaPipelineSteps: [
  {
    personaId: prompterPersonaId,
    // No loopId -- runs once
  },
  {
    personaId: designerPersonaId,
    loopId: "design-review",
    loopMaxIterations: 3,
  },
  {
    personaId: checkerPersonaId,
    loopId: "design-review",
    loopMaxIterations: 3,
  },
  {
    personaId: optimizerPersonaId,
    // No loopId -- runs once after the loop
  },
]

In questo esempio, il prompter viene eseguito per primo (una volta), poi il designer e il checker iterano fino a 3 volte, e infine l’optimizer viene eseguito una volta dopo l’uscita dal loop.

Execution Block

L’orchestratore analizza l’array piatto di step in execution block:

  • Single block - Step senza loopId. Vengono eseguiti una volta in ordine.
  • Loop block - Gruppi di step con lo stesso loopId. Si ripetono come gruppo finché il checker non passa o il numero massimo di iterazioni non viene raggiunto.

Se nessuno step porta un loopId, la pipeline viene eseguita linearmente - ogni step viene eseguito esattamente una volta. Un checker senza Iteration Block produce comunque un verdetto sul suo run step, ma non innesca un retry automatico. Per abilitare il retry in caso di fallimento, avvolgi gli step rilevanti in un Iteration Block.

Modificare i workflow

I workflow esistenti possono essere modificati dalla pagina di dettaglio del workflow. Puoi cambiare:

  • Nome e descrizione.
  • Ordine e composizione degli step di persona.
  • Loop ID e numero massimo di iterazioni.
  • Configurazione di sandbox predefinita.

Le modifiche si applicano solo ai run futuri. I run già in corso proseguono con la configurazione con cui sono stati avviati. Il timestampupdatedAt del record del workflow traccia quando è stata fatta l’ultima modifica.

Duplicare i workflow

Puoi duplicare un workflow esistente per creare una variante. Il duplicato eredita tutta la configurazione dell’originale (nome, step, config di sandbox) con « (copy) » aggiunto al nome. Questo è utile per creare varianti di test A/B - ad esempio, la stessa pipeline con modelli o numeri di iterazioni diversi.

Tipi di workflow

Il campo type del workflow definisce il suo pattern di esecuzione. I nuovi workflow usano persona_pipeline, ma CodeCourier supporta diversi tipi per la retrocompatibilità:

  • persona_pipeline - Il valore predefinito attuale. Gli step sono definiti da riferimenti a persona con gruppi di loop opzionali. È il tipo più flessibile.
  • custom_pipeline - Gli step sono definiti inline con tipo, CLI, modello e istruzioni. Ogni step è un oggetto di configurazione grezzo anziché un riferimento a persona.
  • designer_checker - Un pattern semplificato a due step: il designer viene eseguito, poi il checker produce un verdetto. Usa le defaultCheckerInstructions del workflow. La coppia viene eseguita una volta - per abilitare il retry in caso di fallimento, usa una pipeline di persona e avvolgi i due step in un Iteration Block.
  • single_designer - Un singolo step che esegue il designer una volta senza loop di checker.

Usa le pipeline di persona

Il tipo persona_pipeline sussume tutti gli altri tipi. Una pipeline di persona a singolo step equivale a single_designer, e una pipeline di persona designer-checker a due step con un loop equivale a designer_checker. Usa sempre pipeline di persona per i nuovi workflow.

Best practice

  • Inizia semplice - Comincia con un workflow designer-checker a due step prima di aggiungere altri step. Le pipeline complesse sono più difficili da debuggare.
  • Usa modelli appropriati - Usa Opus per il lavoro di progettazione che richiede un ragionamento profondo e Sonnet o Haiku per gli step checker che eseguono la verifica. Gli step evaluator in genere si comportano bene su Sonnet dati i loro requisiti di output strutturato.
  • Imposta limiti di iterazione ragionevoli - All’interno di un Iteration Block, 3 iterazioni sono un buon valore predefinito. Più di 5 raramente migliora i risultati e aumenta significativamente il costo.
  • Scrivi istruzioni di persona chiare - La qualità dell’output del workflow dipende fortemente dalle istruzioni di ogni persona. Sii specifico su cosa ogni step deve fare e cosa costituisce successo.
  • Controlla le PR con gli evaluator - Aggiungi un evaluator come ultimo step prima della creazione della PR per imporre una soglia di qualità. Inizia con una soglia di 70 e regolala verso l’alto man mano che la tua pipeline matura.
  • Testa prima con task piccoli - Esegui il tuo workflow su un task piccolo e ben definito prima di usarlo per feature grandi. Questo ti aiuta a regolare la pipeline senza sprecare risorse.