Salta ai contenuti

Monitora le esecuzioni delle pipeline

Questa pagina copre tutto ciò che viene dopo l’avvio di un’esecuzione: trovarla, leggere che cosa ha fatto ogni passaggio e rimettere in moto un’esecuzione non riuscita. Per avviarne una, vedi Esegui una pipeline manualmente.

  1. Fai clic su Pipelines nella barra laterale dello spazio di lavoro. La schermata è la coda delle esecuzioni dello spazio di lavoro: tutte le esecuzioni, dalla più recente.
  2. Usa la barra di sinistra per filtrare. I filtri sono esattamente tre, ciascuno con un conteggio in tempo reale: Tutti, Running, Failed.
  3. Scorri la tabella con ↑/↓ (o j/k) e premi Enter per aprire l’esecuzione selezionata. Fai clic su una riga per ottenere lo stesso risultato.

Ogni riga mostra un glifo che indica come è iniziata l’esecuzione (play per quella manuale; un glifo di file per un watch del grafo del codice; altrimenti il trigger automatico). Il tooltip indica il trigger — Manuale, PR pubblicata, Modifica di file e così via — e, per un’esecuzione avviata da un watch, quali file sono cambiati. Poi il nome della pipeline, un badge di stato, la durata attiva (o la posizione in coda per un’esecuzione queued) e da quanto tempo è iniziato questo tentativo. La durata attiva esclude le pause di arresto e riavvio, quindi non corrisponde al tempo trascorso effettivo.

Non esiste un filtro per le esecuzioni completate, sospese o annullate, né un filtro per modello, né una finestra temporale, né una vista della cronologia delle esecuzioni per modello. Confrontare le esecuzioni di un modello significa scorrere la coda cercando il suo nome.

La pagina di un’esecuzione ha tre parti disposte in verticale.

La barra dei metadati riporta l’ora di inizio, la durata attiva, l’avanzamento dei passaggi («3 di 7 passaggi»), un riepilogo dell’errore che indica quale passaggio si è rotto e il motivo, e le azioni Riprova ed Elimina.

Il diagramma a cascata delle tempistiche mostra una barra per passaggio, con la sua durata e — per i passaggi agente — il suo costo in centesimi. Un passaggio ritentato mostra un suffisso ×N dopo la durata; quel suffisso è l’unico punto in cui emerge il numero di tentativi.

Il canvas del grafo disegna il modello con lo stato in tempo reale di ogni nodo. Selezionando un nodo si apre il suo pannello del passaggio.

Stato Significato
Pending Creata, non ancora avviata
In coda Ammessa ma trattenuta: il limite di esecuzioni parallele massime di questo modello è pieno; nessuna riga di passaggio ancora
Running In esecuzione
Suspended In attesa di qualcosa di esterno: normale, non bloccata
Completed Terminata senza errori
Failed Terminata con un errore
Cancelled Arrestata da un utente o dal sistema

I passaggi hanno quegli stati meno In coda, più Skipped, per un ramo che un router non ha preso (e per i suoi discendenti ormai irraggiungibili).

Suspended è lo stato in cui un passaggio agente passa la maggior parte della sua vita: un agente inviato o un gate di approvazione trattiene il passaggio finché il suo lavoro non arriva a destinazione. Due meccanismi di salvaguardia del motore fanno fallire l’intera esecuzione invece di riprenderla: un passaggio sospeso da più di 24 ore (extras.awaitApproval — il corpo orchestration.awaitApproval — è esente; human.gate non lo è) e un passaggio non idempotente che era in corso quando il server si è fermato.

Seleziona un nodo sul canvas. Il pannello del passaggio mostra, in ordine:

  • Un avviso Errore quando il passaggio non è riuscito, oppure un avviso Saltato con il motivo quando è stato saltato.
  • Avviato, Completato e la durata.
  • Ramo: l’indice del ramo, per i rami paralleli.
  • Vedi conversazione: salta alla conversazione in cui il passaggio è stato eseguito. Le conversazioni delle pipeline sono nascoste dalla barra laterale, quindi questo è l’unico modo per entrarci.
  • Input e Output, come JSON comprimibile.
  • Attività dell’agente: un riquadro per ogni esecuzione di agente inviata dal passaggio, con stato, riepilogo, durata e costo.

Per un passaggio agente, Output è il payload strutturato che l’agente ha inviato con submit_output, non il suo testo in prosa. La traccia di ragionamento si trova in Attività dell’agente e nella conversazione dietro Vedi conversazione.

Per un passaggio bash, Output è lo stdout ripulito che lo script ha scritto all’uscita con codice 0. Un’uscita con codice diverso da zero fa fallire il passaggio, con la coda dello stderr come messaggio di errore.

  1. Leggi il riepilogo dell’errore sulla barra dei metadati: indica il nome del passaggio non riuscito. L’avviso Errore del pannello del passaggio contiene il messaggio.
  2. Controlla l’Input del passaggio: una chiave di stato mancante o scritta male è la causa più comune. Un passaggio prompt-agent non riesce subito e indica i segnaposto non risolti; un passaggio bash li sostituisce con stringhe vuote ed esegue comunque, cosa che di solito emerge un passaggio più tardi.
  3. Per un passaggio agente, apri Vedi conversazione e leggi che cosa ha realmente fatto l’agente.
  4. Premi Riprova sulla barra dei metadati. I passaggi completati e saltati mantengono i loro output; tutto il resto viene eliminato e rieseguito, e l’esecuzione torna in esecuzione. Il cronometro della durata riparte per questo tentativo.

Cause comuni da verificare per prime:

  • Timeout: il passaggio ha superato il suo Timeout (ms). Ricorda che il campo è in millisecondi.
  • Errore di script: il comando bash è uscito con codice diverso da zero, oppure bash non è nel PATH dell’host del server.
  • Validazione dello schema: il payload submit_output dell’agente non soddisfa lo schema di output del passaggio.
  • Segnaposto non risolto: un {{key}} a cui faceva riferimento un passaggio prompt-agent non è mai stato scritto a monte. L’errore indica ogni chiave non risolta.
  • Corpo non registrato: un passaggio la cui chiave del corpo non è registrata avvisa al caricamento del modello e poi semplicemente non viene mai eseguito.

Seleziona il passaggio in esecuzione e premi il pulsante Termina in esecuzione nell’intestazione del pannello del passaggio. Questo termina il processo del passaggio, contrassegna il passaggio come non riuscito e quindi fa fallire l’intera esecuzione: ogni ramo fratello aperto viene chiuso insieme a essa.

Non esiste alcun controllo per annullare un’esecuzione in questa schermata. pipeline.cancel esiste come operazione RPC e il motore la implementa, ma nulla nell’interfaccia delle pipeline la chiama; Termina in esecuzione su un passaggio, o Elimina sull’esecuzione, sono gli unici gesti di arresto disponibili.

Il costo viene riportato per passaggio, nella colonna di destra del diagramma a cascata e su ogni riquadro sotto Attività dell’agente. Non c’è un totale dell’esecuzione nella pagina di dettaglio né una colonna dei costi nella coda delle esecuzioni, quindi confrontare il costo di due esecuzioni significa sommare i loro passaggi.