Ich habe einen KI-Generator für Git-Commit-Messages entwickelt
Früher habe ich schlechte Commit-Messages wie „fixed bug“ oder „updated stuff“ geschrieben. Das hat meine Pull Requests unübersichtlich gemacht. Ich habe mich entschieden, dies mithilfe von KI zu automatisieren. Mein Ziel war es, saubere, konventionelle Commit-Messages aus meinen Code-Diffs zu generieren.
Es war schwieriger als gedacht. Ein einfacher Prompt funktionierte nicht.
Die frühen Versuche scheiterten aus vielen Gründen:
- Die KI schrieb lange Absätze statt kurzer Zeilen.
- Sie ignorierte die erforderlichen Präfixe wie „feat:“ oder „fix:“.
- Sie halluzinierte Features, die im Code gar nicht existierten.
- Lokale Modelle waren zu langsam und schrieben in einem poetischen, nutzlosen Stil.
Schließlich habe ich ein hybrides System gebaut, das funktioniert. Hier ist die Struktur, die ich verwende:
- Typ-Klassifizierung: Ich bitte das Modell, einen Typ wie feat, fix oder chore auszuwählen, bevor die Nachricht geschrieben wird.
- Kontext-Kürzung: Ich sende nur die ersten 250 Zeilen des Diffs. Das spart Kosten und hält den Fokus scharf.
- Validierung: Ich verwende einen Regex, um die Ausgabe zu prüfen. Wenn die Nachricht falsch ist, versucht das Skript es erneut.
- Niedrige Temperatur: Ich setze die Temperatur auf 0,2. Das macht die Ausgabe konsistent und langweilig. Langweilig ist gut für Logs.
Ich verwende keine automatischen Commit-Hooks. KI macht Fehler. Ich führe das Skript als Git-Alias aus. Es schlägt eine Nachricht vor, und ich überprüfe sie, bevor ich committe. Eine manuelle Überprüfung ist die beste Versicherung gegen eine schlechte Git-Historie.
Drei Lektionen, die ich gelernt habe:
- Token-Limits sind dein Feind. Große Diffs sprengen entweder dein Budget oder deinen Prompt.
- Validierung ist Pflicht. Ohne sie erhältst du nur Unsinn.
- Geschwindigkeit zählt. Ich verwende GPT-4o-mini, weil es schnell und günstig ist.
Wenn du an sensiblem Code arbeitest, sende deine Diffs nicht an eine externe API. Nutze stattdessen ein lokales Modell.
Wie gehst du mit deinen Commit-Messages um? Nutzt du KI oder schreibst du sie von Hand?
