Přeskočit na obsah

Vytvořte šablonu pipeline

Šablony pipeline se píšou v nastavení pracovního prostoru. Položka Pipelines v postranním panelu pracovního prostoru je fronta běhů. Seznam šablon je jinde a tahle obrazovka akci „vytvořit šablonu“ nemá.

Co znamená každý druh kroku, klíč těla a pole konfigurace, je v typech kroků pipeline.

  1. Jdi do Nastavení → Pracovní prostor → Šablony pipeline (/workspaces/<workspace-id>/settings/pipelines).
  2. Stiskni Nová šablona.

Dialog pro id tu není. Editor se hned otevře na založené kostře pojmenované Nový pipeline, s automaticky přiděleným id (pipeline_1, pak pipeline_2, …). Název v záhlaví přejmenuješ kliknutím.

Plátno není prázdné: vstupní uzel Trigger, jeden uzel agenta s promptem s popiskem Step a koncová zarážka, která běh ukončí. Zarážka se nekreslí. Editor tu skrytou zarážku přepojí na každý dosažitelný konec, takže práce, kterou napojíš za Step, se pořád provede.

Postranní panel Knihovna uzlů je v editoru trvale vlevo. Filtruješ ji polem Hledat uzly a položku přetáhneš na plátno. Uzel spadne tam, kam ho pustíš, a nemá žádnou příchozí hranu.

Uzel v paletě Druh kroku Co dělá
Bash script listen Spustí shell skript s dosazením {{state}}; žádný agent se neodesílá
Open conversation listen Otevře jediný viditelný prostor běhu a jeho checkout; uzly agentů vstoupí do téhle místnosti
Clone PR branch listen Zjistí větev hlavy PR přes gh pr view a naklonuje ji do adresáře běhu
Post PR comment listen Pošle sloučená zjištění do PR jako komentář revize na GitHubu
Reviewer (prompt) listen Odešle specializovaného review agenta; pozastaví se, dokud agent neodešle výsledek
Consolidate (join) join Počká na několik předchozích větví a pak požádá agenta, aby jejich výstupy sloučil
Custom prompt listen Obecný uzel řízený promptem, vedený tělem promptAgent
Post to space listen Pošle zprávu do prostoru pro zprávy
Condition / switch (router) router Rozvětví tok podle hodnoty stavu
If file exists (router) router Vede "true", když cesta pod klonem existuje, jinak "false"
Any file exists (OR router) router Vede "true", když existuje kterákoli uvedená cesta
All conditions (AND router) router Vede "true" jen tehdy, když existuje každá uvedená cesta
Team dispatch listen Odešle celý tým a pozastaví se, dokud neskončí
Approval gate listen Pozastaví se kvůli rozhodnutí o schválení
For each (map) forEach Vykreslí prompt pro každou položku a pak agenta odešle jednou s těmi prompty spojenými
Call sub-pipeline listen Spustí jinou šablonu jako vnořený krok
Clean up worktrees listen Odstraní zastaralé izolované worktree; deterministické, žádný agent se neodesílá

Knihovna je sdružuje pod Tok a logika, Kontrola PR, Agenti, Zprávy a Kód. Skupina Demo v knihovně není.

Každý pracovní uzel má na pravé hraně kulatý výstupní port. Táhni z toho portu na jiný uzel a propojíš je. Spouštěče na startu fungují stejně: každý má vlastní port, takže hrana z Plán nevede zároveň z Ruční spuštění. Stiskni Přidat krok (+) hned za uzlem a vložíš za něj typ. Najetím na střed existující hrany a stiskem × spojení zrušíš.

Spojení se upravují i z uzlu, který je přijímá:

  1. Vyber navazující uzel. Vpravo se otevře jeho panel konfigurace.
  2. Sjeď na Spouští se z a klepni na čip každého předchozího uzlu, na který má tenhle poslouchat. Klepnutí na vybraný čip spojení odebere.
  3. Když je předchozí uzel router, pod čipy se objeví blok Klíče trasy a v něm pro každou hranu z routeru pole Klíč trasy z <uzel>. Zadej klíč, na který ta hrana vystřelí: true nebo false u routerů existence souboru, nebo název větve u přepínače.

Každý uzel spouštěče je vstupní bod. Uzel může poslouchat několik předchůdců (fan-in) a krmit několik následníků (fan-out). Graf musí zůstat acyklický. Editor ti cyklus nezakáže, takže si spojení zkontroluj.

Koncová zarážka se z plátna odfiltruje, takže ji nejde vybrat. Editor ji při každé změně grafu přepojí na každý dosažitelný konec, takže práce napojená za založený Step se pořád provede. Prázdný graf (spouštěč bez navazující práce) uvede samotný spouštěč, aby běh hned skončil.

Vyber uzel a otevře se jeho panel konfigurace. Která pole se ukážou, záleží na těle uzlu.

Každý uzel má Popisek, Vstupní klíče (oddělené čárkou) (klíče stavu, které se čtou při provedení) a pod Pokročilé položky Reducer, Časový limit (ms), Počet pokusů, Pokračovat, pokud tento krok selže a Výstupní schéma (JSON). Uzly listen a join mezi sebou umí přepnout i Druh.

Přidá výběr Repozitáře ke klonování (které repozitáře pracovního prostoru se checkoutnou; prázdný výběr znamená žádný), Název prostoru a zaškrtávací pole Otevřít v ní konverzaci. Když je zaškrtnuté, pole Název konverzace pojmenuje proud, se kterým se místnost otevře. Uzly agentů do téhle místnosti vstoupí. Vlastní neotevírají.

Přidá Agent (kterého agenta odeslat), Šablona promptu (vstupy nebo výstupy předchůdců odkážeš přes {{key}}) a Výstupní klíč.

Časový limit (ms) je v milisekundách. 900000 je 15 minut. Když zadáš 900, krok dostane 0,9 sekundy.

Režim konverzace, ve kterém uzel agenta s promptem běží, na uzlu agenta pole nemá. Veze se v extras['mode'] (chat, plan nebo review) na uzlu Open conversation, který místnost založil (výchozí review). Nastavení na kroku agenta se ignoruje. Klíč se porovnává přesně: jakékoli jiné hláskování se tiše ignoruje.

Přidá Bash skript. Pole pro pracovní adresář ani prostředí tu nejsou, protože ani jedno nejde nastavit:

  • Každý bash krok v běhu sdílí cwd <cc_root>/pipelines/<runId>/.
  • GITHUB_TOKEN se vloží z úložiště přihlašovacích údajů, takže gh a git clone https://x-access-token:$GITHUB_TOKEN@… fungují bez dalšího nastavení.
  • Skript se spouští jako doslovný spustitelný soubor bash, takže bash musí být na PATH hostitele serveru. Na Windows na to mysli.

Router vyhodnotí podmínku a vrátí klíč trasy. Engine vystřelí jen navazující hranu, jejíž klíč trasy sedí, a ostatní větve označí jako přeskočené.

Výběr routeru nahradí pole Výstupní klíč editorem podmínky. Vyber jeden ze čtyř režimů:

  • Soubor(y) existují — libovolný — vede "true", když existuje kterákoli uvedená cesta.
  • Soubory existují — všechny — vede "true" jen tehdy, když existuje každá uvedená cesta.
  • Porovnání — porovná hodnotu stavu s literálem.
  • Přepínač — vede podle hodnoty klíče stavu a má výchozí větev.

Potom na odchozích hranách nastav odpovídající klíče trasy (viz Propoj uzly).

Skupiny booleovských and / or / not tělo umí, z tohohle formuláře je ale nenapíšeš. Potřebují ručně napsaný strom predikátů pod extras.predicate. Úplná slovní zásoba predikátů a operátorů je v typech kroků pipeline.

Vlastní konfiguraci nemá: čeká na všechny své předchozí kroky.

Brána odešle schvalujícího agenta do skryté konverzace s promptem brány a pozastaví se. Schvalovatel se v konverzaci zeptá na tvé rozhodnutí a odešle ho přes submit_output jako { "decision": "approved" | "rejected", "reason": "..." }. Rozhodnutí spadne pod výstupní klíč (výchozí approval_decision), takže navazující router typu přepínač se podle něj může větvit.

Do Agent dej schvalovatele a do Šablona promptu otázku brány. Brána se vyřeší přes submit_output jako { "decision": "approved" | "rejected", "reason": "..." }. Stejně odesílají i uzly Reviewer (prompt).

Přidá ID týmu a Režim dispatch. Výběr nabízí přesně dva režimy:

  • allParallel — jeden úkol na člena, pozastaví se, dokud neskončí všichni.
  • manager — odešle vedoucího, který deleguje.

Jakákoli jiná uložená hodnota se chová jako allParallel. Reducer nastav na append, ať se výsledek každého člena sebere do seznamu pod výstupním klíčem.

For each a Call sub-pipeline

Sekce “For each a Call sub-pipeline”

For each ve výchozím stavu mapuje klíč stavu items (extras.iterableKey / extras.itemKey na uzlu). Prompt vykreslí jednou pro každou položku (výchozí {{item}}) a agenta odešle jednou s těmi prompty spojenými za sebe. Prázdná kolekce hned skončí prázdným seznamem. Na každou položku nejde samostatné paralelní odeslání.

Call sub-pipeline se pozastaví, dokud podřízený běh nedojde do koncového stavu, a potom sloučí konečný stav potomka pod výstupní klíč (výchozí subflow_result). Na potomka ukážeš přes extras.templateId. Šablona nemůže volat sama sebe. Selhaný nebo zrušený potomek shodí rodičovský krok a ten pak použije svou politiku opakování a pokračování při chybě.

Deklaruj vstupy a povol ruční spuštění

Sekce “Deklaruj vstupy a povol ruční spuštění”

Obojí je schované za Ruční spuštění v záhlaví editoru.

  1. Stiskni Ruční spuštění.
  2. Zapni Povolit ruční spuštění. Přepínač se uloží hned. Založí (nebo smaže) řádek spouštěče manual, díky kterému se šablona objeví ve výběru pro spuštění.
  3. Nastav Max. souběžných běhů, když chceš strop (prázdné znamená bez omezení). Další starty čekají ve stavu queued, dokud se neuvolní místo.
  4. Stiskni Přidat vstup pro každé pole formuláře, které má ruční běh posbírat:
Pole Popis
Klíč Klíč stavu, pod který se hodnota uloží; odkážeš na něj jako {{key}}
Popisek Zobrazovaný popisek (výchozí je klíč)
Typ Text, Víceřádkový text, Číslo, Přepínač, Výběr, Repozitář
Možnosti (oddělené čárkou) Volby jen pro Výběr
Výchozí hodnota Předvyplněná hodnota
Zástupný text Nápověda uvnitř prázdného pole
Nápověda Text pod polem
Povinné Jestli formulář běhu prázdnou hodnotu zablokuje

Vstup Repozitář vykreslí výběr nad repozitáři pracovního prostoru a do payloadu běhu doplní repo_id, repo_local_path, repo_full_name a, když má repozitář remote na GitHubu, i repo_owner a repo_name.

  1. V dialogu stiskni Uložit. Úpravy vstupů se složí do konceptu a uloží se, až uložíš šablonu.
  1. V záhlaví editoru stiskni Uložit. Než to uděláš, záhlaví ukazuje „Neuložené změny“.
  2. Vrať se do Nastavení → Pracovní prostor → Šablony pipeline a zkontroluj, že přepínač na řádku šablony je zapnutý. Engine odmítne spustit vypnutou šablonu a vypnutá šablona se ve výběru pro spuštění nikdy neobjeví.
  3. Aby se spouštěla sama, přetáhni spouštěč z knihovny uzlů na plátno. Viz Nastavte spouštěče pipeline.