Last translated: 26 Jun 2025

Translation Not Available Yet

This repository's README hasn't been translated yet. Once translated, it will be easier to read and understand in your native language (中文).

After translating, add the links to README so others can view it directly.

Deutsch | English | Español | français | 日本語 | 한국어 | Português | Русский | 中文

AI コードレビューアシスタント

LLMベースの自動コードレビュー支援ツール。GitHub/GitLab Webhookを使用してPR/MRの変更を監視し、AIによるコード分析結果をPR/MRに自動コメントします。複数の通知チャネルをサポートしています。

デモ動画をBilibiliで視聴

GitHubの制限により、動画プレーヤーの直接埋め込みはできません。

主な機能

  • マルチプラットフォーム対応: GitHubとGitLab Webhookを統合し、Pull Request/Merge Requestイベントを監視
  • インテリジェントレビューモード:
    • 詳細レビュー (/github_webhook, /gitlab_webhook): AIが各変更ファイルを詳細に分析し、具体的な問題点を指摘。レビューコメントは構造化された形式(特定のコード行への参照、問題分類、重要度、分析と提案)でPR/MRに投稿されます。AIモデルはJSON形式で分析結果を出力し、システムがそれを個別のコメントに変換します。
    • 汎用レビュー (/github_webhook_general, /gitlab_webhook_general): AIが各変更ファイルを全体的に分析し、ファイルごとにMarkdown形式の要約コメントを生成
  • 自動化プロセス:
    • AIレビューコメントを自動投稿(詳細モードでは複数、汎用モードではファイルごとに1つ)
    • 全ファイルのレビュー完了後、PR/MRに要約コメントを自動投稿
    • AIが報告すべき問題を発見しなかった場合も、友好的な通知と要約コメントを投稿
    • レビュータスクを非同期処理し、Webhookに迅速に対応
    • Redisを使用して同一Commitの重複レビューを防止
  • 柔軟な設定:
    • 環境変数による基本設定
    • Web管理パネル(/admin)とAPI(/config/*)を提供:
      • GitHub/GitLabリポジトリ/プロジェクトのWebhook SecretとAccess Token管理
      • LLMパラメータ(API Key, Base URL, Model)設定
      • 通知Webhook URL(企業WeChat、カスタムWebhook)設定
      • AIレビュー履歴の閲覧
    • Redisを使用した設定とレビュー結果の永続化保存
  • 通知と記録:
    • レビュー要約(PR/MRリンク、ブランチ情報、レビュー結果概要)を企業WeChatとカスタムWebhookに送信
    • Redisにレビュー結果を保存(デフォルト7日間有効)、管理パネルで閲覧可能、クローズ/マージ済みPR/MRの記録は自動クリーンアップ
  • デプロイ: DockerデプロイまたはPythonアプリケーション直接実行をサポート

🚀 クイックスタート

🐳 クイックデプロイ

# 使用官方镜像
docker run -d -p 8088:8088 \
  -e ADMIN_API_KEY="your-key" \
  -e OPENAI_API_BASE_URL="https://api.openai.com/v1" \
  -e OPENAI_API_KEY="your-key" \
  -e OPENAI_MODEL="gpt-4o" \
  -e REDIS_HOST="your-redis-host" \
  -e REDIS_PASSWORD="your-redis-pwd"
  --name ai-code-review-helper \
  dingyufei/ai-code-review-helper:latest

📌 必須環境変数:

  • ADMIN_API_KEY - 管理画面パスワード デフォルト値:change_this_unified_secret_key
  • OPENAI_API_KEY - AIサービスキー
  • REDIS_HOST - Redisアドレス

設定

1. 環境変数(主要なもの)

  • ADMIN_API_KEY: 必須。管理インターフェース保護用のシークレットキー。デフォルト値change_this_unified_secret_keyは必ず変更してください。
  • OPENAI_API_KEY: 必須。OpenAI APIキー。
  • OPENAI_MODEL: (デフォルト: gpt-4o) 使用するOpenAIモデル。
  • OPENAI_API_BASE_URL: (オプション) OpenAI APIベースURL。形式: http(s)://xxxx/v1 デフォルト: https://api.openai.com/v1
  • WECOM_BOT_WEBHOOK_URL: (オプション) 企業WeChatボットWebhook URL。
  • REDIS_HOST: 必須。Redisサーバーアドレス。未設定または接続不可の場合、サービスは起動しません。
  • REDIS_PORT: (デフォルト: 6379) Redisサーバーポート。
  • REDIS_PASSWORD: (オプション) Redisパスワード。
  • REDIS_DB: (デフォルト: 0) Redisデータベース番号。
  • REDIS_SSL_ENABLED: (デフォルト: true) Redis接続でSSLを有効化。falseで無効化。
  • (その他の変数SERVER_HOST, SERVER_PORT, GITHUB_API_URL, GITLAB_INSTANCE_URLなどは起動ログまたはソースコードを参照)

2. 管理パネルとAPI

  • 管理パネル (/admin): Webインターフェースで以下を管理:
    • GitHubリポジトリとGitLabプロジェクトのWebhook SecretおよびAccess Token設定
    • グローバルLLMパラメータ(OpenAI API Key, Base URL, Model)管理
    • グローバル通知Webhook URL(企業WeChatボット、カスタムWebhook)設定
    • AIレビュー履歴の閲覧・管理
    • すべての管理操作には環境変数ADMIN_API_KEYで設定したシークレットキーによる認証が必要
  • 設定API: RESTful API(/config/*)でプログラム的に上記設定を管理。X-Admin-API-Keyリクエストヘッダーによる認証が必要。

設定の永続化:

  • Redis (必須): リポジトリ/プロジェクト設定、処理済みCommit SHA、AIレビュー結果を保存(デフォルト7日間有効、クローズ/マージ済みPR/MRの関連記録は自動削除)。サービスはRedisに強く依存しています。
  • 環境変数: 主にグローバル設定(LLM Key/URL, Redis接続情報, Admin API Keyなど)の読み込みに使用。管理パネルでのこれらのグローバル設定変更は即時反映されますが、サービス再起動時には環境変数から再読み込みされます。永続化が必要なグローバル設定は環境変数で管理することを推奨します。

使用方法

  1. サービス起動: DockerまたはPythonアプリケーション直接実行。必要な環境変数(ADMIN_API_KEY, OPENAI_API_KEY, REDIS_HOSTなど)が設定されていることを確認。
  2. リポジトリ/プロジェクト設定: 管理パネル(/admin)またはAPIで対象GitHubリポジトリまたはGitLabプロジェクトの設定を追加。Webhook SecretとPR/MRコメント読み書き権限を持つAccess Tokenを含みます。
  3. Webhook設定: GitHub/GitLabのリポジトリ/プロジェクト設定でWebhookを追加:
    • Payload URL: サービスのアドレスと適切なWebhookエンドポイントを指定(下記参照)。
    • Content type: application/json
    • Secret: 管理パネルで設定したWebhook Secretを入力。
    • Events: GitHubは"Pull requests"、GitLabは"Merge request events"を選択。
  4. レビュー開始: PR/MRを作成または更新すると、サービスが自動的にコードレビューを実行。

レビューモード選択

  • 詳細レビュー (エンドポイント: /github_webhook, /gitlab_webhook):
    • AIが各ファイルの変更を詳細に分析し、具体的なコード行(可能な場合)に対する構造化されたレビューコメントを生成。
    • 各問題点はPR/MRの該当コード行(可能な場合)または全体コメントの一部として個別に投稿。
    • このモードでは、AIモデルはJSON形式の分析結果を出力するように指示され、システムがそれを解析してPR/MRコメントに変換。
    • JSON形式の安定した出力が可能なモデル(GPT-4シリーズなど)に適しています。コメントが不適切または欠落している場合は、アプリケーションログでLLMの生出力が期待するJSON形式に準拠しているか確認してください。
  • 汎用レビュー (エンドポイント: /github_webhook_general, /gitlab_webhook_general):
    • AIが各変更ファイルの内容を全体的に分析し、ファイルごとに単一のMarkdown形式レビューコメントを生成。
    • ファイル変更のマクロな評価が必要な場合や、詳細レビューモードのモデル出力が不安定な場合に適しています。

開発モード

# 1. 克隆仓库
git clone https://github.com/dingyufei615/ai-code-review-helper.git
cd ai-code-review-helper

# 2. 创建并激活虚拟环境
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 3. 安装依赖
pip install -r requirements.txt

# 4. 配置环境变量 (参考 .env.example 或 配置 部分)

# 5. 启动服务
python -m api.ai_code_review_helper

# 6. 运行测试 (可选)
python -m unittest discover tests

注意事項

  • セキュリティ: 強力なADMIN_API_KEYを使用し、すべてのTokenとSecretを適切に保管してください。
  • コスト: 使用するLLMサービスのAPI呼び出しコストに注意。
  • ログ: サービスはコンソールに詳細な実行ログを出力し、問題調査を容易にします。
  • Redis依存: サービスは設定と結果保存のためにRedisに強く依存しています。

貢献

このコードの90%はAider + Geminiの協力で作成されました。 Pull RequestやIssueの投稿を歓迎します。