記事

ファイル事前予約システム:同一リポジトリでの複数AIエージェントのコード衝突を防ぐ

単一ディレクトリでの無秩序な並行実行はコード破損を招きます。ブランチ分離は協調作業を妨げます。解決策はサーバー主導のファイル予約システムです。

同一リポジトリで複数エージェントを無秩序に動かすと1分以内に上書きが発生します。個別ブランチへの隔離は共同開発において逆効果となります。

Two agents reach for the same file. One reservation is granted; the other is refused at the board.the boardclaude-1codex-2src/types/order.tsrefused
パスごとに1人の保持者。衝突する書き込みはディスク到達前にボードで遮断されます。

ブランチ隔離の弊害

隔離された環境では、他方が直前に作成した型定義を即座に利用できません。

共通設定ファイルで自動マージ不能な競合が発生します。

リアルタイムプレビューが断片化します。

事後マージに多大な人的労力やトークンを消費します。

そのため全エージェントが同一ディレクトリを共有します。

デッドロックのない一時リース

予約は対象パス、エージェントID、モード、有効期限で構成されます。

排他モード(書き込み)と共有モード(読み込み追跡)が存在します。

export interface ClaimDenial {
  path: string;
  holder: string;
  holderTask: string;
  expiresInS: number;
  hint: string;
}

拒否時は即座に現保持者のタスク情報が返され、エージェントは他タスクへ切り替えられます。

実際の書き込みで自動延長され、プロセス終了時に自動解放されます。

モデルの自律性は最適化であり、サーバー制御こそが正しさの担保です。

サーバーによるファイル監視

ファイルシステムウォッチャーが未承認の書き込みを検知・遮断します。

classifyWrite(rawPath: string, hintedAgentId?: string): WriteClassification

不正な書き込み発生時は変更適用にスナップショットを保存します。

違反エージェントには巻き戻しを指示し、正当な保持者には通知を送ります。

正確なコミット帰属

Git コミットは変更を行った特定エージェントへ自動的に帰属付けられます。

製品アーキテクチャの詳細は 同一リポジトリでの複数AIエージェント実行、リモートターミナル制御は 自分がホストしていないターミナルを見守る技術 をご覧ください。

率直な答え

複数の AI エージェントが同じリポジトリで同時に作業できますか?

はい。書き込み調停機能により、事前にパスを予約して競合を防止します。

なぜエージェントごとに個別 worktree を使わないのですか?

他者が作成した最新コードが見えなくなり、型定義の重複やマージ衝突が発生するためです。

予約ルールはプロンプトの指示ですか、サーバー強制ですか?

サーバーがファイルシステムレベルで強制的に制御します。