Open SourceMade in Brazil

KI hat’s geschrieben. Wer hat’s geprüft?

KI-Code ist schnell da. Die Lücken auch. CodeCorvus checkt jeden Pull Request vor dem Merge und zeigt dir, was keinen Sinn ergibt, was leakt und was kaputtgeht.

Kompiliert. Tests grün. Und steckt voller Lücken.

Die KI schreibt in Minuten, wofür man früher einen Tag gebraucht hat. Was da alles mitkommt, hat keiner Zeit zu lesen. Passiert jedem.

Committetes Secret

src/billing/client.ts+3−0

@@ -12,1 +12,4 @@

1212import Stripe from "stripe";
13const stripe = new Stripe("sk_live_••••••••");

codecorvusbot· jetztblockierend

Ein Production-Key im Code. Gitleaks blockiert sofort, und der Wert wird im Kommentar geschwärzt.

14export const charge = (amount: number) =>
15 stripe.charges.create({ amount });

Patientendaten in den Logs

src/report.js+1−1

@@ -41,3 +41,3 @@

4141} catch (error) {
42 logger.error("export failed", error.message);
42 logger.error("export failed", payload.patient);

codecorvusbot· jetztblockierend

payload.patient schickt Name und Ausweisnummer in die Logs. Logge nur die ID des Reports.

validiert

4343 throw error;

Kompiliert, ist aber falsch

src/api/orders.ts+2−0

@@ -27,2 +27,4 @@

2727const size = 20;
28const start = (page - 1) * size;
29return orders.slice(start, size);

codecorvusbot· jetztwichtig

slice will wissen, wo es aufhört, nicht wie viele Einträge. Ab Seite 2 kommt die Liste leer zurück.

2830}

Business-Regel ignoriert

src/plans/discount.ts+1−1

@@ -8,3 +8,3 @@

88export function seniorDiscount(age: number) {
9 return age >= 60 ? 0.3 : 0;
9 return age > 60 ? 0.3 : 0;

codecorvusbot· jetztwichtig

Laut Regel im Repo gilt „ab 60“. Mit > verliert, wer genau 60 ist, den Rabatt.

1010}

PR #517 · Billing refactoren · 47 Dateien

Ein Riesen-PR, den keiner gründlich liest.

Corvus liest jede Zeile und meldet sich nur, wenn’s wichtig ist.

Corvus Review

corvus -b main

Geprüft · 46s · Schritt 12

  • 1blockierend
  • 2wichtig
  • 3Vorschläge

Merge blockiert: 1 ernstes Problem, bestätigt.

Prüft Zeile für Zeile. Blockt nur, was kritisch ist.

Liest den ganzen Diff

Jede Datei im PR, mit dem Kontext des Repos. Der Kommentar landet genau auf der Zeile mit dem Problem.

Erklärt’s und schlägt den Fix vor

Sagt dir, warum es ein Problem ist, und gibt dir den Fix als Commit suggestion. Ein Klick, fertig.

Blockt nur, was kritisch ist

Blockierend hält den Merge auf. Wichtig warnt nur. Ein Vorschlag ist nur ein Vorschlag, ganz ohne Druck.

Inline-Kommentare, eine Übersicht nach Schweregrad und ein Badge von der KI, die versucht hat, den Befund zu widerlegen.

github.com/acme/clinic-portal/pull/482

Report-Export verbessern #482

Open
Unterhaltung4Commits3
codecorvus bot hat diese Änderungen geprüft · vor 2 Min.

CodeCorvus Review

🔴 1 blockierend·🟡 2 wichtig·🔵 3 Vorschläge

src/report.js
4141 } catch (error) {
42- logger.error("export failed", error.message);
42+ logger.error("export failed", payload.patient);
4343 throw error;
codecorvus bot · vor 2 Min.

🔴 Patientendaten könnten in den Logs landen

payload.patient enthält Name und Ausweisnummer. Logge nur die ID des Reports.

validiertEine zweite KI hat versucht, ihn zu widerlegen, und hat’s nicht geschafft.
Vorgeschlagene Änderung
42- logger.error("export failed", payload.patient);
42+ logger.error("export failed", { report: payload.id });
Commit suggestion

Mit Begründung freigeben: /corvus ok oder /corvus fp

Merge ist blockiert

1 blockierender Befund muss behoben oder mit Begründung freigegeben werden.

Blockt nicht grundlos. Erst prüft eine zweite KI.

Bevor geblockt wird, sucht eine zweite KI nach einer Lücke im Befund. Gefunden? Kein Block. Nicht gefunden? Dann gibt’s das Badge „validiert“, und der Merge wird aufgehalten.

Probier das Gate aus

Leg die Schalter um. Der Merge ändert sich sofort.

Ist ein Secret im Diff?
Ist der Befund kritisch?
Hat die zweite KI ihn widerlegt?

Anderer Meinung? Schick ein /corvus fp mit Begründung und mach weiter. Wird festgehalten.

  1. BefundKritischer Befund
  2. GegenprüfungVersucht zu widerlegen, nicht geschafft

Merge blockiert

validiert

Der Befund bekommt das Badge „validiert“, und der Fix-Vorschlag landet direkt auf der Zeile.

Die Zahlen sind öffentlich. Beweis statt Versprechen.

Bei jedem Release läuft Corvus gegen ein Golden Set aus echten und eingeschleusten Fällen, und die Ergebnisse werden veröffentlicht. Diese hier sind aus dem Case Grupo Mais Saúde.

Golden Set · 13 Fälle
  • 100%Recall bei blockierenden Befundenhat jedes kritische Problem gefunden
  • 100%Precision bei blockierenden Befundenjeder Block war ein echtes Problem
  • 0False Positives, die einen Merge blockierenkein PR grundlos aufgehalten

Ergebnisse für dieses Golden Set mit 13 Fällen; keine Garantie für jedes Repository.

Leg beim nächsten PR los. Dein Ablauf bleibt, wie er ist.

.github/workflows/corvus.ymlYAML
name: CodeCorvuson: [pull_request]permissions:  contents: read  pull-requests: write  id-token: write   # short-lived OIDC sessionjobs:  review:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4      - run: corvus review

Prüft jeden PR auf deinem Runner.

Terminal
$ corvus -b main⠹ 46s · Schritt 12 · Lese src/report.js1blockierend2wichtig3Vorschläge

Lass ihn laufen, bevor du den PR öffnest, und schau live zu.

Probleme · VS Code · Cursor
  • Patientendaten in den Logssrc/report.js:42
  • Kompiliert, ist aber falschsrc/api/orders.ts:29
  • Business-Regel ignoriertsrc/plans/discount.ts:9

Befunde tauchen in deinem Editor auf. Im PR fragst du einfach: /corvus explica.

Beispiel zur Veranschaulichung. Installier und konfigurier die CLI für deine CI-Umgebung.

Cloud · bald verfügbarDerselbe Corvus, ohne KI-Key und mit Dashboard.

Dein Code, in deiner CI. Dein Key, raus aus dem Repo.

  • Läuft auf deinem RunnerDer Workflow läuft in deinem GitHub Actions. Der Code geht vom Runner direkt zum KI-Anbieter.
  • Kein Key im RepoEine kurzlebige Session via GitHub OIDC. Keine Secrets, die im Repo rumliegen. Punkt.
  • Die KI liest nur CodeSie prüft den Diff und seinen Kontext. Sie führt keine Befehle aus und geht nicht ins Netz.
  • Secrets immer geschwärztDeterministisches Gitleaks, und Semgrep von der KI bestätigt.
  • Gebaut für die LGPDRegeln für brasilianische Ausweisnummern und Patientendaten in Logs, Payloads und Responses.

Kurz beantwortet.

Was ist CodeCorvus?

Ein Open-Source-Code-Reviewer mit KI, der in GitHub Actions läuft. Er liest jeden Pull Request, kommentiert direkt an der Zeile mit dem Fix und blockt den Merge nur bei einem kritischen Problem, das eine zweite KI nicht widerlegen konnte.

Was kostet das?

Open Source ist kostenlos: Du bringst deinen eigenen KI-Key mit, oder dein Abo in der CLI. Für Cloud gibt’s noch keinen Preis; es kommt bald.

Wohin geht mein Code?

Der Workflow läuft auf deinem GitHub Actions Runner. Von da geht der Code direkt zum KI-Anbieter deiner Wahl.

Blockiert er meinen Merge grundlos?

Nö. Nur ein kritischer Befund hält den Merge auf, und erst nachdem eine zweite KI versucht hat, ihn zu widerlegen. Anderer Meinung? /corvus ok oder /corvus fp, mit Begründung, und weiter geht’s.

Funktioniert es mit GitLab?

Vorerst nicht. Die CI-Integration zielt auf GitHub Actions und GitHub Pull Requests.

Hilft es bei der LGPD?

Corvus bringt Regeln für brasilianische Ausweisnummern und Patientendaten in Logs, Payloads und Responses mit und protokolliert Belege des Reviews. Rechtsberatung ersetzt es nicht.

Worauf wartest du noch?

Ein Workflow, ein PR, fertig: Corvus reviewt schon.

Los, installier’s

Open Source und kostenlos. Ohne Anmeldung, ohne Haken.