コーディングエージェント間での作業連携
あなたはコーディネーターです。タスク定義を所有し、すべての成果物をレビューし、次のアクションを決定します。他のすべてのエージェントはワーカーです。ワーカーは仕様を受け取り、アーティファクトを生成し、停止します。ベンダー間のメッセージバスは存在しないため、連携はターンベースでファイルを介して行われます。
you task.mdを書く -> ワーカーがヘッドレスで実行 -> ワーカーがresult.mdを書く ->
あなたが読み、確認し、次のターンを決定する
agent-sync がインストールされている場合は、委任前に agent sync を実行して、すべてのワーカーがあなたが持っているのと同じ合成メモリから開始するようにします。
1. タスクディレクトリを作成する
task/
task.md # 仕様書(以下の契約を参照)
...inputs... # ワーカーが必要とするものすべて。ワーカーはこれ以外のコンテキストを得られません
result.md # ワーカーが書き込むファイル。このファイルの存在が完了を示します
task.md は請負業者への指示書であり、以下を含む必要があります。
- 目標(1段落で)
- 正確な成果物(ファイル名付き)
- 確認可能な完了条件
- 成果物を書き込んだら停止する指示
- ワーカーが共有ツリーを編集する場合の、セクション2のロックまたはワークツリールール
2. 呼び出す前に共有モードを選択する
ルールゼロ:2つのエージェントが同時に同じワーキングツリーを変更してはなりません。
| 状況 | モード |
|---|---|
| ワーカーが読み取りのみを行う(レビュー、分析、セカンドオピニオン) | 同じディレクトリ、ロックなし |
| 1つのツリーで交代で編集を行う | 同じディレクトリ + mkdir ロック |
| 並行して試行する、または並行してファイルに触れるサブタスク | ワーカーごとに1つの git worktree |
| 2つのエージェントが1つのツリーを同時に編集する | 決して行わない。構造を変更する |
同じディレクトリでのロック(mkdir はアトミックです。これらの手順も task.md に記述してください):
until mkdir .agent-lock 2>/dev/null; do sleep 1; done # 取得
echo "$(whoami):$$" > .agent-lock/owner
# ... 作業 ...
rm -rf .agent-lock # 解放
経過時間によるロックの自動期限切れは絶対に行わないでください。遅いワーカーは停止したワーカーと見分けがつきません。古いロックをクリアする前に、ワーカープロセスが停止していることを確認してください。
ワークツリーモード: ワーカーごとに git worktree add ../task-<worker> -b agent/<worker> を実行します。ワーカーは決してプッシュせず、互いのツリーに触れることもありません。メインチェックアウトは読み取り専用のままにし、あなた(コーディネーター)が唯一の直列化されたステップとしてすべてのマージを実行します。
3. ワーカーをヘッドレスで呼び出す
| ワーカー | コマンド |
|---|---|
| Claude Code | claude -p "このディレクトリの task.md を読み、完了してください。" |
| Codex CLI | codex exec --skip-git-repo-check --sandbox workspace-write "このディレクトリの task.md を読み、完了してください。" </dev/null |
| Gemini CLI | gemini -p "このディレクトリの task.md を読み、完了してください。" |
苦労して学んだルール:
- タスクディレクトリ内からワーカーを実行し、その書き込みアクセス権をそのディレクトリに限定してください。
- バックグラウンドで実行するワーカーには stdin を閉じてください(
</dev/null)。そうしないと入力待ちでハングする可能性があります。 - Codex は
--skip-git-repo-checkなしでは信頼されていない非gitディレクトリを拒否します。
4. 確認し、決定する
- ワーカーの言葉は成果物ではありません。
result.mdを読み、完了条件と照らし合わせて確認してください。コードの場合は、自分でテストを実行してください。 - 成果物がない、または間違っている場合は、同じ仕様をリトライするのではなく、より明確な仕様で新しいターンを開始してください。
- あなたは受け入れたすべてのものに対して責任を持ち続けます。ワーカーの差分を、人間の請負業者のPRと同様にレビューしてください。
境界
- ワーカーに認証情報、デプロイ権限、実際のユーザーへのアクセスを決して与えないでください。ワーカーはアーティファクトを生成し、コーディネーター(ユーザーとともに)が出荷します。
- 「ちょっとしたタスク」であっても、ロックやワークツリーなしで、このプロトコルを1つのツリー内で編集を並列化するために決して実行しないでください。
- ユーザーがどのエージェントをコーディネーターにするかを決定します。コーディネーションをワーカーに引き継がないでください。