Warum Regeln die Geheimwaffe
der KI-Code-Review sind
Wie strukturierte Regeln KI-Code-Review von inkonsistenten Vorschlägen in deterministische, vorhersagbare Ergebnisse verwandeln
Wenn Sie schon einmal ChatGPT oder Claude für Code-Reviews verwendet haben, kennen Sie das wahrscheinlich: Derselbe Code erhält unterschiedliches Feedback, je nachdem, wie Sie Ihre Frage formulieren, welche Konversation vorher stattfand oder in welcher "Stimmung" die KI an diesem Tag zu sein scheint. Diese Inkonsistenz ist nicht nur ärgerlich – sie ist ein fundamentales Problem, das KI-gestütztes Code-Review für den Produktionseinsatz unzuverlässig macht.
Bei diffray haben wir dieses Problem mit strukturierten Regeln gelöst. Lassen Sie mich zeigen, warum sie der Schlüssel sind, um KI-Code-Review tatsächlich zum Funktionieren zu bringen.
Das Problem: Kontextverwässerung killt KI-Performance
Wenn Sie einen gesamten PR in ein LLM laden mit einem Prompt wie "überprüfe diesen Code", gehen mehrere Dinge schief:
Signal ertrinkt im Rauschen
Die KI versucht, Sicherheit, Performance, Tests, Dokumentation, Stil – alles auf einmal zu prüfen. Das Ergebnis? Oberflächliche Analyse, die kritische Probleme übersieht.
Der "Lost in the Middle"-Effekt
Forschung zeigt konsistent, dass Informationen in der Mitte langer Kontexte ignoriert werden. Ihre wichtigste Datei könnte dort vergraben sein, wo die KI sie nicht effektiv verarbeiten kann.
Inkonsistente Ergebnisse
Führen Sie dieselbe Überprüfung zweimal durch und erhalten Sie unterschiedliche Befunde. Das ist nicht akzeptabel für ein Tool, auf das Teams sich verlassen.
False-Positive-Explosion
Ohne Fokus markiert die KI generische Muster, die in Ihrer Codebasis eigentlich keine Probleme sind. Studien zeigen, dass Context-Dump-Ansätze 60-80% False-Positive-Raten produzieren.
Die Lösung: Strukturierte Regeln
Eine strukturierte Regel ist nicht nur ein Prompt – sie ist eine vollständige Spezifikation, die der KI genau sagt, wonach sie suchen soll, wo sie suchen soll und wie sie Befunde berichten soll.
So sieht eine Regel aus:
rules:
- id: sec_sql_injection
agent: security
title: "SQL-Injection durch String-Konkatenation"
description: "Benutzereingaben, die in SQL-Queries konkateniert werden, erlauben Angreifern, beliebiges SQL auszuführen"
importance: 9
match:
file_glob:
- "src/api/**/*.ts"
- "src/routes/**/*.ts"
- "!**/*.test.ts"
content_regex:
- "query.*\$\{|\+.*query"
checklist:
- "Finde alle Stellen, an denen Benutzereingaben in SQL-Queries verwendet werden"
- "Prüfe, ob parametrisierte Queries oder Prepared Statements verwendet werden"
- "Verifiziere, dass String-Konkatenation NICHT für Query-Building verwendet wird"
examples:
bad: |
const query = `SELECT * FROM users WHERE id = ${userId}`;
await db.execute(query);
good: |
const query = 'SELECT * FROM users WHERE id = ?';
await db.execute(query, [userId]);Diese Struktur ermöglicht drei kritische Fähigkeiten, die KI-Code-Review tatsächlich funktionieren lassen.
1. Deterministische Ergebnisse durch präzises Targeting
Beachten Sie den match-Abschnitt? Das ist Pattern-Matching, das bestimmt, wann die Regel überhaupt ausgeführt wird.
Ohne Pattern-Matching bedeutet die Überprüfung eines 50-Dateien-PRs, alle 50 Dateien für jedes mögliche Problem zu analysieren. Mit Pattern-Matching:
Ohne Pattern-Matching
- 50 Dateien × alle Regeln = massiver Prompt
- ~500.000 Tokens pro Review
- Ergebnis: Langsam, teuer, unfokussiert
Mit Pattern-Matching
- 5 API-Dateien × API-Sicherheitsregeln
- ~50.000 Tokens pro Review
- Ergebnis: Schnell, günstig, präzise
90%
Token-Einsparungen durch präzises Pattern-Matching
Wenn ein PR 5 API-Dateien mit SQL-Queries enthält, werden nur diese 5 Dateien für SQL-Injection-Prüfungen gesendet. Die KI sieht genau das, was sie bewerten muss – nicht mehr.
Diese Präzision eliminiert die Zufälligkeit, die frühere KI-Code-Review-Versuche plagten. Gleicher Code + gleiche Regeln = gleiche Befunde. Jedes Mal.
2. Multi-Agent-Architektur: Der richtige Experte für jedes Problem
Hier wird es interessant. diffray verwendet nicht eine KI, um alles zu überprüfen – es verwendet 31 spezialisierte Agenten, jeder fokussiert auf das, was er am besten kann:
Security-Experte
Schwachstellen, Auth, Datenexposition
Performance-Spezialist
N+1-Queries, Memory Leaks, Engpässe
Bug Hunter
Null-Pointer, Race Conditions, Edge Cases
React-Agent
Hooks-Patterns, Lifecycle, State Management
TypeScript-Agent
Typsicherheit, Generics, Strict-Mode-Patterns
Architektur-Berater
Design Patterns, Kopplung, Skalierbarkeit
Jeder Agent hat einen spezialisierten System-Prompt mit Domänenexpertise. Ein Security-Agent kennt die OWASP Top 10. Ein React-Agent versteht Hooks-Regeln. Diese Spezialisierung verbessert die Erkennungsqualität dramatisch.
Aber hier ist der Schlüssel: Regeln bestimmen, welcher Agent was bearbeitet.
- id: react_useeffect_cleanup
agent: react # Wird vom React-Spezialisten bearbeitet
match:
file_glob: ["**/*.tsx"]
content_regex: ["useEffect"]
checklist:
- "Prüfe, ob useEffect eine Cleanup-Funktion zurückgibt"
- "Verifiziere, dass Event-Listener und Subscriptions bereinigt werden"Diese Regel geht nur an den React-Agenten, nur für TSX-Dateien, nur wenn useEffect vorhanden ist. Der Agent erhält fokussierten Kontext über genau eine Sache – nicht 50 verschiedene Anliegen, die um Aufmerksamkeit konkurrieren.
3. Kontext-Kuratierung: Das Geheimnis, die KI-Aufmerksamkeit nicht zu verwässern
Moderne LLMs können 200k+ Tokens verarbeiten. Aber Forschung zeigt, dass die praktische Performance bei etwa 25-30k Tokens für komplexes Reasoning eine Obergrenze erreicht. Darüber hinaus zahlen Sie für Tokens, die das Modell nicht effektiv nutzen kann.
diffrays Kontext-Management-System stellt sicher, dass jeder Agent genau die Informationen erhält, die er braucht:
| Agent | Erhält | Schließt aus |
|---|---|---|
| Security-Experte | Auth-Flows, API-Endpoints, Datenhandling | UI-Komponenten, Styling |
| Performance-Spezialist | Hot Paths, Schleifen, Datenstrukturen | Dokumentation, Configs |
| React-Agent | Komponenten, Hooks, State Management | Backend-Code, SQL |
Jeder Agent bekommt genau das, was er braucht, um seine Arbeit zu erledigen. Nicht mehr. Das Ergebnis: Fokussierte Aufmerksamkeit, bessere Befunde, weniger False Positives.
4. Flexibilität: Projekt- und teamspezifische Regeln
Hier glänzen Regeln wirklich für Teams. Jede Codebasis hat Konventionen, die generische Tools nicht kennen:
Ihre internen Bibliotheken:
- id: use_internal_http_client
agent: consistency
title: "Verwende internen HTTP-Client-Wrapper"
match:
file_glob: ["src/**/*.ts"]
content_regex: ["\\bfetch\\(", "axios\\."]
checklist:
- "Finde rohe fetch()- oder axios-Aufrufe"
- "Prüfe, ob Code httpClient aus @/lib/http-client verwenden sollte"
examples:
bad: |
const response = await fetch('/api/users');
good: |
import { httpClient } from '@/lib/http-client';
const data = await httpClient.get('/api/users');Ihre domänenspezifischen Muster:
- id: money_use_decimal
agent: bugs
title: "Verwende Decimal für Geldwerte"
match:
content_regex: ["(price|amount|total)\\s*:\\s*(number|float)"]
checklist:
- "Finde Geldfelder, die float/number-Typen verwenden"
- "Verifiziere, dass Speicherung Cents (Integer) oder Decimal-Typ verwendet"Ihre Compliance-Anforderungen:
- id: pii_logging_check
agent: compliance
title: "Niemals PII direkt loggen"
tags: [compliance-gdpr, compliance-hipaa]
match:
content_regex: ["log.*(email|phone|ssn|password)"]Legen Sie diese in .diffray/rules/ ab und sie sind beim nächsten PR aktiv. Keine Infrastrukturänderungen, keine Tool-Updates – fügen Sie einfach YAML hinzu und Ihr KI-Reviewer lernt Ihre Standards.
Warum YAML? Struktur ermöglicht Intelligenz
Sie fragen sich vielleicht, warum wir strukturiertes YAML anstelle von einfachen Prompts verwenden. Die Struktur ermöglicht Fähigkeiten, die freiform Prompts nicht bieten können:
Pattern-Matching und Filterung
Der match-Abschnitt wird vor allem verarbeitet, was zur KI geht. Das geschieht im Code, nicht in Prompts – es ist deterministisch, schnell und genau.
Semantische Organisation
Regeln haben id, agent, importance, tags. Dies ermöglicht Filterung ("Führe nur Security-Regeln bei diesem PR aus"), Priorisierung ("Zeige kritische Probleme zuerst") und Reporting ("Wie viele Security- vs. Quality-Probleme?").
Versionskontrolle und Review
Regeln sind Code. Sie leben in Ihrem Repo, durchlaufen PR-Reviews, haben Git-Historie. Wenn jemand fragt "Warum markiert die KI das?", ist die Antwort in einer YAML-Datei, die jeder lesen kann.
Phasenübergreifende Nutzung
Verschiedene Teile einer Regel werden in verschiedenen Phasen genutzt: match für Dateifilterung (keine KI nötig), checklist + examples für KI-Review, id + importance für Deduplizierung und Priorisierung.
Ein flacher Prompt kann diese Trennung der Anliegen nicht bieten.
Das Ergebnis: KI-Code-Review, das tatsächlich funktioniert
Wenn Sie strukturierte Regeln mit Multi-Agent-Architektur und intelligentem Kontext-Management kombinieren, erhalten Sie:
Deterministische Ergebnisse
Gleicher Code, gleiche Regeln, gleiche Befunde
Fokussierte Analyse
Jeder Agent macht eine Sache außergewöhnlich gut
Wenige False Positives
Präzises Matching eliminiert Rauschen
Team-Anpassung
Fügen Sie Ihre Standards ohne Infrastrukturänderungen hinzu
Das ist es, was den Unterschied macht zwischen "KI-Code-Review" als Demo und KI-Code-Review als Infrastruktur, auf die Ihr Team sich tatsächlich verlässt.
Sehen Sie es in Aktion
Installieren Sie diffray und öffnen Sie einen PR. Es ist kostenlos für öffentliche Repos und enthält ein großzügiges kostenloses Kontingent für private Repos.