建立管線範本
管線範本是在工作區設定中撰寫的。工作區側邊欄中的 管線 項目是_執行佇列_, 而不是範本清單 — 它沒有「建立範本」這個操作。
關於每種步驟種類、主體鍵與設定欄位代表什麼,請參閱 管線步驟參考。
建立範本
標題為「建立範本」的章節- 前往 設定 → 工作區 → 管線範本
(
/workspaces/<workspace-id>/settings/pipelines)。 - 按下 新增範本。
不會出現 id 對話框。編輯器會立刻以一個名為 新增管線 的預先植入骨架開啟,
並自動分配 id(先是 pipeline_1,接著是 pipeline_2,…)。點擊頁首的標題
即可重新命名。
畫布並非空白:裡面有一個 Trigger 入口節點、一個標示為 Step 的提示代理 節點,以及一個結束執行的終端哨兵。哨兵不會被繪製出來。編輯器會把這個隱藏的 終端重新接到每個可到達的匯點,因此你在 Step 之後接上的工作仍會執行。
新增節點
標題為「新增節點」的章節節點庫 側邊欄常駐在編輯器左側。用 搜尋節點 方塊篩選它,並把項目拖曳到 畫布上 — 節點會落在你放開的位置,且沒有傳入連線。
| 節點庫項目 | 步驟種類 | 作用 |
|---|---|---|
| Bash script | listen | 執行帶 {{state}} 替代的 shell 指令碼;不派送代理 |
| Open conversation | listen | 開啟這次執行唯一可見的空間及其檢出;代理節點會加入這個房間 |
| Clone PR branch | listen | 透過 gh pr view 找出 PR 的 head 分支,並將它複製到執行目錄 |
| Post PR comment | listen | 把彙整後的發現張貼到該 PR,成為一則 GitHub 審查留言 |
| Reviewer (prompt) | listen | 派送專門的審查代理;暫停直到該代理提交結果 |
| Consolidate (join) | join | 等待多個上游分支,然後請代理彙整它們的輸出 |
| Custom prompt | listen | 經由 promptAgent 主體路由的通用提示驅動節點 |
| Post to space | listen | 傳送一則訊息到訊息空間 |
| Condition / switch (router) | router | 依狀態值讓流程分支 |
| If file exists (router) | router | 當複本下存在某個路徑時路由到 "true",否則路由到 "false" |
| Any file exists (OR router) | router | 當列出的任一路徑存在時路由到 "true" |
| All conditions (AND router) | router | 僅當列出的所有路徑都存在時路由到 "true" |
| Team dispatch | listen | 派送整個團隊並暫停,直到它完成 |
| Approval gate | listen | 暫停以等待核准決定 |
| For each (map) | forEach | 為每個項目渲染一次提示,然後把這些提示串接後對代理派送一次 |
| Call sub-pipeline | listen | 以巢狀步驟執行另一個範本 |
| Clean up worktrees | listen | 移除過期隔離的工作樹;為確定性操作,不派送代理 |
節點庫把這些分組在 流程與邏輯、PR 審查、代理、訊息 與 程式碼 之下。沒有 Demo 群組。
連接節點
標題為「連接節點」的章節每個工作節點的右緣都有一個圓形的 輸出埠。從該埠拖曳到另一個節點即可連接
它們。起始觸發器也一樣:每一個都有自己的埠,因此從 排程 拉出的線不會同時從
手動執行 離開。在節點之後按下 新增步驟(+),即可在其後插入一個類型。
將游標停在既有邊的中點並按下 × 即可中斷連線。
連線也可以從_接收_它們的節點編輯:
- 選取下游節點。它的設定面板會從右側開啟。
- 捲動到 Triggers from,並為這個節點應監聽的每個上游節點點選其標籤。 點選已選取的標籤會移除該連線。
- 如果某個上游節點是路由器,標籤下方會出現一個 路由鍵 區塊,每條路由器邊
各有一個 來自 <node> 的路由鍵 欄位。輸入該邊觸發時所用的鍵 —
檔案存在類路由器為
true或false,切換則為案例名稱。
每個觸發節點都是一個進入點。一個節點可以監聽多個上游(扇入),並饋送多個下游 (扇出),而圖必須保持無環 — 編輯器中沒有任何機制會阻止你接出一個環,所以要 自行檢查。
終端哨兵會從畫布中被濾除,因此無法選取。每當圖變更時,編輯器都會將它重新接到 每個可到達的匯點,因此你在預先植入的 Step 之後接上的工作仍會執行。空圖 (觸發器沒有任何後續工作節點)會列出觸發器本身,讓執行立即完成。
設定節點
標題為「設定節點」的章節選取節點即可開啟其設定面板。會出現哪些欄位取決於該節點的主體。
每個節點都有 標籤、輸入鍵(執行時讀取、以逗號分隔的狀態鍵),並在 進階 之下有 縮減器、逾時(毫秒)、重試次數、 此步驟失敗時仍繼續 與 輸出結構描述。listen 與 join 節點也可以在兩者 之間切換它們的 種類。
開啟對話
標題為「開啟對話」的章節新增一個 要複製的儲存庫 選擇器(要檢出哪些工作區儲存庫;留空表示都不 檢出)、一個 空間名稱,以及一個 在其中開啟對話 核取方塊。當該核取方塊 開啟時,對話名稱 欄位會為房間開啟時所在的資料流命名。代理節點會加入這個 房間 — 它們不會自己開啟一個。
提示代理
標題為「提示代理」的章節新增 代理(要派送哪個代理)、提示範本(用 {{key}} 參照輸入或上游
輸出)與 輸出鍵。
逾時(毫秒) 的單位是_毫秒_,不是秒 — 900000 是 15 分鐘。輸入 900
會讓該步驟只有 0.9 秒。
提示代理節點以哪種對話模式執行,在代理節點上並沒有對應的編輯器欄位。它是由
建立該房間的 Open conversation 節點上的 extras['mode'](chat、plan
或 review)所決定(預設為 review)。在代理步驟上設定它會被忽略。這個鍵採
完全相符:任何其他拼法都會被靜默忽略。
Bash 指令碼
標題為「Bash 指令碼」的章節新增 Bash 指令碼。沒有工作目錄或環境欄位,因為兩者都無法設定:
- 一次執行中的每個 bash 步驟都共用 cwd
<cc_root>/pipelines/<runId>/。 GITHUB_TOKEN會從憑證儲存區注入,因此gh與git clone https://x-access-token:$GITHUB_TOKEN@…不需任何設定即可運作。- 指令碼是以字面上的可執行檔
bash啟動,因此伺服器主機的PATH中必須有bash。這是 Windows 上的考量。
路由器
標題為「路由器」的章節路由器會評估一個條件並傳回路由鍵;引擎只會觸發路由鍵相符的那條下游邊,並把 其他分支標示為已跳過。
選取路由器會把 輸出鍵 欄位取代為條件編輯器。從它的四種模式中挑選一種:
- 檔案存在—任一 — 當列出的任一路徑存在時路由到
"true"。 - 檔案存在—全部 — 僅當列出的每個路徑都存在時路由到
"true"。 - 比較 — 把狀態值與字面值比較。
- 切換 — 依狀態鍵的值路由,並帶有一個預設案例。
接著在輸出的邊上設定相符的路由鍵(參見 連接節點)。
布林 and / or / not 群組由主體支援,但無法從這個表單撰寫 — 它們需要在
extras.predicate 下手寫的述詞樹。完整的述詞與運算子詞彙請見
管線步驟參考。
本身沒有設定:它會等待所有上游步驟。
核准閘門
標題為「核准閘門」的章節閘門會把核准者代理派送到一個帶有閘門提示的隱藏對話中,然後暫停。核准者會在該
對話中徵求你的決定,並透過 submit_output 以
{ "decision": "approved" | "rejected", "reason": "..." } 提交。該決定會寫入
輸出鍵(預設 approval_decision)之下,因此下游的切換路由器可以依它分支。
把 代理 設為核准者,並把 提示範本 設為閘門問題。閘門會透過
submit_output 以 { "decision": "approved" | "rejected", "reason": "..." }
的形式得出結果。Reviewer (prompt) 節點也以相同方式提交。
團隊分派
標題為「團隊分派」的章節新增 團隊 ID 與 分派模式。選擇器只提供兩種模式:
allParallel— 每位成員一個任務,暫停直到全部完成。manager— 派送隊長,由隊長負責分派。
任何其他已儲存的值都會以 allParallel 的方式運作。把 縮減器 設為 append,
即可將每位成員的結果收集成輸出鍵之下的一個清單。
For each 與 Call sub-pipeline
標題為「For each 與 Call sub-pipeline」的章節For each 預設會對 items 狀態鍵進行映射(節點上的 extras.iterableKey /
extras.itemKey)。它會為每個項目渲染一次提示(預設為 {{item}}),並把這些
提示串接後對代理派送一次。空集合會立即以空清單完成。它並不是為每個項目各做
一次並行派送。
Call sub-pipeline 會暫停,直到子執行達到終端狀態,然後把子執行的最終狀態
合併到輸出鍵(預設 subflow_result)之下。用 extras.templateId 將它指向
子範本。範本不能呼叫自己;失敗或被取消的子執行會讓父步驟失敗,接著便交由該步驟
的重試與失敗後繼續原則處理。
宣告輸入並允許手動執行
標題為「宣告輸入並允許手動執行」的章節兩者都位於編輯器頁首的 手動執行 之後。
- 按下 手動執行。
- 開啟 允許手動執行。這個開關會立即保存 — 它會建立(或刪除)
manual觸發器資料列,讓範本出現在執行選取器中。 - 如果想要上限,請設定 最大並行執行數(留空表示不限)。多出來的啟動會以
queued狀態等待,直到有名額釋出。 - 對每次手動執行應收集的每個表單欄位按下 新增輸入:
| 欄位 | 說明 |
|---|---|
| 鍵 | 值儲存所在的狀態鍵;以 {{key}} 參照它 |
| 標籤 | 顯示標籤(預設為該鍵) |
| 類型 | 文字、多行文字、數字、開關、下拉選單、儲存庫 |
| 選項 | 以逗號分隔的選項,僅供下拉選單使用 |
| 預設值 | 預先填入的值 |
| 預留位置 | 空白欄位內的提示文字 |
| 說明文字 | 欄位下方的輔助文字 |
| 必填 | 執行表單是否會在值為空時阻擋提交 |
儲存庫 輸入會渲染一個用於挑選工作區儲存庫的選擇器,並把 repo_id、
repo_local_path、repo_full_name,以及 — 當儲存庫有 GitHub 遠端時 —
repo_owner 與 repo_name 填入執行承載資料中。
- 在對話框中按下 儲存。輸入的編輯會併入草稿;在你儲存範本時才會保存。
儲存並啟用
標題為「儲存並啟用」的章節- 在編輯器頁首按下 儲存。在你儲存之前,頁首會顯示「有未儲存的變更」。
- 回到 設定 → 工作區 → 管線範本,確認範本那一列的開關已開啟。引擎會拒絕 啟動已停用的範本,而停用的範本也永遠不會出現在執行選取器中。
- 若要讓它自動啟動,請從節點庫把觸發器拖曳到畫布上 — 參見 設定管線觸發器。