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.
Skapa en mall
Avsnitt med rubriken “Skapa en mall”- Gå till Inställningar → Arbetsyta → Pipelinemallar
(
/workspaces/<workspace-id>/settings/pipelines). - 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å.
Lägg till noder
Avsnitt med rubriken “Lägg till noder”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.
Koppla ihop noder
Avsnitt med rubriken “Koppla ihop noder”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:
- Markera den nedströms noden. Dess konfigurationspanel öppnas till höger.
- 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.
- 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 —
trueellerfalsefö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.
Konfigurera en nod
Avsnitt med rubriken “Konfigurera en nod”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å.
Open conversation
Avsnitt med rubriken “Open conversation”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.
Prompt-agent
Avsnitt med rubriken “Prompt-agent”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.
Bash script
Avsnitt med rubriken “Bash script”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_TOKENinjiceras från lagret för autentiseringsuppgifter, såghochgit clone https://x-access-token:$GITHUB_TOKEN@…fungerar utan konfiguration.- Skriptet startas som den bokstavliga körbara filen
bash, såbashmåste finnas iPATHpå 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.
Approval gate
Avsnitt med rubriken “Approval gate”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.
Team dispatch
Avsnitt med rubriken “Team dispatch”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 and Call sub-pipeline
Avsnitt med rubriken “For each and Call sub-pipeline”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.
Deklarera indata och tillåt manuella körningar
Avsnitt med rubriken “Deklarera indata och tillåt manuella körningar”Båda ligger bakom Manuell körning i redigerarens sidhuvud.
- Tryck på Manuell körning.
- Slå på Tillåt manuell körning. Den här växeln sparas direkt — den skapar
(eller tar bort) triggerraden
manualsom gör att mallen visas på körningssidan. - 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
queuedtills en plats blir ledig. - 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.
- Tryck på Spara i dialogen. Ändringar av indata förs in i utkastet; de sparas när du sparar mallen.
Spara och aktivera
Avsnitt med rubriken “Spara och aktivera”- Tryck på Spara i redigerarens sidhuvud. Fram till dess visar sidhuvudet “Osparade ändringar”.
- 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.
- Om du vill starta den automatiskt drar du en trigger från nodbiblioteket till duken — se Ställ in pipelinetriggers.