8.0 KiB
8.0 KiB
git-air 🍃
Go言語で書かれた、空気のように軽快で高速なGitネイティブAIコードレビューツール。
🌟 なぜ git-air を開発したのか?
課題:AIが書いたコードは気持ちいいが、レビューは悪夢
現代の開発では、AI(Cursor、Copilot、各種LLMプラグイン)を活用することが当たり前になりました。数秒で数十行・数百行のコードが生成されるため、開発スピードは劇的に向上します。
しかし、そこには見過ごせない重大な課題が存在します:
- 「見た目が完璧すぎる」という錯覚:インデントやコメント、命名が綺麗なため、バグがないと盲信しやすい;
- 生成AI自身の「自己肯定バイアス」:同じチャット内で生成AIに「このコードにバグはある?」と聞いても、「問題なく堅牢に動作します!」と返ってくることが多い;
- 人間の目で見落としやすい潜在的な罠:
if err != nilの早期リターン時にロック解除(Mutex Leak)を忘れたり、Goroutine 内でrecoverがなかったり、ループ内でコネクションが解放されなかったりするバグは、目視では非常に見落としやすい。
その結果、**「AIがコードを大量生産し、深夜に人間が本番障害の対応に追われる」**という本末転倒な状況が生まれます。
解決策:レビューをローカルターミナル(Pre-Commit)に完全前置
GitHubなどのCI/CD上で動作するボットも優秀ですが、git-air はコードを git commit する前に、ローカル端末上で動作する完全に独立した「第三者監査役」として設計されています。
チャット履歴のコンテキストを一切排除し、まるであなたの隣に座る口は悪いが目の鋭いシニアアーキテクトのように、純粋な差分(git diff)だけを厳しくチェックします:
- ⚡ Gitネイティブな極上の操作性:いつもの作業フローを崩さず、ターミナルで
git airと叩くだけで即座に起動。 - 🧠 主要モデルを完全網羅:Google Gemini、Anthropic Claude、xAI Grok、DeepSeek、ローカルOllama、OpenAI などを設定なしで即座に切り替え可能。
- 🛡️ スマートなノイズ除去:
go.sumやpackage-lock.json、自動生成された*.pb.goを自動除外。Token消費を抑え、思考ループを防ぎます。 - 🎯 厳格なシニアエンジニア基準:お世辞や無駄口は一切なし。並行処理の競合、デッドロック、SQLインジェクション、NULLポインタ、リソースリークを指摘し、具体的な修正コードを直接提示します。
- 📋 チーム規約の読み込み(
.airules):リポジトリ直下に.airulesを配置するだけで、チーム固有のアーキテクチャ規約を最優先で適用。 - 🪝 ワンクリックで Pre-commit フック化:コマンド1発でGitフックとして登録。危険なコードのコミットを未然にブロックします。
📦 インストール
方法 1: Go Install(推奨)
go install github.com/unclesam-ly/git-air@latest
方法 2: ソースコードからビルド
git clone https://github.com/unclesam-ly/git-air.git
cd git-air
go build -o git-air .
sudo mv git-air /usr/local/bin/
🚀 クイックスタート
1. モデルと API Key の設定
git-air は国内外の主要LLMのエンドポイントと推奨モデルを標準プリセットしています。--provider を指定するだけで簡単に切り替えられます:
# 1. Google Gemini (推奨: 高速・低コスト)
git air config set --provider gemini --key "YOUR_KEY"
# 2. Anthropic Claude (Claude-3.7 / 3.5 Sonnet)
git air config set --provider claude --key "YOUR_KEY" --model anthropic/claude-3.7-sonnet
# 3. xAI Grok (Grok-2 / Grok-3)
git air config set --provider grok --key "YOUR_KEY" --model grok-2-latest
# 4. DeepSeek (高度な推論・思考モデル)
git air config set --provider deepseek --key "YOUR_KEY" --model deepseek-chat
# 5. SiliconFlow (DeepSeek-V3 高速ホスティング)
git air config set --provider siliconflow --key "YOUR_KEY" --model deepseek-ai/DeepSeek-V3
# 6. 通義千問 (Qwen / Alibaba Cloud)
git air config set --provider qwen --key "YOUR_KEY" --model qwen-plus
# 7. 智譜 AI (GLM-4)
git air config set --provider zhipu --key "YOUR_KEY" --model glm-4-plus
# 8. Moonshot AI (Kimi)
git air config set --provider moonshot --key "YOUR_KEY"
# 9. Groq (超高速推論)
git air config set --provider groq --key "YOUR_KEY" --model llama-3.3-70b-versatile
# 10. OpenRouter (マルチモデル統合ゲートウェイ)
git air config set --provider openrouter --key "YOUR_KEY"
# 11. ローカル完全オフライン・プライバシー重視 (Ollama)
git air config set --provider ollama --model qwen2.5-coder
# 12. OpenAI 公式 (GPT-4o / o3-mini)
git air config set --provider openai --key "YOUR_KEY" --model gpt-4o-mini
現在の設定を確認:
git air config get
2. よく使うレビューコマンド
# 現在ステージングされた(git add済み)変更をレビュー(デフォルト)
git air
# 直前のコミット内容をレビュー
git air HEAD~1
# ブランチ間の差分をレビュー
git air main..feature-agent
# 特定のファイルのみをレビュー
git air internal/service/chat.go
# 一時的にモデルやProviderを指定して実行
git air --provider deepseek --model deepseek-chat
3. ワンタッチで Pre-commit フックを登録
Git リポジトリ直下で以下を実行:
git air hook install
以降、git commit を実行するたびにターミナル上で自動レビューが走り、重大な欠陥があればコミット前に警告を出してくれます!
フックを解除する場合:
git air hook uninstall
⚙️ 設定の優先順位
- コマンドライン引数 (
--key,--model,--provider,--prompt) - 環境変数 (
GIT_AIR_API_KEY,GIT_AIR_PROVIDER,GIT_AIR_MODEL) - プロジェクト個別設定 (リポジトリ直下の
./config.yamlまたは./.git-air.yaml) - グローバル設定 (
~/.git-air/config.yaml)
📋 チーム規約のカスタマイズ(.airules)
リポジトリのルートディレクトリに .airules ファイルを作成すると、AI はそのルールを最優先事項として適用します:
# チーム共通開発ルール
1. すべての SQL 処理は DAO 層に集約し、文字列結合による生 SQL は禁止とする;
2. 並行処理で共有変数を扱う場合は、sync.RWMutex または sync/atomic を使用すること;
3. オープンしたリソース(DB rows、HTTP レスポンス、ファイル)は defer Close() で確実に解放すること;
4. error をアンダースコア(_ = err)で無条件に無視することを禁止する。
📄 ライセンス
本プロジェクトは MIT ライセンス のもとで公開されています。Issue や Pull Request も大歓迎です!
