Ik heb een AI Git Commit Message Generator gebouwd

Ik schreef vroeger slechte commitberichten zoals "fixed bug" of "updated stuff." Dit maakte mijn pull requests rommelig. Ik besloot dit te automatiseren met behulp van AI. Ik wilde schone, conventionele commitberichten genereren op basis van mijn code diffs.

Het was moeilijker dan ik dacht. Een simpele prompt werkte niet.

De eerste pogingen mislukten om verschillende redenen:

  • De AI schreef lange paragrafen in plaats van korte regels.
  • Het negeerde de vereiste "feat:" of "fix:" prefixes.
  • Het hallucineerde functies die niet in de code aanwezig waren.
  • Lokale modellen waren te traag en schreven in een poëtische, nutteloze stijl.

Uiteindelijk heb ik een hybride systeem gebouwd dat werkt. Dit is de structuur die ik gebruik:

  • Typeclassificatie: Ik vraag het model om een type te kiezen, zoals feat, fix of chore, voordat het bericht wordt geschreven.
  • Context-truncatie: Ik stuur alleen de eerste 250 regels van de diff. Dit bespaart geld en houdt de focus scherp.
  • Validatie: Ik gebruik een regex om de output te controleren. Als het bericht fout is, probeert het script het opnieuw.
  • Lage temperatuur: Ik stel de temperatuur in op 0.2. Dit maakt de output consistent en saai. Saai is goed voor logs.

Ik gebruik geen automatische commit hooks. AI maakt fouten. Ik draai het script als een git alias. Het stelt een bericht voor, en ik controleer het voordat ik commit. Handmatige controle is de beste verzekering tegen een slechte git-geschiedenis.

Drie lessen die ik heb geleerd:

  • Tokenlimieten zijn je vijand. Grote diffs zullen je budget of je prompt verstoren.
  • Validatie is verplicht. Zonder validatie krijg je onzin.
  • Snelheid is belangrijk. Ik gebruik GPT-4o-mini omdat het snel en goedkoop is.

Als je met gevoelige code werkt, stuur je diffs dan niet naar een externe API. Gebruik in plaats daarvan een lokaal model.

Hoe ga jij om met je commitberichten? Gebruik je AI of schrijf je ze met de hand?

Bron: https://dev.to/__c1b9e06dc90a7e0a676b/i-built-a-git-commit-message-generator-with-ai-heres-what-i-learned-2534