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.
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.
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
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.).
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.
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.
Déclencher la revue : Créer ou mettre à jour une PR/MR pour lancer automatiquement la revue de code.
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.