パイプラインテンプレートを作成
パイプラインのテンプレートはワークスペース設定で作成します。ワークスペースの サイドバーにある パイプライン の項目は_実行キュー_であり、テンプレートの 一覧ではありません。「テンプレートを作成」の操作はそこにはありません。
各ステップ種別、ボディのキー、設定フィールドの意味については、 パイプラインステップのリファレンス を参照してください。
テンプレートを作成
「テンプレートを作成」というセクション- 設定 → ワークスペース → パイプラインテンプレート
(
/workspaces/<workspace-id>/settings/pipelines)に移動します。 - 新しいテンプレートを押します。
ID のダイアログはありません。エディターは、新しいパイプラインという名前の
用意されたスケルトンで即座に開きます。ID は自動で割り当てられます
(pipeline_1、次に pipeline_2、…)。ヘッダーのタイトルをクリックすると、
名前を変更できます。
キャンバスは空白ではありません。Trigger の入口ノード、Step という ラベルのプロンプトエージェントノード 1 つ、そして実行を終わらせる終端 センチネルがあります。センチネルは描画されません。エディターはこの非表示の 終端を、到達可能なすべてのシンクに再接続します。そのため、Step の後に 接続した処理も実行されます。
ノードを追加
「ノードを追加」というセクションノードライブラリのサイドバーはエディターの左側に常時表示されます。 ノードを検索ボックスで絞り込み、項目をキャンバスにドラッグします。ノードは ドロップした場所に、入力接続なしで配置されます。
| パレットのノード | ステップ種別 | 動作 |
|---|---|---|
| Bash script | listen | {{state}} の置換付きでシェルスクリプトを実行します。エージェントはディスパッチされません |
| Open conversation | listen | 実行の唯一の可視スペースとそのチェックアウトを開きます。エージェントノードはこの部屋に参加します |
| Clone PR branch | listen | gh pr view で PR のヘッドブランチを検出し、実行ディレクトリにクローンします |
| Post PR comment | listen | 集約した指摘を GitHub のレビューコメントとして PR に投稿します |
| 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 | 項目ごとにプロンプトをレンダリングし、それらを連結したプロンプトでエージェントを 1 回だけディスパッチします |
| Call sub-pipeline | listen | 別のテンプレートをネストしたステップとして実行します |
| Clean up worktrees | listen | 古い隔離ワークツリーを削除します。決定的で、エージェントはディスパッチされません |
ライブラリでは、これらが フローとロジック、PR レビュー、エージェント、 メッセージング、コードにグループ化されています。Demo グループは ありません。
ノード同士を接続
「ノード同士を接続」というセクション各ワークノードの右端には円形の出力ポートがあります。そのポートから別の
ノードへドラッグすると接続できます。開始トリガーも同じです。それぞれが独自の
ポートを持つため、スケジュールからの配線が手動実行からも出ることは
ありません。ノードのすぐ後ろでステップを追加(+)を押すと、その後に
種別を挿入できます。既存のエッジの中点にカーソルを合わせて × を押すと、
接続を解除できます。
接続は、それ_を受け取る_ノードからも編集できます。
- 下流のノードを選択します。右側に設定パネルが開きます。
- Triggers from までスクロールし、このノードがリッスンすべき上流ノード ごとにチップをタップします。選択済みのチップをタップすると接続が解除されます。
- 上流ノードがルーターの場合、チップの下にルートキーブロックが表示され、
ルーターのエッジごとに**<node> からのルートキー**フィールドが 1 つ
並びます。そのエッジが発火するキー(ファイル存在ルーターなら
trueかfalse、スイッチならケース名)を入力します。
各トリガーノードはエントリーポイントです。ノードは複数の上流をリッスンし (ファンイン)、複数の下流をフィードできます(ファンアウト)。ただしグラフは 非巡回である必要があります。エディターには循環を接続させない仕組みはないため、 自分で確認してください。
終端センチネルはキャンバスから除外されているため、選択できません。エディターは グラフが変わるたびに、それを到達可能なすべてのシンクに再接続します。そのため、 用意された Step の後に接続した処理も実行されます。空のグラフ(後続の ワークがないトリガー)では、トリガー自体が一覧に表示され、実行は即座に 完了します。
ノードを設定
「ノードを設定」というセクションノードを選択すると設定パネルが開きます。どのフィールドが表示されるかは、 ノードのボディによって異なります。
すべてのノードにはラベル、入力キー(カンマ区切りのステートキーで、 実行時に読み取られます)があり、詳細の下にリデューサー、 タイムアウト (ms)、再試行回数、このステップが失敗しても続行、 **出力スキーマ (JSON)**があります。listen と join のノードは、種別を この 2 つの間で切り替えることもできます。
会話を開く
「会話を開く」というセクションクローンするリポジトリのピッカー(どのワークスペースリポジトリを チェックアウトするか。空ならなし)、スペース名、会話を開く チェックボックスを追加します。このチェックボックスがオンのときは、会話名 フィールドが、部屋が開く際のストリームに名前を付けます。エージェントノードは この部屋に参加します。自分で部屋を開くことはありません。
プロンプトエージェント
「プロンプトエージェント」というセクションエージェント(ディスパッチするエージェント)、プロンプトテンプレート
({{key}} で入力や上流の出力を参照します)、出力キーを追加します。
タイムアウト (ms) の単位は秒ではなく_ミリ秒_です。900000 は 15 分です。
900 を入力すると、ステップには 0.9 秒が与えられます。
プロンプトエージェントノードがどの会話モードで実行されるかは、エージェント
ノードのエディターのフィールドでは設定しません。それは、部屋を作成した
Open conversation ノードの extras['mode'](chat、plan、review)で
渡されます(デフォルトは review)。エージェントステップ側で設定しても無視
されます。キーは完全一致で照合され、それ以外の綴りは黙って無視されます。
Bash スクリプト
「Bash スクリプト」というセクションBash スクリプトを追加します。作業ディレクトリや環境のフィールドは ありません。どちらも設定できないためです。
- 1 回の実行におけるすべての bash ステップは、cwd
<cc_root>/pipelines/<runId>/を共有します。 GITHUB_TOKENは資格情報ストアから注入されるため、ghやgit clone https://x-access-token:$GITHUB_TOKEN@…は設定なしで動作します。- スクリプトは文字どおり
bashという実行ファイルとして起動されるため、bashがサーバーホストのPATHにある必要があります。これは Windows での 考慮事項です。
ルーター
「ルーター」というセクションルーターは条件を評価してルートキーを返します。エンジンは、ルートキーが一致する 下流のエッジだけを発火し、他のブランチはスキップ済みとしてマークします。
ルーターを選択すると、出力キーフィールドが条件エディターに置き換わります。 4 つのモードから 1 つを選びます。
- ファイルが存在する(いずれか) — 一覧のいずれかのパスが存在するときに
"true"にルーティングします。 - ファイルが存在する(すべて) — 一覧のすべてのパスが存在するときだけ
"true"にルーティングします。 - 比較 — ステートの値をリテラルと比較します。
- スイッチ — ステートキーの値でルーティングします。デフォルトケースが あります。
次に、出力側のエッジに一致するルートキーを設定します (ノード同士を接続を参照)。
ブール値の and / or / not グループはボディ側でサポートされていますが、
このフォームからは作成できません。extras.predicate に手書きした述語ツリーが
必要です。述語と演算子の完全な語彙は、
パイプラインステップのリファレンス
にあります。
ジョイン
「ジョイン」というセクション独自の設定はありません。すべての上流ステップを待ちます。
承認ゲート
「承認ゲート」というセクションゲートは、承認者エージェントを、ゲートのプロンプトを持つ非表示の会話に
ディスパッチして中断します。承認者はその会話であなたの判断を求め、
submit_output で { "decision": "approved" | "rejected", "reason": "..." }
として送信します。判断は出力キー(デフォルトは approval_decision)の下に
格納されるため、下流のスイッチルーターがそれを基に分岐できます。
エージェントに承認者を、プロンプトテンプレートにゲートの質問を設定
します。ゲートは submit_output を通じて { "decision": "approved" | "rejected", "reason": "..." } として解決されます。Reviewer (prompt) ノードも
同じ方法で送信します。
チームディスパッチ
「チームディスパッチ」というセクションチームIDとディスパッチモードを追加します。ピッカーが提供するモードは 次の 2 つだけです。
allParallel— メンバーごとに 1 つのタスクを実行し、すべて完了するまで 中断します。manager— リーダーをディスパッチし、リーダーが委任します。
その他の値が保存されている場合は allParallel として動作します。
リデューサーを append に設定すると、各メンバーの結果が出力キーの下に
リストとして収集されます。
For each と Call sub-pipeline
「For each と Call sub-pipeline」というセクションFor each は、デフォルトでは items ステートキーに対してマップします
(ノード上の extras.iterableKey / extras.itemKey)。項目ごとにプロンプトを
1 回レンダリングし(デフォルトは {{item}})、それらのプロンプトを連結して
エージェントを1 回ディスパッチします。空のコレクションは、空のリストで
即座に完了します。項目ごとに並列ディスパッチするわけではありません。
Call sub-pipeline は、子の実行が終端状態に達するまで中断し、その後、
子の最終ステートを出力キーの下にマージします(デフォルトは
subflow_result)。extras.templateId で子を指定します。テンプレートは自分
自身を呼び出すことはできません。失敗またはキャンセルされた子は親ステップを
失敗させ、そのステップの再試行ポリシーと失敗時の継続ポリシーが適用されます。
入力を宣言して手動実行を許可
「入力を宣言して手動実行を許可」というセクションどちらもエディターのヘッダーにある手動実行の背後にあります。
- 手動実行を押します。
- 手動実行を許可をオンにします。このスイッチは即座に保存されます。
テンプレートを実行ページに表示させる
manualトリガー行を作成(または 削除)します。 - 上限を設けたい場合は最大並列実行数を設定します(無制限にするには
空欄にします)。追加の開始は、枠が空くまで
queuedの状態で待機します。 - 手動実行で収集するフォームフィールドごとに入力を追加を押します。
| フィールド | 説明 |
|---|---|
| キー | 値が保存されるステートキーです。{{key}} として参照します |
| ラベル | 表示ラベル(デフォルトはキー) |
| タイプ | テキスト、複数行テキスト、数値、トグル、選択、リポジトリ |
| オプション(カンマ区切り) | カンマ区切りの選択肢。選択でのみ使用します |
| デフォルト値 | あらかじめ入力される値 |
| プレースホルダー | 空のフィールド内に表示されるヒント |
| ヘルプテキスト | フィールドの下に表示される補足 |
| 必須 | 実行フォームが空の値でブロックするかどうか |
リポジトリの入力は、ワークスペースのリポジトリを選択するピッカーを表示し、
repo_id、repo_local_path、repo_full_name、そしてリポジトリに GitHub
リモートがある場合は repo_owner と repo_name を実行のペイロードに設定
します。
- ダイアログで保存を押します。入力の編集は下書きに取り込まれ、テンプレート を保存したときに永続化されます。
保存して有効化
「保存して有効化」というセクション- エディターのヘッダーで保存を押します。保存するまで、ヘッダーには 「未保存の変更」と表示されます。
- 設定 → ワークスペース → パイプラインテンプレートに戻り、テンプレートの 行のスイッチがオンになっていることを確認します。エンジンは無効なテンプレート の開始を拒否し、無効なテンプレートは実行ページに表示されません。
- 自動で開始させるには、ノードライブラリからトリガーをキャンバスにドラッグ します — パイプライントリガーを設定 を参照してください。