CodeRabbitの有料PRレビューをGitHub Actions + Gemmaで無料代替する
(github.com/bssm-oss)GemmaCIというオープンソースプロジェクトを作りました。
一言で説明すると、CodeRabbitのようなAI PRレビュアーをGitHub Actions内で無料で動かそうというプロジェクトです。
CodeRabbitは優れたツールですが、private repoで本格的にPR reviewを使うには有料プランが必要です。公式ドキュメントによると、FreeプランはPR summarizationが中心で、PR reviewはPro以上で提供されます。Proは年払いで $24/mo/user、月払いで $30/mo/user です。
そこで、「小さなチーム、学生プロジェクト、個人のサイドプロジェクトでCodeRabbitの中核体験を無料で代替できないだろうか?」という発想で作りました。
GemmaCIはGitHub ActionsでOllama + Gemmaモデルを実行し、PR diffをレビューします。
現在利用できる機能は次のとおりです。
- PR summary comment の生成
- 変更された行への inline review comment の記述
- high / critical finding を発見した際にCI checkを失敗させる
- evidence、confidence、recommendation に基づくレビュー出力
- Ollama / model cache による cold start コスト削減
- workflowファイルを1つ追加するだけで利用可能
- PR diff、model output、artifact をすべて untrusted data とみなすセキュリティモデル
重視したのは「無料」と「セキュリティ」です。
単にLLMにdiffを投げてコメントを書かせるのではなく、model output を schema 検証し、実際に changed line に根拠のある finding だけを投稿します。
また、デフォルトでは pull_request_target を使いません。PR作成者が変更した workflow や script が write 権限で実行されるリスクを避けるためです。publish 段階でも trusted base branch code だけを実行し、artifact と model output は再度検証します。
実際にGitHub Actions runnerでsmoke PRを開いて検証しました。
検証済みの項目:
- GitHub-hosted runner での workflow 実行
- Ollama のインストールと Gemma モデルによる review job の実行
- PR summary comment の投稿
- 変更行への inline comment の投稿
- high severity finding 検出時の check failure
テストPRでは意図的に unsafeDivide 関数を入れ、GemmaCIが「ゼロ除算の検証漏れ」を high severity finding として検出し、inline comment を残しました。
まだCodeRabbitを1:1で完全に代替するレベルではありません。大規模モデルを使うSaaSレビュアー並みの品質や統合機能を期待すべきではありません。
その代わり、目標は明確です。
「お金を払うには微妙な小さなrepoでも、workflowファイル1つで無料のAI PRレビューを導入できるようにしよう。」
GitHub:
https://github.com/bssm-oss/gemmaci
フィードバック、issue、PR歓迎です。
まだコメントはありません。