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 | Русский | 中文

Assistant de Revue de Code par IA

Un assistant automatisé de revue de code basé sur LLM. Il surveille les modifications des PR/MR via les Webhooks GitHub/GitLab, analyse le code avec l'IA et poste automatiquement les commentaires de revue dans les PR/MR, tout en prenant en charge plusieurs canaux de notification.

Regarder la démo vidéo sur Bilibili

En raison des restrictions de GitHub, il n'est pas possible d'intégrer directement un lecteur vidéo.

Fonctionnalités principales

  • Support multi-plateformes : Intégration avec les Webhooks GitHub et GitLab pour surveiller les événements Pull Request / Merge Request.
  • Modes de revue intelligents :
    • Revue détaillée (/github_webhook, /gitlab_webhook) : L'IA analyse chaque fichier modifié pour identifier des problèmes spécifiques. Les commentaires sont postés de manière structurée (par exemple, localisation des lignes de code, classification des problèmes, gravité, analyse et suggestions) sous forme de commentaires individuels dans la PR/MR. Le modèle IA produit des résultats d'analyse au format JSON, qui sont ensuite convertis en commentaires distincts.
    • Revue générale (/github_webhook_general, /gitlab_webhook_general) : L'IA effectue une analyse globale de chaque fichier modifié et génère un commentaire récapitulatif au format Markdown pour chaque fichier.
  • Processus automatisé :
    • Publication automatique des commentaires de revue (multiples en mode détaillé, un par fichier en mode général) dans la PR/MR.
    • Publication d'un commentaire récapitulatif une fois tous les fichiers analysés.
    • Même si l'IA ne détecte aucun problème, un message amical et un résumé sont postés.
    • Traitement asynchrone des tâches de revue pour une réponse rapide aux Webhooks.
    • Utilisation de Redis pour éviter les revues répétées du même Commit.
  • Configuration flexible :
    • Configuration de base via variables d'environnement.
    • Interface d'administration web (/admin) et API (/config/*) pour gérer :
      • Les secrets Webhook et tokens d'accès des dépôts/projets GitHub/GitLab.
      • Les paramètres LLM (clé API, URL de base, modèle).
      • Les URL Webhook de notification (WeCom, Webhook personnalisé).
      • La consultation de l'historique des revues IA.
    • Stockage persistant des configurations et résultats dans Redis.
  • Notifications et journalisation :
    • Envoi des résumés de revue (liens PR/MR, informations de branche, synthèse des résultats) vers WeCom et Webhooks personnalisés.
    • Stockage des résultats dans Redis (expiration par défaut après 7 jours), consultables via l'interface d'administration, avec nettoyage automatique des PR/MR fermées/fusionnées.
  • Déploiement : Supporte le déploiement via Docker ou l'exécution directe de l'application Python.

🚀 Démarrage rapide

🐳 Déploiement rapide

# 使用官方镜像
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

📌 Variables d'environnement requises :

  • ADMIN_API_KEY - Mot de passe de l'interface d'administration (valeur par défaut : change_this_unified_secret_key)
  • OPENAI_API_KEY - Clé API du service IA
  • REDIS_HOST - Adresse Redis

Configuration

1. Variables d'environnement (clés)

  • ADMIN_API_KEY: Requis. Clé secrète protégeant l'interface d'administration (valeur par défaut : change_this_unified_secret_key - à modifier impérativement).
  • OPENAI_API_KEY: Requis. Clé API OpenAI.
  • OPENAI_MODEL: (par défaut : gpt-4o) Modèle OpenAI utilisé.
  • OPENAI_API_BASE_URL: (optionnel) URL de base de l'API OpenAI (format : http(s)://xxxx/v1). Valeur par défaut : https://api.openai.com/v1
  • WECOM_BOT_WEBHOOK_URL: (optionnel) URL Webhook du robot WeCom.
  • REDIS_HOST: Requis. Adresse du serveur Redis. Si non configuré ou inaccessible, le service ne démarrera pas.
  • REDIS_PORT: (par défaut : 6379) Port du serveur Redis.
  • REDIS_PASSWORD: (optionnel) Mot de passe Redis.
  • REDIS_DB: (par défaut : 0) Numéro de la base de données Redis.
  • REDIS_SSL_ENABLED: (par défaut : true) Active SSL pour la connexion Redis. Définir à false pour désactiver.
  • (Autres variables comme SERVER_HOST, SERVER_PORT, GITHUB_API_URL, GITLAB_INSTANCE_URL, etc. - voir les logs ou le code source.)

2. Interface d'administration et API

  • Interface d'administration (/admin) : Fournit une interface web pour :
    • Configurer les secrets Webhook et tokens d'accès des dépôts GitHub/projets GitLab.
    • Gérer les paramètres globaux LLM (clé API OpenAI, URL de base, modèle).
    • Définir les URL Webhook de notification (robot WeCom, Webhook personnalisé).
    • Consulter l'historique des revues IA.
    • Toutes les actions nécessitent l'authentification via la variable ADMIN_API_KEY.
  • API de configuration : API RESTful (/config/*) pour gérer programmatiquement les configurations, avec authentification via l'en-tête X-Admin-API-Key.

Persistance des configurations :

  • Redis (requis) : Stocke les configurations des dépôts/projets, les Commit SHA traités et les résultats des revues IA (expiration après 7 jours par défaut, nettoyage automatique après fermeture/fusion des PR/MR). Le service dépend fortement de Redis.
  • Variables d'environnement : Principalement pour les configurations globales (clé/URL LLM, connexion Redis, clé Admin API). Les modifications via l'interface prennent effet immédiatement, mais les configurations sont rechargées depuis les variables au redémarrage. Il est donc recommandé d'utiliser les variables pour les configurations globales persistantes.

Mode d'emploi

  1. Démarrer le service : Via Docker ou directement avec Python, en configurant les variables nécessaires (ADMIN_API_KEY, OPENAI_API_KEY, REDIS_HOST, etc.).
  2. Configurer les dépôts/projets : Via l'interface (/admin) ou l'API, ajouter les configurations des dépôts GitHub/projets GitLab cibles, incluant les secrets Webhook et tokens d'accès avec permissions d'écriture des commentaires PR/MR.
  3. Configurer les Webhooks : Dans les paramètres des dépôts/projets GitHub/GitLab :
    • URL de payload : Pointer vers l'URL du service et le endpoint Webhook approprié (voir ci-dessous).
    • Type de contenu : application/json.
    • Secret : Utiliser le secret configuré précédemment dans l'interface.
    • Événements : "Pull requests" pour GitHub, "Merge request events" pour GitLab.
  4. Déclencher la revue : Créer ou mettre à jour une PR/MR pour lancer automatiquement la revue de code.

Choix du mode de revue

  • Revue détaillée (endpoints : /github_webhook, /gitlab_webhook) :
    • L'IA tente une analyse minutieuse des modifications par fichier, visant à générer des commentaires structurés sur des lignes spécifiques (si possible).
    • Chaque problème est posté comme un commentaire indépendant sur la ligne concernée (ou dans la discussion générale).
    • Dans ce mode, l'IA produit un résultat JSON qui est parsé en commentaires.
    • Adapté aux modèles capables de suivre des instructions complexes avec un JSON stable (comme GPT-4). Vérifier les logs en cas de problème.
  • Revue générale (endpoints : /github_webhook_general, /gitlab_webhook_general) :
    • L'IA effectue une analyse globale par fichier et génère un commentaire récapitulatif Markdown par fichier.
    • Utile pour une évaluation macro ou si le mode détaillé produit des résultats instables.

Mode développement

# 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

Notes importantes

  • Sécurité : Utiliser une ADMIN_API_KEY robuste et protéger tous les tokens et secrets.
  • Coûts : Surveiller les coûts d'appels API du service LLM utilisé.
  • Journaux : Le service produit des logs détaillés dans la console pour le débogage.
  • Dépendance Redis : Le service nécessite impérativement Redis pour le stockage des configurations et résultats.

Contributions

Ce code a été réalisé à 90% par Aider + Gemini en collaboration. Les Pull Requests et Issues sont les bienvenues.