feder-cr/git-ai
Git designed for AI agents.
gitai – AI エージェント向けに構築された Git スタイルのバージョン管理
それは何か
- Anthropic の Scion 論文で説明されている設計に従う、オープンソースのサーバー中心型 VCS。使い慣れた Git データモデルを維持しつつ、ほとんどの操作(履歴クエリ、マージ、競合解決など)を、数千の短命なコーディングエージェントにスケールできるステートレスサーバーに移行します。
- サーバーはコミットをリレーショナル DB(SQLite または PostgreSQL)に保存し、オブジェクトパックを任意のオブジェクトストレージバックエンド(ローカルファイル、S3、GCS、Azure)に保存します。クライアントは gRPC を介してサーバーと通信します。
- このプロジェクトは Scion のアイデアのクリーンルーム再実装であり、MIT ライセンスです。GitLab の Gitaly RPC サーバーのフォークであるため、すべての標準 Git 配管 RPC が引き続き機能します。
主要な概念と機能
| 機能 | AI エージェントへの利点 |
|---|---|
常時オンラインクライアント(graft clone、graft sparse) |
エージェントはリポジトリ全体をクローンする代わりに必要なオブジェクトのみを取得し、帯域幅と遅延を節約します。 |
| サーバーサイド履歴 API | ブローム、パス履歴、祖先、コード検索はサーバー上でコミットごとに一度計算されメモ化され、コストのかかるクライアントサイドのウォークを排除します。 |
マージキューなしのランディング(UserLand) |
変更は先端にリベースされ、比較と交換を介してランディングされます。同時ランディングは単一の参照更新にバッチ処理されるため、多くのエージェントが同時にランディングできます。 |
| プラグ可能な競合解決 | ランディングが競合した場合、サーバーはバージョン中立のプロトコルを介して任意の LLM プロバイダー(または決定論的ツール)を呼び出し、自動解決できます。 |
| チェンジセットログ | すべての参照更新は操作タイプとアクターとともに記録され、エージェントにリポジトリアクティビティの線形で監視可能なストリームを提供します。 |
| ステートレスでスケーラブルなストレージ | SQLite/PostgreSQL の先行書き込みログ + オブジェクトストレージのコンテンツアドレスパック。任意のサーバーノードがリポジトリキャッシュを再構築でき、水平スケーリングを可能にします。 |
ランディング後の検証(graft-verify) |
新しい先端でテストを実行し、失敗を二分し、問題のある変更を自動的にロールバックします。 |
| エージェント中心のセキュリティ | エージェントごとのトークン、RPC 許可リスト、ブランチポリシーが各エージェントの読み書きを制御します。 |
キャッシュ層(graft-cache) |
デーモンとリージョナルキャッシュは不変オブジェクトを保存し、読み取り時に検証してストレージバックエンドの負荷を軽減します。 |
| レビューと承認ルール | セマンティックルールにより、単純なコメントのみの変更はロジック変更よりも少ない承認で済み、自動レビューが軽量になります。 |
典型的なユースケース
- 大規模コード生成パイプライン。数百の LLM 駆動エージェントが小さなパッチを継続的に生成します。
- AI 生成コードの継続的インテグレーション。迅速なランディング、自動テスト、高速ロールバックが必要です。
- マルチエージェント開発環境(例:スウォームコーディング、ペアプログラミングボット)。マージキューのボトルネックなしで単一ブランチを共有します。
- エンタープライズ設定。すでに GitLab/Gitaly を使用しており、既存のツールを放棄せずに AI エージェントフレンドリーなレイヤーを追加したい場合。
現在のステータス
- バージョン 0.1.0(最初の公開リリース)。リストされたすべての Scion のアイデアが実装され、ユニット、エンドツーエンド、マルチノード、クラッシュ、ファズテストでカバーされています。
- インターフェースはまだ 1.0 未満であり、変更される可能性があります。オブジェクトパックのガベージコレクションなどの既知のギャップは文書化されています。
はじめに
# クローンしてビルド(Go 1.26、C ツールチェーン、Meson、Ninja が必要)
git clone https://github.com/feder-cr/git-ai.git
cd git-ai
make build # サーバー、CLI、ツールを _build/bin にビルド
# クイックスタートデモを実行(サーバー、キャッシュデーモン、2 つのエージェント、ランディングを起動)
examples/graft/quickstart.sh
# CLI を使用
./_build/bin/graft --help
- 本番サーバーを実行するには、
examples/graft/config.tomlを編集(または独自のものを提供)し、_build/bin/gitaly serve config.tomlで起動します。 [graft.storage]セクションを追加してサーバーをデータベースとオブジェクトストレージバックエンドにポイントし、シャドウ モードで既存の Git リポジトリをインポートしてから オーソリティ モードに切り替えます。
ドキュメントと詳細な読み物
- クイックスタートと設定リファレンス:
doc/graft/QUICKSTART.md、doc/graft/CONFIGURATION.md - アーキテクチャとストレージ設計:
ARCHITECTURE.md、STORAGE.md - ランディング、競合解決、派生データ、レビュー、検索、検証、モニタリング(「スーパーファン」)、セキュリティ、ベンチマーク、ファジング、ロードマップに関する詳細なドキュメントはすべて
doc/graft/フォルダにあります。
コミュニティ
- 貢献を受け付けています:問題を報告し、設計議論を開始し、テストと簡単な根拠を添えて PR を提出してください。
- プロジェクトは設計文書(
PLAN*.md)のコミュニティ駆動の進化を奨励しています。
ライセンス
- MIT ライセンス(
LICENSEを参照)。
gitai は、AI 駆動の開発チームに Git が人間に提供するのと同じ信頼性とパフォーマンス保証を提供し、大規模なエージェントコーディングを非現実的にする人間中心のボトルネックを排除することを目指しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト