Hoppa till innehåll

Skapa en pipelinemall

Pipelinemallar skapas i arbetsytans inställningar. Posten Pipelines i arbetsytans sidofält är körningskön, inte mallistan — den har ingen åtgärd för att skapa en mall.

Vad varje stegtyp, body-nyckel och konfigurationsfält betyder står i Pipeline-stegtyper.

  1. Gå till Inställningar → Arbetsyta → Pipelinemallar (/workspaces/<workspace-id>/settings/pipelines).
  2. Tryck på Ny mall.

Det finns ingen id-dialog. Redigeraren öppnas direkt med ett förberett skelett som heter Ny pipeline, med ett automatiskt tilldelat id (pipeline_1, sedan pipeline_2, …). Klicka på titeln i sidhuvudet för att byta namn på den.

Duken är inte tom: en ingångsnod Trigger, en prompt-agentnod med etiketten Step och en slutmarkör som avslutar körningen. Slutmarkören ritas inte. Redigeraren kopplar om den dolda terminalen till varje nåbar sänka, så arbete du hänger på efter Step körs ändå.

Sidofältet Nodbibliotek ligger permanent till vänster i redigeraren. Filtrera det med rutan Sök noder och dra en post till duken — noden landar där du släpper den, utan någon inkommande anslutning.

Palettnod Stegtyp Vad den gör
Bash script listen Kör ett shell-skript med {{state}}-ersättning; ingen agent skickas ut
Open conversation listen Öppnar körningens enda synliga yta och dess utcheckning; agentnoder ansluter till rummet
Clone PR branch listen Hittar PR:ens head-gren via gh pr view och klonar den till körningskatalogen
Post PR comment listen Publicerar sammanställda fynd på PR:en som en GitHub-granskningskommentar
Reviewer (prompt) listen Skickar ut en specialiserad granskningsagent; pausar tills agenten lämnar in sitt resultat
Consolidate (join) join Väntar på flera uppströms grenar och ber sedan en agent sammanställa deras utdata
Custom prompt listen Generisk promptstyrd nod som dirigeras via bodyn promptAgent
Post to space listen Skickar ett meddelande till en meddelandeyta
Condition / switch (router) router Grenar flödet utifrån ett tillståndsvärde
If file exists (router) router Ruttar "true" när en sökväg finns under klonen, annars "false"
Any file exists (OR router) router Ruttar "true" när någon av de angivna sökvägarna finns
All conditions (AND router) router Ruttar "true" endast när alla angivna sökvägar finns
Team dispatch listen Skickar ut ett helt team och pausar tills det är klart
Approval gate listen Pausar för ett godkännandebeslut
For each (map) forEach Renderar en prompt per post och skickar sedan ut agenten en gång med dessa prompter sammanslagna
Call sub-pipeline listen Kör en annan mall som ett nästlat steg
Clean up worktrees listen Tar bort föråldrade isolerade worktrees; deterministisk, ingen agent skickas ut

Biblioteket grupperar dem under Flöde och logik, PR-granskning, Agenter, Meddelanden och Kod. Det finns ingen grupp som heter Demo.

Varje arbetsnod har en rund utport på sin högra kant. Dra från den porten till en annan nod för att koppla ihop dem. Starttriggrar fungerar likadant: var och en har sin egen port, så en kabel från Schema utgår inte också från Manuell körning. Tryck på Lägg till steg (+) strax efter en nod för att infoga en typ efter den. Håll muspekaren över mittpunkten på en befintlig kant och tryck på × för att koppla från.

Anslutningar redigeras också från noden som tar emot dem:

  1. Markera den nedströms noden. Dess konfigurationspanel öppnas till höger.
  2. Rulla till Triggrar från och tryck på chipet för varje uppströmsnod som den här ska lyssna på. Att trycka på ett valt chip tar bort anslutningen.
  3. Om en uppströmsnod är en router visas ett block Ruttnycklar under chipen med ett fält Ruttnyckel från <nod> per routerkant. Ange nyckeln som den kanten utlöses av — true eller false för filen-finns-routerna, eller namnet på fallet för en växel.

Varje triggernod är en ingångspunkt. En nod kan lyssna på flera uppströmsnoder (fan-in) och mata flera nedströmsnoder (fan-out), och grafen måste förbli acyklisk — inget i redigeraren hindrar dig från att koppla ihop en cykel, så kontrollera ditt arbete.

Slutmarkören filtreras bort från duken och kan därför inte markeras. Redigeraren kopplar om den till varje nåbar sänka varje gång grafen ändras, så arbete du hänger på efter den förberedda Step körs ändå. En tom graf (en trigger utan efterföljande arbetssteg) listar triggern själv, så att en körning slutförs direkt.

Markera en nod för att öppna dess konfigurationspanel. Vilka fält som visas beror på nodens body.

Varje nod har Etikett, Indatanycklar (kommaseparerade) (tillståndsnycklar som läses vid körningstillfället) och, under Avancerat, Reducerare, Timeout (ms), Antal omförsök, Fortsätt om det här steget misslyckas och Utdataschema (JSON). Noder av typen listen och join kan också växla sin Typ mellan de två.

Lägger till en väljare för Arkiv att klona (vilka arkiv i arbetsytan som ska checkas ut; tomt betyder inga), ett Ytnamn och en kryssruta Öppna ett samtal i den. När kryssrutan är på namnger fältet Samtalsnamn den ström som rummet öppnas med. Agentnoder ansluter till det här rummet — de öppnar inget eget.

Lägger till Agent (vilken agent som ska skickas ut), Promptmall (använd {{key}} för att referera till indata eller utdata från uppströmsnoder) och Utdatanyckel.

Timeout (ms) anges i millisekunder, inte sekunder — 900000 är 15 minuter. Om du anger 900 får steget 0,9 sekunder.

Det samtalsläge som en prompt-agentnod körs i har inget fält i redigeraren på agentnoden. Det följer med extras['mode'] (chat, plan eller review) på noden Open conversation som skapade rummet (standard review). Om du anger det på ett agentsteg ignoreras det. Nyckeln matchas exakt: varje annan stavning ignoreras tyst.

Lägger till Bash-skript. Det finns inga fält för arbetskatalog eller miljö, eftersom inget av dem går att konfigurera:

  • Varje bash-steg i en körning delar cwd <cc_root>/pipelines/<runId>/.
  • GITHUB_TOKEN injiceras från lagret för autentiseringsuppgifter, så gh och git clone https://x-access-token:$GITHUB_TOKEN@… fungerar utan konfiguration.
  • Skriptet startas som den bokstavliga körbara filen bash, så bash måste finnas i PATH på servervärden. Det är något att tänka på i Windows.

En router utvärderar ett villkor och returnerar en ruttnyckel; motorn utlöser bara den nedströms kant vars ruttnyckel matchar och markerar de andra grenarna som överhoppade.

När du markerar en router ersätts fältet Utdatanyckel av villkorsredigeraren. Välj ett av dess fyra lägen:

  • Fil(er) finns – någon — ruttar "true" när någon av de angivna sökvägarna finns.
  • Filer finns – alla — ruttar "true" endast när alla angivna sökvägar finns.
  • Jämförelse — jämför ett tillståndsvärde mot en literal.
  • Växel — ruttar utifrån värdet på en tillståndsnyckel, med ett standardfall.

Ställ sedan in matchande ruttnycklar på de utgående kanterna (se Koppla ihop noder).

Booleska grupper av typen and / or / not stöds av bodyn men kan inte skapas i det här formuläret — de kräver ett handskrivet predikatträd under extras.predicate. Hela ordförrådet för predikat och operatorer finns i Pipeline-stegtyper.

Ingen egen konfiguration: den väntar på alla sina uppströmssteg.

Grinden skickar ut godkännaragenten i ett dolt samtal med grindens prompt och pausar. Godkännaren hämtar in ditt beslut i samtalet och lämnar in det med submit_output som { "decision": "approved" | "rejected", "reason": "..." }. Beslutet hamnar under utdatanyckeln (standard approval_decision), så en växelrouter nedströms kan förgrena utifrån det.

Ställ in Agent på godkännaren och Promptmall på grindens fråga. Grinden löses upp genom submit_output som { "decision": "approved" | "rejected", "reason": "..." }. Noder av typen Reviewer (prompt) lämnar in på samma sätt.

Lägger till Team-ID och Utskicksläge. Väljaren erbjuder exakt två lägen:

  • allParallel — en uppgift per medlem, pausar tills alla är klara.
  • manager — skickar ut ledaren, som delegerar.

Varje annat sparat värde beter sig som allParallel. Ställ in Reducerare på append för att samla varje medlems resultat i en lista under utdatanyckeln.

For each mappar som standard över tillståndsnyckeln items (extras.iterableKey / extras.itemKey på noden). Den renderar sin prompt en gång per post ({{item}} som standard) och skickar ut agenten en gång med dessa prompter sammanslagna. En tom samling slutförs direkt med en tom lista. Det är inte en parallell utskickning per post.

Call sub-pipeline pausar tills barnkörningen når ett terminaltillstånd och slår sedan samman barnets sluttillstånd under utdatanyckeln (standard subflow_result). Peka ut ett barn med extras.templateId. En mall kan inte anropa sig själv; en misslyckad eller avbruten barnkörning får föräldrasteget att misslyckas, vilket sedan matar stegets policy för omförsök och fortsätt vid misslyckande.

Båda ligger bakom Manuell körning i redigerarens sidhuvud.

  1. Tryck på Manuell körning.
  2. Slå på Tillåt manuell körning. Den här växeln sparas direkt — den skapar (eller tar bort) triggerraden manual som gör att mallen visas på körningssidan.
  3. Ange Max parallella körningar om du vill ha ett tak (lämna tomt för obegränsat). Extra starter väntar i tillståndet queued tills en plats blir ledig.
  4. Tryck på Lägg till indata för varje formulärfält som en manuell körning ska samla in:
Fält Beskrivning
Nyckel Tillståndsnyckel som värdet lagras under; referera till den som {{key}}
Etikett Visningsetikett (standard är nyckeln)
Typ Text, Flerradig text, Nummer, Växel, Välj, Arkiv
Alternativ (kommaseparerade) Kommaseparerade val, endast för Välj
Standardvärde Förifyllt värde
Platshållare Hjälptext inuti det tomma fältet
Hjälptext Hjälptext under fältet
Obligatorisk Om körningsformuläret blockeras av ett tomt värde

En indata av typen Arkiv visar en väljare över arbetsytans arkiv och fyller i repo_id, repo_local_path, repo_full_name och — när arkivet har en GitHub-remote — repo_owner och repo_name i körningens nyttolast.

  1. Tryck på Spara i dialogen. Ändringar av indata förs in i utkastet; de sparas när du sparar mallen.
  1. Tryck på Spara i redigerarens sidhuvud. Fram till dess visar sidhuvudet “Osparade ändringar”.
  2. Gå tillbaka till Inställningar → Arbetsyta → Pipelinemallar och kontrollera att radens växel för mallen är på. Motorn vägrar starta en inaktiverad mall, och en inaktiverad mall visas aldrig på körningssidan.
  3. Om du vill starta den automatiskt drar du en trigger från nodbiblioteket till duken — se Ställ in pipelinetriggers.