quilt について
Quiltは、AIコーディングエージェントを同じGit作業ツリーで動かすためのコマンドラインツールです。行単位で編集者を記録し、各エージェント自身の変更だけをコミット用に再構成します。
主な機能
- 01行単位の編集者追跡
- 02自分の行だけをコミット
- 03シンボルまたはファイルの占有
- 04競合する書き込みの拒否と上書き内容の保全
- 05エージェント、占有、ブロック状況の表示
活用シーン
- 01複数エージェントで1つのリポジトリを共有
- 02他エージェントの編集がコミットに混ざるのを防止
- 03同じ関数への並行変更を調整
MCP 対応
Quiltは任意でMCPサーバーを提供し、他のランタイムに編集記録と衝突防止のツールを公開します。MCP接続にはエージェントIDが自動で割り当てられます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Quilt
Quilt は、共有 Git チェックアウト内でどのエージェントがどの行を書いたかを追跡するコマンドラインツールです。複数の AI コーディングエージェントが同じリポジトリで同時に作業し、それぞれが自分の変更だけをコミットできるようにします。
ツールの境界で編集をすべて記録し、誰が何を書いたかを行ごとに保持して、コミット時に各エージェント自身の変更を再構成します。信頼できる情報源は Git のままです。Quilt は LLM を呼び出したり、エージェントを起動したりしません。また、その状態は .quilt/ サイドカーに保存されるため、リポジトリに触れることなく削除できます。

npm install -g @quilt-dev/cli
quilt setup # capture hooks wired; claim enforcement via Claude hooks or MCP
課題
エージェントには 1 つのチェックアウトで作業させたいものです。エージェントごとに別々のインストールや差異が生じるワークツリーを用意するのではなく、node_modules、ビルド、開発サーバー、環境を 1 つにまとめて使い続けたいものです。しかし共有チェックアウトでは、エージェントがまったく異なる作業をしていても、通常の git では問題が起きます。最初の git commit -am が、ほかの全員の未コミットファイルを 1 つにまとめて取り込み、コード生成やロックファイルの変更は最後にコミットした人のものとして記録されます。また、まれに 2 つのエージェントが同じ行に変更を加え、一方がもう一方を気づかれないまま上書きすることもあります。エージェントが同じタスクに取り組んでいる必要はありません。共有チェックアウトでは、デフォルトでこうしたことが起こります。
Quilt は共有チェックアウトを安全にします。各エージェントは自分の行だけを正確にコミットし、それ以外は含めません。別々の作業は、特別な手続きなしに履歴まで別々のまま保たれます。また、2 つのエージェントが本当に同じコードを必要としている場合は、気づかれない消失ではなく、連携した引き継ぎになります。エージェントを増やしても、この仕組みは機能します。
./examples/fleet.sh は、1 つのチェックアウトで 7 つのエージェントを実行します。2 つの結果は次のとおりです。
WITHOUT quilt 1 commit for 7 agents — six got "nothing to commit", their
work swept into the first agent's blob. a7 silently
overwrote a1's change to getUser. a1's work is gone.
WITH quilt 6 clean commits, one per agent, each exactly its own lines.
a7's write into a1's claimed function was denied before any
bytes changed, with a1's stated intent in the denial.
2 つのエージェントが同じファイルを必要とする場合
ファイルを分けて作業するのは簡単です。本当の試練は競合です。要求が拒否されても行き止まりではありません。拒否には、保持者が申告した意図と、リースの期限が切れる時刻が含まれます。
$ QUILT_ACTOR=builder-flows quilt claim deals.js flows.js --intent "wire flows to deals"
✗ denied deals.js (held by builder-friction)
builder-friction is: friction pass: rename + archive flags
their claim lapses 2026-07-04T22:12:05Z unless renewed
✓ claimed flows.js
ブロックされたエージェントは、許可されたファイルの作業を進めながら待ち、保持者のコミットによって自動解放された後に再度要求し、取り込まれた変更の上に自分の変更を重ねます。クリーンなコミットが 2 つ作られ、ファイルには両方の変更が残り、何も失われません。./examples/contention.sh は、実際の仕組みで一連の処理全体を実行します。
できること
- 共有チェックアウトを 1 つに。 人間、エージェント、ボットを 1 つの作業ツリーを編集するアクターとして扱い、エージェントごとにワークツリーを用意する必要はありません。
- 行単位の帰属。
commit --mineは、別のアクターの変更と同じハンクに含まれている場合でも、自分の行だけをコミットします。 - シンボル単位の要求。 ファイル全体ではなく
utils.js#formatPriceを予約できるため、異なる関数を編集するエージェント同士は競合しません。tree-sitter による 10 言語に対応し、それ以外はファイル全体を要求します。 - 衝突を防止。 別のエージェントが要求しているコードへの書き込みは、バイトが変更される前に、保持者が申告した意図とともに拒否されます。
- 依存関係の変更を通知。 別のアクターが変更中の関数に依存するシンボルを要求すると、Quilt は要求時に警告します。
- 検出して保護。 あるアクターが別のアクターの未コミット行を上書きした場合、Quilt は上書きされた側のバージョンをスナップショットし、気づかれない消失を防ぎます。
Quilt が作成するコミットはすべて通常の Git コミットです。Git を信頼し、書き換えることはありません。また、状態はすべてローカルの .quilt/ 配下に保存されます。アカウントもデーモンも不要です。
クイックスタート
quilt setup # wire Quilt into the repo (capture hooks + optional MCP tools)
quilt doctor # confirm it's wired and capture is flowing
これだけです。エージェントには自動で名前が付けられます。Claude Code の各セッションまたは MCP 接続に固有の ID が割り当てられるため、並行して動作するエージェントを設定なしで区別できます。
4 つのターミナル、1 つのリポジトリ
Git リポジトリから、4 つのエージェントが同時に作業するまでの流れです。
cd your-repo
quilt setup # once, ~5 seconds
claude # terminal 1
claude # terminal 2
claude # terminal 3
claude # terminal 4
複数のリポジトリがあるディレクトリからセッションを開始しますか? その場合は、代わりにそこで quilt setup を実行してください。ワークスペースのルートとその中のすべてのリポジトリが設定され、各編集内容はファイルが属するリポジトリに記録されます。
それ以外は何も必要ありません。QUILT_ACTOR も、ターミナルごとの特別な操作も、承認も不要です。記録用のフックがすべての編集内容を各セッションに自動で割り当てます。quilt fleet でリアルタイムに確認できます。セッションの作業が完了したら、quilt commit --mine -m "..." を実行するよう指示してください。2 つのセッションが同じファイルを編集した場合でも、各コミットにはそのセッションの行だけが含まれます。(Claude Code では、プロジェクト用のオプションの quilt MCP サーバーを有効にするよう案内されます。承認すると claim/prevention ツールが追加されますが、承認しなくてもフックによる保護は有効です。)
エージェントの稼働状況を確認する
quilt ui を実行すると、ブラウザーで同じ状況をリアルタイムに確認できます。誰が何を書いたか(ファイルごとのアクター別行数)、有効な claim、誰が誰の作業を妨げているか、人の対応が必要な項目を確認できます。ローカル限定(127.0.0.1)、読み取り専用で、コマンドは 1 つです。

ターミナルで確認したい場合は、quilt fleet --watch で同じ内容をテキスト表示できます。
セッションをまたいで安定した ID を使いたい場合は、明示的に設定します。
QUILT_ACTOR=auth-agent claude # this agent's edits are attributed to auth-agent
すると、各エージェントは自分の行だけをコミットします。
quilt status # who owns what
quilt preview --mine # exact patch that would be committed
quilt commit --mine -m "fix auth redirect"
quilt provenance HEAD # actor, session, files, hunks, tree
Quilt はこの来歴情報を Git コミット自体に書き込むため、通常のプッシュや新しいクローンでも保持されます。プロンプトとの関連付けは quilt ui でローカルに表示され、Git の履歴には公開されません。
共有シェルでは、コミッターを明示してください(quilt --as auth-agent commit --mine ...)。作業ツリーの変更に別のアクターが表示されている場合、Quilt はチェックアウト全体に適用されるセッション ID を拒否します。デプロイプロバイダーが認識済みの Git メールアドレスを必要とする場合は、アクター名を区別したまま、次のように一度設定します。
quilt config author.email [email protected]
quilt fleet では、すべてのアクター、その claim、人の対応が必要な項目をまとめて確認できます。コマンドの一覧はdocs/reference.mdをご覧ください。
なぜ worktree を使わないのですか?
エージェントごとに worktree を使うのが一般的な方法で、タスクが完全に独立している場合は有効です。しかし、worktree を増やすたびに、別の環境を構築する必要があります(別途インストール、別のビルドキャッシュ、別の開発サーバー)。また、分離しても衝突のタイミングがマージ時に移るだけです。エージェントの数が増えるほど、こうしたコストも増大します。共有チェックアウトの利点は、環境の構築を一度で済ませられることです。
| エージェントの数を減らす | エージェントごとに worktree を作成 | Quilt | |
|---|---|---|---|
| 並列性 | 低く制限される | 高い | 高い |
| エージェントごとのセットアップ | なし | インストール/ビルド/環境構築一式 × N | なし(チェックアウト 1 つ) |
| 互いの作業中の変更を確認 | 該当なし | できない | できる |
| 衝突 | 手作業で回避 | マージ時に顕在化 | 防止、またはリアルタイムに顕在化 |
| エージェントごとに分離されたクリーンなコミット | 該当なし | マージ後に可能 | できる |
worktree は分離しますが、連携はしません。エージェントが同時に同じコードを作業する場合は、通常、互いの作業を確認し、進行に合わせて考慮できるようにする必要があります。それを実現するのが Quilt です。両者は併用できます。独立した長期作業には worktree を、同じコードを同時に作業するエージェントには Quilt を使ってください。
エージェントでの使用
quilt setup はキャプチャフックと共有 MCP サーバーを設定します。Claude Code では、フックによりエージェントは組み込みの Edit ツールと Write ツールを通常どおり使用でき、Quilt は各変更の作成者を記録し、別のエージェントが保持しているコードへの書き込みをブロックします。エージェントが従うべきプロトコルも設定も不要です。各セッションには自動的に名前が付けられるか、安定した ID 用の独自の QUILT_ACTOR が設定されます。その他のランタイムでは、同じキャプチャと防止の機能を MCP ツールとして利用でき、各接続には同様に自動で名前が付けられます。
Codex、Cursor、Aider、ならびにエージェントごとにプロセスを分ける構成と、1 つのプロセスで複数のエージェントを実行する構成の違いについては、docs/orchestrators.md を参照してください。
ドキュメント
- docs/orchestrators.md:複数のエージェントを実行する方法。
- docs/reference.md:コマンド一覧、変更の作成者を特定する仕組み、
.quilt/の状態の構成。 - bench/:Quilt のテストに使用するシナリオの段階的な一覧。同じ指標で Quilt を使用した場合と使用しない場合を実行します。
テレメトリ
1 日に 1 回、匿名のハートビートを送信します。内容は Quilt のバージョン、OS、Node のメジャーバージョン、ランダムなローカル ID です。quilt setup でオプトインしない限り、それ以外の情報は送信されません。また、コード、パス、リポジトリ名、エージェント名は送信されません。quilt telemetry off、QUILT_TELEMETRY=0、または DO_NOT_TRACK=1 ですべての送信を停止できます。詳細:docs/reference.md。
貢献
貢献を歓迎します。CONTRIBUTING.md を参照してください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。