用語集

ワークツリー分離とは?

TL;DR

ワークツリー分離とは、AIエージェントごとに、専用のブランチと専用のフォルダにあるコードのコピーを渡すことです。エージェントは同じファイルを同時に編集しても、互いに上書きしません。メインのチェックアウトは、マージするまで手つかずのままです。Paneは、すべてのpaneでこれを自動的に用意します。

ワークツリー分離とは、AIエージェントごとに、専用のブランチと専用のフォルダにあるコードのコピーで作業させることです。複数のエージェントが同じファイルを同時に変更しても、互いに上書きしません。メインのチェックアウトは、マージするまで手つかずのままです。

問題

1つのフォルダを共有するエージェントは、いずれ互いに上書きします。

エージェントAにログインページの書き直しを、エージェントBに登録フローの追加を頼みます。どちらもauth.tsを変更する必要があります。1つの共有フォルダで作業すると、エージェントBが自分の版を保存し、エージェントAの編集を黙って置き換えます。どちらのエージェントも気づかず、あなたが知るのは後になってからです。

だから、1つのディレクトリで複数のエージェントを動かすのは賭けです。2つのエージェントが同じファイルに触れるまではうまくいきますが、触れた瞬間に誰かの作業が失われます。

解決方法

エージェントごとに1つのワークツリー。ファイルとブランチは別々、履歴は共通です。

各エージェントに専用のGitワークツリーを渡します。同じ履歴を共有する、別のブランチを持つ別のフォルダです。エージェントAは一方で、エージェントBはもう一方で作業します。別々のコピーを編集しているので、どちらもauth.tsを編集できます。

my-project/                 ← main branch, untouched
my-project/worktrees/
  ├─ login-rewrite/         ← agent A, branch login-rewrite
  └─ signup-flow/           ← agent B, branch signup-flow

分離されるもの

ファイル、ブランチ、シェルは別々です。履歴、リモート、Gitオブジェクトは共有されます。

分離共有
ファイルとcommit前の変更Git履歴とcommit
ブランチリモート(origin)
シェルの状態と環境変数Git設定
作業ディレクトリオブジェクトストア(ディスク容量を節約)

Paneでの仕組み

Paneは、すべてのpaneでワークツリーの用意と片付けを自動で行います。

paneを作ると、Paneは事前に用意しておいたワークツリーを渡し、新しいブランチを作り、.envファイル、エージェントの設定、node_modulesをコピーして、そこでエージェントを起動します。paneをアーカイブすると、Paneは保存されていない作業がないか確認してから、ワークツリーを削除します。自分でgit worktree addを打つ必要はありません。

分離で守られないもの

ワークツリーはエージェントのファイルを分けます。エージェントにできることを制限するサンドボックスではありません。

ワークツリーはフォルダであって、サンドボックスではありません。エージェントは今もあなたのユーザー権限で動きます。そのため、パスを指定して別のワークツリーのファイルを読んだり、ネットワークにアクセスしたり、リポジトリの外を変更したりできます。実際には、エージェントは自分の作業フォルダの中にとどまります。それでも厳密な制限が必要なら、コンテナかVMで動かしてください。

Gitの外で共有されるものもあります。アプリが使うデータベース、開発サーバーのポート、グローバルなパッケージキャッシュなどです。Paneは各paneにPANE_PORTで専用のポート範囲を割り当てます。データベースについては、セットアップスクリプトか、ワークツリーごとにデータベースを作るツールを使ってください。

出典

訂正
間違っている点や古くなっている点があれば、教えてください。修正して、ページ上部の日付を更新します。 GitHubでissueを作成
出典

よくある質問

または
ダウンロード*
Windows SmartScreen の警告Pane は未署名のため、直接ダウンロードすると SmartScreen の警告が出ることがあります。 Pane は完全にオープンソースです。コードを確認したり、自分でビルドしたりできます。1. 「詳細情報」をクリック2. 「実行」をクリック3. インストールを続けるPowerShell からなら公式リリースを直接ダウンロードできます。ブラウザ経由で起きやすい問題もほぼ避けられます。npm グローバルインストール
PowerShell に貼り付けてください。Linux

著者 Parsa Khazaeepoul、Paneの共同創業者。 .