kunchenguid/treehouse
Manage worktrees without managing worktrees.
何を解決するか
Treehouseは、再利用可能で隔離されたgit worktreeのプールを管理し、同じリポジトリの複数のクローンを手動で使い分けたり、AIエージェントのセッションごとに新しいworktreeを作成したりする必要性を排除します。これにより、エージェント同士の衝突を防ぎ、依存関係やビルドキャッシュがセッションを越えて保持されるため、エージェントの実行速度が向上します。
仕組み
Treehouseは、設定されたルートディレクトリ(デフォルトは ~/.treehouse/)に保存されたworktreeのプールを維持します。ユーザーまたはエージェントがworktreeをリクエストすると、Treehouseはプール内をスキャンして、アイドル状態でクリーンかつ再利用可能なものを探します。見つかった場合は、worktreeを最新のデフォルトブランチにリセットします。見つからない場合は、detached HEADモードで新しいものを作成します。
主要なメカニズムには以下が含まれます:
- Subshell Access: ユーザーはworktree内のサブシェルに投入されます。シェルを終了すると、worktreeはプールに戻ります。
- Durable Leases: Worktreeは、長時間実行されるプロセスなしで永続的に使用するためにリースできます。再利用するには明示的な返却コマンドが必要です。
- In-use Detection: このツールは、実行中のプロセスと予約状況をスキャンして、worktreeがアクティブな間に提供されないようにします。
- Safety Checks: Worktreeのプルニング(整理)と削除は、デフォルトでドライランとして実行され、特定のオーバーライドフラグが使用されない限り、クリーンでデフォルトブランチにマージ済みのworktreeのみを削除します。
対象ユーザー
クローンによるオーバーヘッドやビルドキャッシュの損失なしに、同じプロジェクトに対して複数の隔離された環境を必要とする開発者およびAIエージェントのオペレーター。
ハイライト
- Instant Isolation: 手動設定なしで、すぐにクリーンなworktreeに入ることができます。
- Reusable Environments: 依存関係とビルドキャッシュを保持し、冗長なインストールを回避します。
- Conflict-Free: 使用中のworktreeを自動的に検出することで、エージェント同士の衝突を防ぎます。
- Safe Management: 強固なプルニング、孤立したworktreeの削除、および損傷したプール状態ファイルのステートリカバリ。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト