コンテンツにスキップ

パイプラインテンプレートを作成

パイプラインのテンプレートはワークスペース設定で作成します。ワークスペースの サイドバーにある パイプライン の項目は_実行キュー_であり、テンプレートの 一覧ではありません。「テンプレートを作成」の操作はそこにはありません。

各ステップ種別、ボディのキー、設定フィールドの意味については、 パイプラインステップのリファレンス を参照してください。

  1. 設定 → ワークスペース → パイプラインテンプレート (/workspaces/<workspace-id>/settings/pipelines)に移動します。
  2. 新しいテンプレートを押します。

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 グループは ありません。

各ワークノードの右端には円形の出力ポートがあります。そのポートから別の ノードへドラッグすると接続できます。開始トリガーも同じです。それぞれが独自の ポートを持つため、スケジュールからの配線が手動実行からも出ることは ありません。ノードのすぐ後ろでステップを追加(+)を押すと、その後に 種別を挿入できます。既存のエッジの中点にカーソルを合わせて × を押すと、 接続を解除できます。

接続は、それ_を受け取る_ノードからも編集できます。

  1. 下流のノードを選択します。右側に設定パネルが開きます。
  2. Triggers from までスクロールし、このノードがリッスンすべき上流ノード ごとにチップをタップします。選択済みのチップをタップすると接続が解除されます。
  3. 上流ノードがルーターの場合、チップの下にルートキーブロックが表示され、 ルーターのエッジごとに**<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 スクリプトを追加します。作業ディレクトリや環境のフィールドは ありません。どちらも設定できないためです。

  • 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 は、デフォルトでは items ステートキーに対してマップします (ノード上の extras.iterableKey / extras.itemKey)。項目ごとにプロンプトを 1 回レンダリングし(デフォルトは {{item}})、それらのプロンプトを連結して エージェントを1 回ディスパッチします。空のコレクションは、空のリストで 即座に完了します。項目ごとに並列ディスパッチするわけではありません。

Call sub-pipeline は、子の実行が終端状態に達するまで中断し、その後、 子の最終ステートを出力キーの下にマージします(デフォルトは subflow_result)。extras.templateId で子を指定します。テンプレートは自分 自身を呼び出すことはできません。失敗またはキャンセルされた子は親ステップを 失敗させ、そのステップの再試行ポリシーと失敗時の継続ポリシーが適用されます。

どちらもエディターのヘッダーにある手動実行の背後にあります。

  1. 手動実行を押します。
  2. 手動実行を許可をオンにします。このスイッチは即座に保存されます。 テンプレートを実行ページに表示させる manual トリガー行を作成(または 削除)します。
  3. 上限を設けたい場合は最大並列実行数を設定します(無制限にするには 空欄にします)。追加の開始は、枠が空くまで queued の状態で待機します。
  4. 手動実行で収集するフォームフィールドごとに入力を追加を押します。
フィールド 説明
キー 値が保存されるステートキーです。{{key}} として参照します
ラベル 表示ラベル(デフォルトはキー)
タイプ テキスト、複数行テキスト、数値、トグル、選択、リポジトリ
オプション(カンマ区切り) カンマ区切りの選択肢。選択でのみ使用します
デフォルト値 あらかじめ入力される値
プレースホルダー 空のフィールド内に表示されるヒント
ヘルプテキスト フィールドの下に表示される補足
必須 実行フォームが空の値でブロックするかどうか

リポジトリの入力は、ワークスペースのリポジトリを選択するピッカーを表示し、 repo_id、repo_local_path、repo_full_name、そしてリポジトリに GitHub リモートがある場合は repo_owner と repo_name を実行のペイロードに設定 します。

  1. ダイアログで保存を押します。入力の編集は下書きに取り込まれ、テンプレート を保存したときに永続化されます。
  1. エディターのヘッダーで保存を押します。保存するまで、ヘッダーには 「未保存の変更」と表示されます。
  2. 設定 → ワークスペース → パイプラインテンプレートに戻り、テンプレートの 行のスイッチがオンになっていることを確認します。エンジンは無効なテンプレート の開始を拒否し、無効なテンプレートは実行ページに表示されません。
  3. 自動で開始させるには、ノードライブラリからトリガーをキャンバスにドラッグ します — パイプライントリガーを設定 を参照してください。