Crea un modello di pipeline
I modelli di pipeline si creano nelle impostazioni dello spazio di lavoro. La voce Pipelines nella barra laterale dello spazio di lavoro è la coda di esecuzione, non l’elenco dei modelli — non offre alcuna azione «crea modello».
Per il significato di ogni tipo di passaggio, chiave del corpo e campo di configurazione, vedi il riferimento dei passaggi delle pipeline.
Creare un modello
Sezione intitolata “Creare un modello”- Vai in Impostazioni → Spazio di lavoro → Modelli di pipeline
(
/workspaces/<workspace-id>/settings/pipelines). - Premi Nuovo modello.
Non c’è alcuna finestra di dialogo per l’id. L’editor si apre subito su uno
scheletro preimpostato chiamato Nuova pipeline, con un id assegnato
automaticamente (pipeline_1, poi pipeline_2, …). Fai clic sul titolo
nell’intestazione per rinominarlo.
Il canvas non è vuoto: un nodo di ingresso Trigger, un nodo agente con prompt etichettato Step e una sentinella terminale che conclude l’esecuzione. La sentinella non viene disegnata. L’editor ricollega quel terminale nascosto a ogni sink raggiungibile, quindi il lavoro che colleghi dopo Step viene comunque eseguito.
Aggiungere nodi
Sezione intitolata “Aggiungere nodi”La barra laterale Libreria nodi resta sempre a sinistra dell’editor. Filtrala con il campo Cerca nodi e trascina una voce sul canvas — il nodo atterra dove lo lasci, senza alcuna connessione in entrata.
| Nodo della palette | Tipo di passaggio | Cosa fa |
|---|---|---|
| Bash script | listen | Esegue uno script shell con sostituzione di {{state}}; nessun agente inviato |
| Open conversation | listen | Apre l’unico spazio visibile dell’esecuzione e il suo checkout; i nodi agente si uniscono a questa stanza |
| Clone PR branch | listen | Individua il branch head della PR tramite gh pr view e lo clona nella directory dell’esecuzione |
| Post PR comment | listen | Pubblica i rilievi consolidati sulla PR come commento di revisione GitHub |
| Reviewer (prompt) | listen | Invia un agente revisore specializzato; sospende finché l’agente non invia il suo risultato |
| Consolidate (join) | join | Attende più rami a monte, poi chiede a un agente di consolidarne gli output |
| Custom prompt | listen | Nodo generico guidato da prompt, instradato attraverso il corpo promptAgent |
| Post to space | listen | Invia un messaggio a uno spazio di messaggistica |
| Condition / switch (router) | router | Dirama il flusso in base a un valore di stato |
| If file exists (router) | router | Instrada "true" quando un percorso esiste sotto il clone, altrimenti "false" |
| Any file exists (OR router) | router | Instrada "true" quando esiste almeno uno dei percorsi elencati |
| All conditions (AND router) | router | Instrada "true" solo quando esistono tutti i percorsi elencati |
| Team dispatch | listen | Invia un intero team e sospende finché non termina |
| Approval gate | listen | Mette in pausa in attesa di una decisione di approvazione |
| For each (map) | forEach | Genera un prompt per ogni elemento, poi invia l’agente una sola volta con quei prompt uniti |
| Call sub-pipeline | listen | Esegue un altro modello come passaggio annidato |
| Clean up worktrees | listen | Rimuove i worktree isolati obsoleti; deterministico, nessun agente inviato |
La libreria li raggruppa in Flusso e logica, Revisione PR, Agenti, Messaggistica e Codice. Non esiste alcun gruppo Demo.
Collegare i nodi tra loro
Sezione intitolata “Collegare i nodi tra loro”Ogni nodo di lavoro ha una porta di output circolare sul bordo destro.
Trascina da quella porta su un altro nodo per collegarli. I trigger di avvio
funzionano allo stesso modo: ognuno ha la propria porta, quindi un cavo da
Pianificazione non parte anche da Esecuzione manuale. Premi Aggiungi
passaggio (+) subito dopo un nodo per inserire un tipo al suo seguito. Passa
il puntatore sul punto medio di un arco esistente e premi × per disconnettere.
Le connessioni si modificano anche dal nodo che le riceve:
- Seleziona il nodo a valle. Il suo pannello di configurazione si apre a destra.
- Scorri fino a Triggers from e tocca il chip di ogni nodo a monte che questo deve ascoltare. Toccando un chip selezionato la connessione viene rimossa.
- Se un nodo a monte è un router, sotto i chip compare un blocco Chiavi di
route con un campo Chiave di route da <nodo> per ogni arco del
router. Inserisci la chiave su cui quell’arco scatta —
trueofalseper i router «file esiste», oppure il nome del caso per un selettore.
Ogni nodo di trigger è un punto di ingresso. Un nodo può ascoltare più nodi a monte (fan-in) e alimentare più nodi a valle (fan-out), e il grafo deve restare aciclico — nulla nell’editor ti impedisce di cablare un ciclo, quindi controlla il tuo lavoro.
La sentinella terminale è filtrata dal canvas, quindi non può essere selezionata. L’editor la ricollega a ogni sink raggiungibile ogni volta che il grafo cambia, quindi il lavoro che colleghi dopo lo Step preimpostato viene comunque eseguito. Un grafo vuoto (trigger senza successori di lavoro) elenca il trigger stesso, così un’esecuzione si completa immediatamente.
Configurare un nodo
Sezione intitolata “Configurare un nodo”Seleziona un nodo per aprirne il pannello di configurazione. I campi visualizzati dipendono dal corpo del nodo.
Ogni nodo ha Etichetta, Chiavi di input (chiavi di stato separate da virgole, lette al momento dell’esecuzione) e, sotto Avanzate, Riduttore, Timeout (ms), Tentativi di riprova, Continua se questo passaggio fallisce e Schema di output. I nodi listen e join possono anche cambiare il loro Tipo tra i due.
Aprire una conversazione
Sezione intitolata “Aprire una conversazione”Aggiunge un selettore repository da clonare (quali repository dello spazio di lavoro estrarre; vuoto significa nessuno), un Nome dello spazio e una casella Apri una conversazione al suo interno. Quando questa casella è attiva, un campo Nome della conversazione dà il nome al flusso con cui si apre la stanza. I nodi agente si uniscono a questa stanza — non ne aprono una propria.
Agente con prompt
Sezione intitolata “Agente con prompt”Aggiunge Agente (quale agente inviare), Template del prompt (usa
{{key}} per fare riferimento a input o output a monte) e Chiave di output.
Il Timeout (ms) è in millisecondi, non in secondi — 900000 corrisponde a
15 minuti. Inserendo 900 il passaggio riceve 0,9 secondi.
La modalità di conversazione con cui viene eseguito un nodo agente con prompt
non ha un campo nell’editor sul nodo agente. Viaggia su extras['mode']
(chat, plan o review) sul nodo Open conversation che ha creato la
stanza (predefinita review). Impostarla su un passaggio agente viene ignorato.
La chiave è confrontata esattamente: qualsiasi altra grafia viene ignorata in
silenzio.
Script bash
Sezione intitolata “Script bash”Aggiunge Script bash. Non ci sono campi per la directory di lavoro o l’ambiente, perché nessuno dei due è configurabile:
- Ogni passaggio bash di un’esecuzione condivide la cwd
<cc_root>/pipelines/<runId>/. GITHUB_TOKENviene iniettato dall’archivio delle credenziali, quindighegit clone https://x-access-token:$GITHUB_TOKEN@…funzionano senza configurazione.- Lo script viene avviato come eseguibile letterale
bash, quindibashdeve trovarsi nelPATHdell’host del server. È una considerazione legata a Windows.
Un router valuta una condizione e restituisce una chiave di route; il motore attiva solo l’arco a valle la cui chiave di route corrisponde e contrassegna gli altri rami come saltati.
Selezionando un router, il campo Chiave di output viene sostituito dall’editor della condizione. Scegli una delle sue quattro modalità:
- File presenti — almeno uno — instrada
"true"quando esiste almeno uno dei percorsi elencati. - File presenti — tutti — instrada
"true"solo quando esistono tutti i percorsi elencati. - Confronto — confronta un valore di stato con un valore letterale.
- Selettore — instrada in base al valore di una chiave di stato, con un caso predefinito.
Poi imposta le chiavi di route corrispondenti sugli archi in uscita (vedi Collegare i nodi tra loro).
I gruppi booleani and / or / not sono supportati dal corpo ma non si
possono creare da questo modulo — richiedono un albero di predicati scritto a
mano sotto extras.predicate. Il vocabolario completo di predicati e operatori è
nel riferimento dei passaggi delle
pipeline.
Nessuna configurazione propria: attende tutti i suoi passaggi a monte.
Gate di approvazione
Sezione intitolata “Gate di approvazione”Il gate invia l’agente approvatore in una conversazione nascosta con il prompt del gate e sospende. L’approvatore ti chiede la decisione nella conversazione e la invia con submit_output come { "decision": "approved" | "rejected", "reason": "..." }. La decisione finisce sotto la chiave di output (predefinita approval_decision), quindi un router selettore a valle può diramare su di essa.
Imposta Agente sull’approvatore e Template del prompt sulla domanda del gate. Il gate si risolve tramite submit_output come { "decision": "approved" | "rejected", "reason": "..." }. I nodi Reviewer (prompt) inviano nello stesso modo.
Invio team
Sezione intitolata “Invio team”Aggiunge ID team e Modalità di invio. Il selettore offre esattamente due modalità:
allParallel— un’attività per membro, sospende finché tutti non completano.manager— invia il responsabile, che delega.
Qualsiasi altro valore memorizzato si comporta come allParallel. Imposta
Riduttore su append per raccogliere il risultato di ogni membro in un
elenco sotto la chiave di output.
Per ogni e chiamata a sottopipeline
Sezione intitolata “Per ogni e chiamata a sottopipeline”For each esegue una mappatura sulla chiave di stato items per impostazione
predefinita (extras.iterableKey / extras.itemKey sul nodo). Genera il suo
prompt una volta per elemento ({{item}} per impostazione predefinita) e invia
l’agente una sola volta con quei prompt concatenati. Una raccolta vuota si
completa immediatamente con un elenco vuoto. Non è un invio parallelo per ogni
elemento.
Call sub-pipeline sospende finché l’esecuzione figlia non raggiunge uno stato
terminale, poi unisce lo stato finale del figlio sotto la chiave di output
(predefinita subflow_result). Puntalo a un figlio con extras.templateId. Un
modello non può chiamare se stesso; un figlio non riuscito o annullato fa fallire
il passaggio padre, che a quel punto alimenta la politica di nuovi tentativi e di
continuazione in caso di errore di quel passaggio.
Dichiarare gli input e consentire le esecuzioni manuali
Sezione intitolata “Dichiarare gli input e consentire le esecuzioni manuali”Entrambi si trovano dietro Esecuzione manuale nell’intestazione dell’editor.
- Premi Esecuzione manuale.
- Attiva Consenti esecuzione manuale. Questo interruttore viene salvato
immediatamente — crea (o elimina) la riga di trigger
manualche fa comparire il modello nella pagina di esecuzione. - Imposta Esecuzioni parallele max se vuoi un limite (lascia vuoto per
illimitato). Gli avvii in eccesso attendono nello stato
queuedfinché non si libera uno slot. - Premi Aggiungi input per ogni campo del modulo che un’esecuzione manuale deve raccogliere:
| Campo | Descrizione |
|---|---|
| Chiave | Chiave di stato sotto cui viene memorizzato il valore; fai riferimento a essa come {{key}} |
| Etichetta | Etichetta visualizzata (predefinita: la chiave) |
| Tipo | Testo, Testo multiriga, Numero, Interruttore, Selezione, Repository |
| Opzioni | Scelte separate da virgole, solo per Selezione |
| Valore predefinito | Valore precompilato |
| Segnaposto | Testo suggerimento dentro il campo vuoto |
| Testo di aiuto | Testo di aiuto sotto il campo |
| Obbligatorio | Se il modulo di esecuzione blocca un valore vuoto |
Un input Repository mostra un selettore sui repository dello spazio di lavoro
e popola repo_id, repo_local_path, repo_full_name e — quando il repository
ha un remote GitHub — repo_owner e repo_name nel payload dell’esecuzione.
- Premi Salva nella finestra di dialogo. Le modifiche agli input vengono inglobate nella bozza; diventano persistenti quando salvi il modello.
Salvare e attivare
Sezione intitolata “Salvare e attivare”- Premi Salva nell’intestazione dell’editor. L’intestazione mostra «Modifiche non salvate» finché non lo fai.
- Torna in Impostazioni → Spazio di lavoro → Modelli di pipeline e verifica che l’interruttore della riga del modello sia attivo. Il motore rifiuta di avviare un modello disattivato e un modello disattivato non compare mai nella pagina di esecuzione.
- Per avviarlo automaticamente, trascina un trigger dalla libreria nodi sul canvas — vedi Configura i trigger delle pipeline.
Guide correlate
Sezione intitolata “Guide correlate”- Esegui una pipeline manualmente
- Configura i trigger delle pipeline
- Monitora le esecuzioni delle pipeline
- Riferimento dei passaggi delle pipeline