Projektanalyse (Discovery)¶
AI ReviewBot enthÀlt ein automatisches Project Discovery-System, das Ihr Repository vor jedem Code-Review analysiert. Discovery erkennt Ihren Stack, Ihre CI-Pipeline und Konventionen, damit der Reviewer intelligenteres und weniger störendes Feedback geben kann.
Wie es funktioniert¶
Discovery fĂŒhrt eine 4-Schichten-Pipeline beim ersten PR/MR aus:
| Schicht | Quelle | Kosten |
|---|---|---|
| Schicht 0 â Platform API | Sprachen, Dateibaum, Topics von GitHub/GitLab API | Kostenlos (nur API) |
| Schicht 1 â CI-Analyse | Parsing von GitHub Actions / GitLab CI / Makefile | Kostenlos (lokales Parsing) |
| Schicht 2 â Config-Dateien | Lesen von pyproject.toml, package.json, Linter-Configs |
Kostenlos (Datei-Reads) |
| Schicht 3 â LLM-Interpretation | KI interpretiert mehrdeutige Daten (nur wenn Schichten 0-2 nicht ausreichen) | ~50-200 Tokens |
Jede Schicht degradiert sanft â wenn eine fehlschlĂ€gt, fĂ€hrt die Pipeline mit dem fort, was sie hat.
Attention Zones¶
Discovery klassifiziert jeden QualitÀtsbereich in eine von drei Attention Zones basierend auf Ihrer CI-/Tooling-Abdeckung:
| Zone | Emoji | Bedeutung | Reviewer-Verhalten |
|---|---|---|---|
| Well Covered | CI-Tools decken diesen Bereich ab | Reviewer ĂŒberspringt ihn | |
| Weakly Covered | Teilweise Abdeckung, Verbesserungspotenzial | Reviewer achtet darauf + schlÀgt Verbesserungen vor | |
| Not Covered | Keine Automatisierung erkannt | Reviewer fokussiert sich auf diesen Bereich |
Beispiel-Zones¶
| Bereich | Status | Grund |
|---|---|---|
| Formatting | ruff format in CI | |
| Type checking | mypy --strict in CI | |
| Security scanning | No security scanner in CI | |
| Test coverage | pytest runs but no coverage threshold |
Was automatisch passiert¶
- Discovery analysiert Ihr Repository (Sprachen, CI-Tools, Config-Dateien).
- Attention Zones werden berechnet â jeder QualitĂ€tsbereich wird als Well Covered, Weakly Covered oder Not Covered klassifiziert.
- Der Review-Prompt wird angereichert mit zonengesteuerten Anweisungen (~200-400 Tokens).
- Der Reviewer ĂŒberspringt Well Covered Bereiche und fokussiert sich auf Not Covered Bereiche.
Discovery-Kommentar¶
Wenn Discovery LĂŒcken oder nicht abgedeckte Zones findet, postet es einen einmaligen Zusammenfassungskommentar im PR/MR:
AI ReviewBot: Project Analysis¶
Stack: Python (FastAPI) 3.13, uv
CI:
.github/workflows/tests.yml â ruff, mypy, pytest
Not Covered (focusing in review)¶
Security scanning â No security scanner detected in CI
Consider adding bandit or safety to your pipeline
Could Be Improved¶
Test coverage â pytest runs but no coverage threshold enforced
Add
--cov-fail-under=80to enforce minimum coverageQuestions / Gaps: - No security scanner detected in CI Question: Do you use any security scanning tools? Assumption: Will check for common vulnerabilities manually
Create
.reviewbot.mdin your repo root to customize.
Im Verbose-Modus (discovery_verbose=true) enthÀlt der Kommentar auch Well Covered Zones:
Well Covered (skipping in review)¶
Formatting â ruff format in CI
Type checking â mypy --strict in CI
Watch-Files & Caching¶
Discovery verwendet watch-files, um eine erneute LLM-Analyse zu vermeiden, wenn sich die Projektkonfiguration nicht geÀndert hat.
Wie es funktioniert¶
- Erster Durchlauf: Discovery fĂŒhrt die vollstĂ€ndige Pipeline aus, LLM liefert eine
watch_files-Liste (z.B.pyproject.toml,.github/workflows/tests.yml). - Nachfolgende DurchlÀufe: Discovery hasht jede watch-file und vergleicht mit dem gecachten Snapshot.
- Wenn unverĂ€ndert: Das gecachte Ergebnis wird verwendet â 0 LLM-Tokens verbraucht.
- Wenn geÀndert: LLM analysiert das Projekt erneut.
Das bedeutet, wiederholte PRs auf demselben Branch kosten keine zusĂ€tzlichen Tokens fĂŒr Discovery, solange sich die ĂŒberwachten Konfigurationsdateien nicht geĂ€ndert haben.
Token-Einsparungen
Bei einem typischen Projekt verwenden der zweite und alle weiteren PRs 0 Tokens fĂŒr Discovery. Nur Ănderungen an CI-Config, pyproject.toml, package.json oder Ă€hnlichen Dateien lösen einen neuen LLM-Aufruf aus.
discover CLI-Befehl¶
Sie können Discovery eigenstĂ€ndig ausfĂŒhren (ohne ein Review zu erstellen) mit dem discover-Befehl:
Optionen¶
| Option | Kurz | Beschreibung | Standard |
|---|---|---|---|
--provider |
-p |
Git-Provider | github |
--json |
Ausgabe als JSON | false |
|
--verbose |
-v |
Alle Details anzeigen (Conventions, CI-Tools, watch-files) | false |
Beispiele¶
# Einfache Discovery
ai-review discover owner/repo
# JSON-Ausgabe fĂŒr Skripting
ai-review discover owner/repo --json
# Verbose mit allen Details
ai-review discover owner/repo --verbose
# GitLab-Projekt
ai-review discover group/project -p gitlab
AbwÀrtskompatibilitÀt
ai-review (ohne Subcommand) fĂŒhrt wie bisher ein Review durch. Der discover-Subcommand ist neu.
.reviewbot.md¶
Erstellen Sie eine .reviewbot.md-Datei im Repository-Root, um expliziten Projektkontext bereitzustellen. Wenn diese Datei existiert, ĂŒberspringt Discovery die automatisierte Pipeline und verwendet Ihre Konfiguration direkt.
Format¶
<!-- Auto-generated by AI ReviewBot. Feel free to edit. -->
# .reviewbot.md
## Stack
- **Language:** Python 3.13
- **Framework:** FastAPI
- **Package manager:** uv
- **Layout:** src
## Automated Checks
- **Linting:** ruff
- **Formatting:** ruff
- **Type checking:** mypy
- **Testing:** pytest
- **Security:** bandit
- **CI:** github_actions
## Review Guidance
### Skip (CI handles these)
- Import ordering (ruff handles isort rules)
- Code formatting and style (ruff format in CI)
- Type annotation completeness (mypy --strict in CI)
### Focus
- SQL injection and other OWASP Top 10 vulnerabilities
- API backward compatibility
- Business logic correctness
### Conventions
- All endpoints must return Pydantic response models
- Use dependency injection for database sessions
Abschnitte¶
| Abschnitt | Zweck |
|---|---|
| Stack | PrimÀrsprache, Version, Framework, Paketmanager, Layout |
| Automated Checks | Tools, die bereits in CI laufen (der Reviewer ĂŒberspringt diese Bereiche) |
| Review Guidance -> Skip | Spezifische Bereiche, die der Reviewer nicht kommentieren soll |
| Review Guidance -> Focus | Bereiche, die besondere Aufmerksamkeit verdienen |
| Review Guidance -> Conventions | Projektspezifische Regeln, die der Reviewer einhalten soll |
Auto-Generierung
Sie können Discovery einmal laufen lassen, dann die Ergebnisse in .reviewbot.md kopieren und nach Bedarf anpassen. Der Bot enthÀlt einen Footer-Link, der diesen Workflow vorschlÀgt.
Konfiguration¶
| Variable | Standard | Beschreibung |
|---|---|---|
AI_REVIEWER_DISCOVERY_ENABLED |
true |
Projektanalyse aktivieren oder deaktivieren |
AI_REVIEWER_DISCOVERY_VERBOSE |
false |
Discovery-Kommentar immer posten (Standard: nur bei LĂŒcken/nicht abgedeckten Zones) |
AI_REVIEWER_DISCOVERY_TIMEOUT |
30 |
Discovery-Pipeline-Timeout in Sekunden (1-300) |
Setzen Sie AI_REVIEWER_DISCOVERY_ENABLED auf false, um Discovery komplett zu ĂŒberspringen. Der Reviewer funktioniert weiterhin, aber ohne projektspezifischen Kontext.
# GitHub Actions â Discovery deaktivieren
- uses: KonstZiv/ai-code-reviewer@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
google_api_key: ${{ secrets.AI_REVIEWER_GOOGLE_API_KEY }}
discovery_enabled: 'false'
Stiller Modus (Silent Mode)¶
Der Discovery-Kommentar wird nicht gepostet wenn:
.reviewbot.mdexistiert im Repository â der Bot nimmt an, dass Sie ihn bereits konfiguriert haben.- Keine LĂŒcken und keine nicht abgedeckten Zones â alles ist Well Covered, keine Fragen zu stellen.
- Duplikaterkennung â ein Discovery-Kommentar wurde bereits in diesem PR/MR gepostet.
In allen drei FĂ€llen lĂ€uft Discovery trotzdem und reichert den Review-Prompt an â es wird nur kein sichtbarer Kommentar gepostet.
FAQ¶
Kann ich Discovery deaktivieren?¶
Ja. Setzen Sie AI_REVIEWER_DISCOVERY_ENABLED=false. Der Reviewer arbeitet dann ohne Projektkontext, genau wie vor der EinfĂŒhrung des Discovery-Features.
Kostet Discovery zusĂ€tzliche LLM-Tokens?¶
Beim ersten Durchlauf: Schichten 0-2 sind kostenlos (API-Aufrufe und lokales Parsing). Schicht 3 (LLM-Interpretation) wird nur aufgerufen, wenn die ersten drei Schichten nicht ausreichen â typischerweise 50-200 Tokens, was im Vergleich zum Review selbst (~1.500 Tokens) vernachlĂ€ssigbar ist.
Bei nachfolgenden DurchlÀufen: Wenn sich Ihre watch-files nicht geÀndert haben, verwendet Discovery das gecachte Ergebnis und kostet 0 Tokens.
Kann ich die auto-generierte .reviewbot.md bearbeiten?¶
Ja, absolut. Die Datei ist fĂŒr manuelle Bearbeitung gedacht. Ăndern Sie alles, was Sie brauchen â der Parser toleriert zusĂ€tzlichen Inhalt und fehlende Abschnitte.
LĂ€uft Discovery bei jedem PR?¶
Discovery reichert den Review-Prompt bei jedem PR an. Der LLM-Aufruf wird ĂŒber watch-files gecacht (0 Tokens wenn unverĂ€ndert). Der Discovery-Kommentar wird nur einmal gepostet (Duplikaterkennung verhindert wiederholte Posts).
Wie kann ich alle Zones einschlieĂlich Well Covered sehen?¶
Setzen Sie AI_REVIEWER_DISCOVERY_VERBOSE=true. Dies erzwingt, dass der Discovery-Kommentar immer gepostet wird und alle Zones enthÀlt (Well Covered, Weakly Covered, Not Covered).
Was tun, wenn Discovery zu lange dauert?¶
Setzen Sie AI_REVIEWER_DISCOVERY_TIMEOUT auf einen höheren Wert (Standard: 30 Sekunden, Maximum: 300). Wenn Discovery das Timeout ĂŒberschreitet, fĂ€hrt das Review ohne Discovery-Kontext fort.