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 Code Review Helper

Ein auf LLM basierender automatischer Code-Review-Assistent. Überwacht PR/MR-Änderungen via GitHub/GitLab Webhook, analysiert Code mit KI und postet automatisch Review-Kommentare in PR/MR, unterstützt dabei verschiedene Benachrichtigungskanäle.

Demo-Video auf Bilibili ansehen

Aufgrund von GitHub-Beschränkungen kann kein Video-Player direkt eingebettet werden.

Hauptfunktionen

  • Multiplattform-Unterstützung: Integration von GitHub- und GitLab-Webhooks zur Überwachung von Pull Request/Merge Request-Ereignissen.
  • Intelligente Review-Modi:
    • Detailliertes Review (/github_webhook, /gitlab_webhook): Die KI analysiert jede geänderte Datei, um spezifische Probleme zu identifizieren. Review-Kommentare werden strukturiert (z.B. mit Codezeilenbezug, Problemkategorisierung, Schweregrad, Analyse und Empfehlungen) als separate Kommentare im PR/MR gepostet. Das KI-Modell gibt JSON-formatierte Analysen aus, die dann in einzelne Kommentare umgewandelt werden.
    • Allgemeines Review (/github_webhook_general, /gitlab_webhook_general): Die KI führt eine Gesamtanalyse jeder geänderten Datei durch und generiert einen zusammenfassenden Markdown-Kommentar pro Datei.
  • Automatisierter Workflow:
    • Automatisches Posten von KI-Review-Kommentaren (mehrere im detaillierten Modus, einer pro Datei im allgemeinen Modus).
    • Automatischer Abschlusskommentar nach Abschluss aller Dateianalysen.
    • Freundliche Rückmeldung auch wenn keine relevanten Probleme gefunden wurden.
    • Asynchrone Verarbeitung von Review-Aufgaben für schnelle Webhook-Antwortzeiten.
    • Redis-basierte Vermeidung von Doppelreviews für denselben Commit.
  • Flexible Konfiguration:
    • Basiskonfiguration via Umgebungsvariablen.
    • Web-Verwaltungsoberfläche (/admin) und API (/config/*) für:
      • Verwaltung von Webhook-Secrets und Access Tokens für GitHub/GitLab-Repos/Projekte.
      • LLM-Parameter (API Key, Base URL, Model).
      • Konfiguration von Benachrichtigungs-Webhooks (Enterprise WeChat, Custom Webhook).
      • Einblick in Review-Historie.
    • Persistente Speicherung von Konfiguration und Ergebnissen in Redis.
  • Benachrichtigungen & Protokollierung:
    • Versand von Review-Zusammenfassungen (mit PR/MR-Link, Branch-Info, Ergebnisübersicht) an Enterprise WeChat und Custom Webhooks.
    • Speicherung von Review-Ergebnissen in Redis (Standard: 7 Tage Gültigkeit), Verwaltung via Admin-Panel, automatische Bereinigung geschlossener/ge-mergter PRs/MRs.
  • Deployment: Unterstützt Docker- und direkte Python-App-Bereitstellung.

🚀 Schnellstart

🐳 Schnelle Docker-Bereitstellung

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

📌 Erforderliche Umgebungsvariablen:

  • ADMIN_API_KEY - Admin-Backend-Passwort (Standard: change_this_unified_secret_key)
  • OPENAI_API_KEY - KI-Service-Schlüssel
  • REDIS_HOST - Redis-Adresse

Konfiguration

1. Umgebungsvariablen (Auszug)

  • ADMIN_API_KEY: Erforderlich. Schutzschlüssel für Admin-Schnittstellen (Standard: change_this_unified_secret_key - unbedingt ändern!).
  • OPENAI_API_KEY: Erforderlich. OpenAI API-Schlüssel.
  • OPENAI_MODEL: (Standard: gpt-4o) Verwendetes OpenAI-Modell.
  • OPENAI_API_BASE_URL: (Optional) OpenAI API Basis-URL (Format: http(s)://xxxx/v1, Standard: https://api.openai.com/v1).
  • WECOM_BOT_WEBHOOK_URL: (Optional) Enterprise WeChat Bot Webhook URL.
  • REDIS_HOST: Erforderlich. Redis-Serveradresse. Ohne Konfiguration startet der Dienst nicht.
  • REDIS_PORT: (Standard: 6379) Redis-Port.
  • REDIS_PASSWORD: (Optional) Redis-Passwort.
  • REDIS_DB: (Standard: 0) Redis-Datenbanknummer.
  • REDIS_SSL_ENABLED: (Standard: true) SSL für Redis-Verbindung. Auf false setzen zum Deaktivieren.
  • (Weitere Variablen wie SERVER_HOST, SERVER_PORT, GITHUB_API_URL, GITLAB_INSTANCE_URL etc. siehe Startlogs oder Quellcode.)

2. Admin-Panel & API

  • Admin-Panel (/admin): Web-Oberfläche für:
    • Konfiguration von Webhook-Secrets und Access Tokens für GitHub/GitLab.
    • Verwaltung globaler LLM-Parameter (OpenAI API Key, Base URL, Model).
    • Einrichtung globaler Benachrichtigungs-Webhooks (Enterprise WeChat, Custom Webhook).
    • Anzeige und Verwaltung von Review-Historien.
    • Alle Aktionen erfordern Authentifizierung via ADMIN_API_KEY.
  • Config-API: RESTful API (/config/*) für programmatische Verwaltung, erfordert X-Admin-API-Key Header.

Persistenz:

  • Redis (erforderlich): Speichert Repo/Projekt-Konfigs, verarbeitete Commit-SHAs, Review-Ergebnisse (Standard: 7 Tage Gültigkeit). Service benötigt zwingend Redis.
  • Umgebungsvariablen: Laden globale Konfigs (LLM Key/URL, Redis-Verbindung, Admin API Key). Änderungen via Admin-Panel sind sofort wirksam, werden aber bei Neustart aus Umgebungsvariablen neu geladen. Daher empfiehlt sich persistente Verwaltung kritischer Konfigs via Umgebungsvariablen.

Nutzung

  1. Service starten: Via Docker oder direkter Python-Ausführung, erforderliche Umgebungsvariablen setzen (ADMIN_API_KEY, OPENAI_API_KEY, REDIS_HOST etc.).
  2. Repos/Projekte konfigurieren: Via Admin-Panel (/admin) oder API Ziel-Repos/Projekte mit Webhook-Secrets und Access Tokens (mit PR/MR-Kommentarrechten) hinzufügen.
  3. Webhook einrichten: In GitHub/GitLab Repo/Projekt-Einstellungen Webhook hinzufügen:
    • Payload URL: Service-URL mit passendem Webhook-Endpunkt (siehe unten).
    • Content type: application/json.
    • Secret: Im Admin-Panel konfiguriertes Webhook-Secret.
    • Events: GitHub "Pull requests", GitLab "Merge request events".
  4. Review auslösen: PR/MR erstellen/aktualisieren löst automatischen Code-Review aus.

Review-Moduswahl

  • Detailliertes Review (Endpunkte: /github_webhook, /gitlab_webhook):
    • KI analysiert jede Dateiänderung detailliert, zielt auf strukturierte Review-Kommentare mit Codezeilenbezug ab.
    • Jedes Problem wird als separater Kommentar in PR/MR gepostet (wenn möglich an Codezeile, sonst als allgemeiner Kommentar).
    • KI gibt JSON-formatierte Analysen aus, die in Kommentare umgewandelt werden.
    • Empfohlen für Modelle mit starker JSON-Ausgabefähigkeit (z.B. GPT-4-Serie). Bei Problemen LLM-Rohausgabe im Log prüfen.
  • Allgemeines Review (Endpunkte: /github_webhook_general, /gitlab_webhook_general):
    • KI führt Gesamtanalyse pro Datei durch, generiert einen Markdown-Zusammenfassungskommentar pro Datei.
    • Alternative bei instabiler JSON-Ausgabe im detaillierten Modus oder für Makroanalysen.

Entwicklungsmodus

# 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

Hinweise

  • Sicherheit: Starker ADMIN_API_KEY essenziell, Tokens/Secrets sicher aufbewahren.
  • Kosten: API-Kosten des verwendeten LLM-Services beachten.
  • Logs: Detaillierte Laufzeitlogs in Konsole zur Problemdiagnose.
  • Redis-Abhängigkeit: Service benötigt zwingend Redis für Konfig- und Ergebnisspeicherung.

Mitwirkung

90% dieses Codes wurden von Aider + Gemini erstellt. Pull Requests und Issues sind willkommen.