このプロジェクトについて
Simgitは、主に単一リポジトリ上で複数のAIエージェントや並行開発を行うシナリオ向けに、ディスク効率と分離性を高めたGitワークツリーを作成・管理するためのコマンドラインツールである。これはコピーオンライト(CoW)機構を利用して実現され、複数のワークツリー間で変更されていないファイルが複製されるのではなく、物理ディスク領域を共有するようにする。
このツールはさまざまなオペレーティングシステムとファイルシステムをサポートする。
macOS(APFS): 依存関係ゼロでネイティブの`clonefile`を活用する。
Linux(btrfs、xfs): 依存関係ゼロでネイティブのreflink機能を使用する。
Linux(ext4など): rootやカーネルモジュールを必要とせず、CoW機能のために`fuse-overlayfs`にフォールバックする。
Windows: 直接サポートされないが、サポート対象のLinuxファイルシステムを使用してWSL上で利用できる。
Simgitはデーモンやサーバーなしで動作し、参照にはGitを、データ管理にはファイルシステムを利用する。各ワークツリーは標準のGitリンクチェックアウトとして機能し、ブランチ、インデックス、作業ツリーに完全な分離を提供する。これによりエージェントは各自のブランチで並行して作業し、通常のGitマージを通じて変更を統合できる。
主な利点は、追加の各ワークツリーの限界コストが、完全な`git worktree`コピーよりも大幅に低いことである。測定では、コストはコンテンサイズではなく、追跡パスの数に応じて増加する(APFSでは追跡パスあたり約0.4 KiBに加えて約60 KiBの固定オーバーヘッド)。このため、大きなファイルを含むリポジトリで特に効率的である。
Simgitはワークツリーの追加、一覧表示、削除、ガベージコレクションのためのコマンドを提供する。`sg run`コマンドは、これらの分離されたワークツリー内でエージェントを起動しやすくし、通常のチェックアウトであるかのようにリポジトリと対話できるようにする。特定のサブツリーに焦点を当てたエージェントのために、ディスク使用量をさらに削減するスパースチェックアウトをサポートする。ワークツリーは、自動ガベージコレクション用にエフェメラルとして、または長期使用向けに永続的としてマークできる。このツールはプログラムによるオーケストレーション用のJSON出力も提供する。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.