KI-Code-Review
Fordern Sie Code-Reviews von einem zweiten KI-Modell während einer laufenden Sitzung über die CLI an.
Voraussetzungen
geminiCLI installiert (ausführen:${CLAUDE_SKILL_DIR}/scripts/install-dependencies.sh)- Authentifizierung: entweder
GEMINI_API_KEYUmgebungsvariable (empfohlen – siehe „Bezahlte API“ unten) oder Google-Konto-OAuth (geminieinmal interaktiv ausführen) - Optional:
codexCLI für OpenAI-Reviews:brew install codex
KRITISCH: Reviews niemals überspringen
Qualität vor Geschwindigkeit. Wenn ein Review angefordert wird, MÜSSEN Sie auf das Ergebnis warten. Nicht:
- Das Review aufgrund von Ratenbegrenzungen oder Zeitüberschreitungen überspringen
- Ohne Review fortfahren und sagen „das können wir später machen“
- Ihr eigenes Review als Ersatz für den externen Modellaufruf verwenden
Die gemini CLI behandelt automatische Wiederholungen bei Ratenbegrenzungen. Wenn das Skript mit einer Zeitüberschreitung (Exit-Code 2) beendet wird, fragen Sie Ihren menschlichen Partner um Hilfe – fahren Sie nicht stillschweigend fort.
Ratenbegrenzungen (Kostenloses Kontingent – Google-Konto-Auth)
| Metrik | Grenze |
|---|---|
| Anfragen pro Minute | 60 RPM |
| Anfragen pro Tag | 1.000 RPD |
| Kapazität (Token/Zeit) | Sehr niedrig – der eigentliche Engpass |
| Modell | Automatisch von Google ausgewählt (wird mit der Zeit verbessert) |
| Kosten | 0 € |
Wichtig: Die RPM-/RPD-Grenzen sind selten das Problem. Google erzwingt auch ein Kapazitätskontingent (gesamte verarbeitete Token pro gleitendem Zeitfenster), das wesentlich restriktiver ist. Große Review-Payloads (Code + automatischer Kontext) können dieses Kontingent bereits nach wenigen Anfragen erschöpfen, was einen TerminalQuotaError mit einer mehrstündigen Rücksetzung (typischerweise 1-3 Stunden) auslöst. Dies betrifft insbesondere neuere automatisch ausgewählte Modelle (z. B. Gemini 2.5 Pro).
Um den Kontingentdruck zu verringern:
- Verwenden Sie
--no-contextfür kleine/fokussierte Reviews, um die Token-Nutzung zu reduzieren - Teilen Sie große Reviews in kleinere Brocken auf
- Verwenden Sie einen bezahlten API-Schlüssel, um Kapazitätsbeschränkungen vollständig zu vermeiden (siehe unten)
Die CLI wiederholt automatisch bei minutenbasierten Ratenbegrenzungen (Rücksetzung in Sekunden). Das Kapazitätskontingent wiederholt sich NICHT – es erfordert das Warten auf das Rücksetzungsfenster. Das Skript hat eine Zeitüberschreitung von 1 Stunde – wenn diese überschritten wird, bricht es ab und Sie sollten den Benutzer um Hilfe bitten.
Bezahlte API (Empfohlen für regelmäßige Nutzung)
Das Kapazitätskontingent der kostenlosen Stufe macht diese für mehr als ein paar Reviews pro Sitzung unpraktisch. Ein bezahlter API-Schlüssel beseitigt diesen Engpass zu minimalen Kosten.
Einrichtung
- Holen Sie sich einen Schlüssel von Google AI Studio
- Aktivieren Sie die Abrechnung für das zugehörige Google Cloud-Projekt – ohne Abrechnung verwendet der API-Schlüssel weiterhin die Kapazitätsgrenzen der kostenlosen Stufe (derselbe Engpass wie OAuth). In AI Studio: Einstellungen → Abrechnung oder in der Google Cloud Console.
- Konfigurieren Sie die gemini CLI für die API-Schlüssel-Authentifizierung:
# Legen Sie den Authentifizierungstyp in den gemini-Einstellungen fest (~/.gemini/settings.json) # Führen Sie gemini einmal interaktiv aus – es wird zur Auswahl der Authentifizierungsmethode auffordern. # Wählen Sie bei Aufforderung „Gemini API Key“. - Setzen Sie die Umgebungsvariable:
Fügen Sie dies Ihrem Shell-Profil hinzu, damit neue Shells es übernehmen. Wenn Sie sich in einer laufenden Sitzung befinden (z. B. Claude Code), müssen Sie die Datei neu einlesen oder die Sitzung neu starten.export GEMINI_API_KEY="Ihr-Schlüssel-hier" - Überprüfen Sie die Funktion:
gemini -p "hallo"– sollte ohne OAuth-Aufforderungen oder Kontingentfehler antworten.
Kostenabschätzung (Gemini 2.5 Pro)
| Token | Kosten | |
|---|---|---|
| Eingabe pro Review (Kontext + Diff) | ~8-12K | ~0,01-0,015 € |
| Ausgabe pro Review | ~1-2K | ~0,01-0,02 € |
| Gesamt pro Review | ~0,02-0,04 € |
| Nutzungsniveau | Reviews/Monat | Geschätzte Kosten |
|---|---|---|
| Leicht (wenige/Woche) | ~20 | ~0,50 € |
| Mittel (wenige/Tag) | ~60 | ~1,50 € |
| Stark (viele/Tag) | ~150 | ~4,00 € |
Nutzungsverfolgung
- AI Studio → Dashboard → Reiter Nutzung (Anfragen, Token, Kosten)
- Google Cloud Console → APIs & Dienste → Dashboard → „Generative Language API“
- Abrechnungsberichte → nach SKU gruppieren für eine Aufschlüsselung pro Modell
- Tipp: Erstellen Sie mehrere Schlüssel im selben Projekt, um die Nutzung von AI-Reviews von der interaktiven gemini CLI-Nutzung zu trennen
Verwendung
Schritt 1: Bestimmen, was reviewed werden soll
Wählen Sie basierend auf dem Kontext:
| Situation | Was senden |
|---|---|
| Gerade Code geschrieben | Die spezifischen geänderten Dateien |
| Mitten in einer Funktion | git diff (nicht bereitgestellte Änderungen) |
| Vor dem Commit | git diff --cached (bereitgestellte Änderungen) |
| Branch-Review | git diff main...HEAD |
| Spezifisches Anliegen | Einzelne Datei oder Funktion |
Schritt 2: Das Review ausführen
Verwenden Sie das Review-Skript unter ${CLAUDE_SKILL_DIR}/scripts/review.sh – dieser Pfad löst unabhängig vom aktuellen Arbeitsverzeichnis in das eigene Verzeichnis des Skills auf. Verwenden Sie niemals ./scripts/review.sh (das ist relativ zum CWD und wird in anderen Repos fehlschlagen). Leiten Sie Code niemals direkt an gemini oder codex weiter – verwenden Sie immer das Review-Skript.
# Nicht bereitgestellte Änderungen reviewen (Standard)
${CLAUDE_SKILL_DIR}/scripts/review.sh
# Bereitgestellte Änderungen reviewen
${CLAUDE_SKILL_DIR}/scripts/review.sh --staged
# Bestimmte Dateien reviewen
${CLAUDE_SKILL_DIR}/scripts/review.sh path/to/file1.swift path/to/file2.swift
# Branch-Diff vs. main reviewen
${CLAUDE_SKILL_DIR}/scripts/review.sh --branch
# Branch vs. Remote reviewen (bei Arbeit direkt auf main)
REVIEW_BASE_BRANCH=origin/main ${CLAUDE_SKILL_DIR}/scripts/review.sh --branch
# Zusätzlichen Kontextstring für bessere Reviews hinzufügen
${CLAUDE_SKILL_DIR}/scripts/review.sh --context "SwiftUI-App, iOS 18+, Swift 6" path/to/file.swift
# Review mit einer bestimmten Plan-Datei
${CLAUDE_SKILL_DIR}/scripts/review.sh --plan PLAN.md path/to/file.swift
# Automatischen Kontext überspringen (nur den Code/Diff senden)
${CLAUDE_SKILL_DIR}/scripts/review.sh --no-context --staged
Schritt 3: Auf Feedback reagieren
Nach Erhalt des Reviews:
- Beheben Sie Probleme mit ERROR-Schweregrad sofort
- WARNING-Elemente abwägen – beheben, es sei denn, es gibt einen guten Grund dagegen
- INFO-Elemente sind Vorschläge – nach eigenem Ermessen handeln
- Wenn das Review Fragen aufwirft, bei denen Sie unsicher sind, besprechen Sie diese mit dem Benutzer
Fehlerbehandlung
| Exit-Code | Bedeutung | Aktion |
|---|---|---|
| 0 | Erfolg | Auf Review-Feedback reagieren |
| 1 | Kein Code zu reviewen / falsche Argumente | Argumente prüfen |
| 2 | Zeitüberschreitung (>1 Stunde blockiert) | Benutzer um Hilfe bitten – das Review nicht überspringen |
Automatischer Kontext
Das Review-Skript fügt jedem Review automatisch Projektkontext voran, damit der Reviewer Konventionen, Architektur und Absicht versteht. Kein manueller Abschnitt „Code Review Context“ in CLAUDE.md erforderlich.
Automatisch enthalten (in dieser Reihenfolge):
- Implementierungsplan – zuerst gefunden von:
--plan-Flag,PLAN.mdim Repository-Stammverzeichnis, neueste.claude/plans/*.md - Projektanweisungen – zuerst gefunden von:
CLAUDE.md,GEMINI.md,AGENTS.mdim Repository-Stammverzeichnis - Dateibaum – Repository-Struktur in Tiefe 3
Verwenden Sie --no-context, um dies zu überspringen (z. B. bei sehr großen Payloads).
Das --context-Flag fügt einen zusätzlichen Inline-Kontextstring hinzu, der über den automatischen Kontext hinausgeht.
Anbieterkonfiguration
Standardanbieter ist gemini. Überschreiben Sie dies pro Sitzung:
# OpenAI stattdessen verwenden
REVIEW_PROVIDER=codex ${CLAUDE_SKILL_DIR}/scripts/review.sh
Wichtige Hinweise
- Reviews sind beratend – das zweite Modell kann Fehlalarme liefern
- Große Diffs (>50 KB) können abgeschnitten werden. Teilen Sie sie bei Bedarf in kleinere Reviews auf.
- Das Review-Modell läuft im Prompt-Modus (
-p) und kann das Repository nicht durchsuchen. Projektkontext wird automatisch einbezogen, um dies auszugleichen – siehe „Automatischer Kontext“ oben.