Ik heb een AI Git Commit Message Generator gebouwd
Vroeger schreef ik slechte commitberichten.
Berichten als "fixed bug" of "updated stuff" kwamen vaak voor. Dit maakte mijn pull requests rommelig. Ik besloot een AI-tool te bouwen om dit te automatiseren. Ik wilde duidelijke, professionele berichten genereren op basis van mijn code diffs.
Het was moeilijker dan ik dacht. Je kunt niet zomaar een simpele prompt gebruiken.
Dit is wat ik tijdens het proces heb geleerd:
De mislukkingen
- De eerste pogingen waren te langdradig. De AI schreef hele paragrafen in plaats van korte regels.
- De AI negeerde standaardformaten zoals Conventional Commits.
- Het toevoegen van meer instructies zorgde ervoor dat de AI wijzigingen hallucineerde die er niet waren.
- Lokale modellen waren te traag of schreven in een vreemde, poëtische stijl.
De oplossing
Ik heb een hybride systeem gebouwd in Node.js met drie stappen:
- Typeclassificatie: Ik dwing de AI om eerst een type te kiezen (feat, fix, chore, etc.).
- Contextverkorting: 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 dit mislukt, probeert het script het opnieuw.
Mijn technische instellingen
- Model: Ik gebruik GPT-4o-mini. Het is snel en goedkoop.
- Temperatuur: Ik heb deze ingesteld op 0.2. Een lage temperatuur zorgt voor saaie, consistente berichten.
- Workflow: Ik doe geen auto-commits. Ik gebruik de tool om een bericht voor te stellen, waarna ik het controleer en handmatig plak.
Lessen voor ontwikkelaars
- Tokenlimieten zijn je grootste vijand. Grote diffs zullen je budget of de prompt overschrijden.
- Validatie is noodzakelijk. Zonder een regex-controle krijg je nutteloze tekst.
- Handmatige controle is veiligheid. AI maakt fouten. Laat het nooit committen zonder dat je er zelf naar hebt gekeken.
- Privacy is belangrijk. Stuur geen gevoelige code naar een externe API als je bedrijf dat verbiedt.
Als je dit wilt proberen, gebruik het dan als een Git-alias. Dat maakt het proces naadloos.
Optionele leercommunity: https://t.me/GyaanSetuAi
