並列作業
並列性は、ユニットごとに新しいコンテキストと速度をもたらします。その代償として協調が必要です:待機するファンイン、衝突しないマージ、メーカーではない評価者。ユニットが真に独立している場合にこれを使用し、協調コストを明示的に支払います。
前提条件
- ユニットは独立している:どのユニットも他の結果を必要とせずに開始できます。
- ユニットが何かを把握していること。原因不明 → まず調査ディスパッチを1件送ります。
- 書き込みは分離されている:各ユニットは異なるファイルに書き込むか、各ユニットが独自のワークツリーで実行され、そのユニットが触れたファイルのみをコミットします(仕組み:delegate/references/harness-notes/claude-code.mdの「分離」セクションを参照)。
いずれかが欠けている場合 → 直列化するか、まず調査します。
シェイプ
ファンアウト、ファンイン。 同じフェーズのN個のディスパッチを、各ユニットに1つずつ、一緒に送信します。1つの統合ディスパッチがそれらすべてを待機し(この待機がバリアです)、それらの配信ファイルを1つにマージします。各ユニットの出力はファイルに保持し、統合側はパスを読み取ります(あなたのコンテキストは読み取りません)。
機械的ファンアウト。 1つのprocessディスパッチが正確な変更を一度決定します。N個の汎用ディスパッチがそれをそのまま適用し、それぞれが自身のターゲットに対して行います。1つのreviewディスパッチがセット全体をチェックします。オーケストレーターは、たとえ小さなセットでも、自分で編集を適用することはありません。
メーカー/チェッカー。 結果を生成した者がそれを判断することはありません。reviewを別のエージェントにルーティングします — 該当ドメインにレビューアータイプのエージェントが存在する場合はそれに、そうでない場合は別の役割のスペシャリストに — 成功基準とアーティファクトパスを渡し、メーカーの推論は一切渡しません。
生成とフィルタ。 ファンアウトして候補を生成し、1つのディスパッチが重複排除とスコアリングを書かれたルーブリックに基づいて行い、生き残ったものだけが続行します。生成前にルーブリックを書きます。
トーナメント。 1つのウィンドウで判断するには大きすぎるセットをランク付けするため:ペア比較ディスパッチ(各ディスパッチは2項目を保持し、ブラケットはファイルに保持)を使用します。比較判断は絶対スコアよりも信頼性が高いです。
仮説ファンアウト。 根本原因調査用:互いに素な証拠ソース(ログ、コード、データ)ごとに1つのディスパッチが、そのソースのみから仮説を生成します。次に、仮説ごとに1つのディスパッチが反証を試みます。反証を生き残ったものが発見です。
条件付きループ。 サイズ不明の作業用:観測可能な条件が成立するまでディスパッチを繰り返します — 新しい発見がない、ゲート出力にエラーがゼロ、チェックリストファイルに未チェック項目がないなど。最初の反復の前に上限を設定します(デフォルトは5)。上限に達したら、残った内容をPARTIALとして報告します。
チェックリストファンアウト
- [ ]項目を含むマークダウンファイルは、すぐに使えるユニットリストです:未チェック項目ごとに1つのディスパッチが、DONE時に自身の行をチェックするよう指示され、「未チェック項目が残っていない」状態になるまでループします。同じファイルを指す項目は直列化します。
上限と停止条件
すべてのループとファンインは、開始前に数字が書き留められています:反復回数、再ディスパッチ回数、またはユニット数。上限に達した場合は、ユーザーにPARTIALまたはBLOCKEDを報告し、決して無言で再試行してはいけません。
永続チーム
一部のハーネスは、共有タスクリストとメッセージングを備えた長期生存エージェントチームを提供します。これらはエージェントが一貫性なく従う指示と通信オーバーヘッドを追加し、ハーネス間で移植できません。上記のシェイプはそれらを必要としません。エージェントがタスク途中でメッセージを交換する必要がある場合にのみチームを使用し、その場合はハーネスノートを参照してください。
関連リンク
- delegate — 各ユニットが使用するプロンプトテンプレート。
- delegate/references/harness-notes/claude-code.md — Claude Codeで同時ディスパッチを送信し、ワークツリーを分離し、長いパイプラインをワークフロースクリプトに移動する方法。