cirolini/genai-code-review

GitHub Action that reviews pull request diffs with an LLM and posts the comments on the PR

何を解決するか

このプロジェクトは、大規模言語モデル(LLM)を使用してプルリクエストの差分を自動的にレビューし、インラインコメントを投稿するGitHub Actionを提供します。特に、『レビュー疲労』の問題に対処するためにコメント予算を実装しており、低価値のコメントの大量投稿ではなく、最も重要な発見のみをレビュアーに強調表示することで、レビュアーを過剰に負担させないよう設計されています。

動作方法

  1. フィルタリング: LLMにデータを送信する前に、ignore_pathsに一致するファイル(ロックファイルや生成コードなど)を削除します。
  2. インクリメンタルレビュー: 以降のプッシュでは、前回のレビュー以降に追加されたコミットのみを分析します。
  3. チャンク化: 差分をモデルのコンテキストウィンドウに収まるようにチャンクに分割します。収まらないコンテンツは要約に報告されます。
  4. スキーマベースの分析: モデルはJSONスキーマ(重大度、信頼度、根拠など)に基づいて発見を生成します。出力が検証に失敗した場合、1回の修復試行が行われます。
  5. 検証: 発見が差分と一致するか確認し、GitHub上に正しく配置できるかを検証します。無効な配置は要約に移動されます。
  6. 投稿: max_comments(重大度と信頼度で順位付け)の上位の発見がグループ化されたレビューとして投稿され、スタティックな要約コメントが更新されます。

対象ユーザー

GitHubを使用し、焦点を絞った高品質なAI支援コードレビューを希望する開発者やチーム。OpenAI、Anthropic、Google Gemini、またはOllamaやvLLMなどの自己ホスト型OpenAI互換サーバーを活用している方々に最適です。

特徴

  • コメント予算: コメント数を制限し、要約に抑制された発見を明示することで、レビュアーの疲労を防ぎます。
  • 広範なプロバイダ対応: Gemini、OpenAI、Anthropic、および任意のOpenAI互換APIに対応しています。
  • セキュリティ最優先設計: プロンプトインジェクションを防ぐために、センチネルを使用して差分を信頼できないデータとして扱い、フォークPRでは pull_request_target を使用しません。
  • ゼロディスクフットプリント: actions/checkout を必要とせず、API経由でプルリクエストを読み込みます。
  • 透明性のあるレポート: 要約コメントで、レビューされなかった内容(例:切り詰められた差分や無視されたファイル)を明示的に記載しています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト