Zbudowałem generator komunikatów commitów Git oparty na AI

Kiedyś pisałem słabe komunikaty commitów.

Komunikaty typu „fixed bug” czy „updated stuff” były na porządku dziennym. To sprawiało, że moje pull requesty były nieczytelne. Postanowiłem zbudować narzędzie AI, aby to zautomatyzować. Chciałem generować jasne, profesjonalne komunikaty na podstawie moich diffów.

Było to trudniejsze, niż myślałem. Nie można po prostu użyć prostego promptu.

Oto czego nauczyłem się w tym procesie:

Porażki

  • Początkowe próby były zbyt rozwlekłe. AI pisało całe akapity zamiast krótkich linii.
  • AI ignorowało standardowe formaty, takie jak Conventional Commits.
  • Dodawanie większej liczby instrukcji powodowało, że AI halucynowało zmiany, których nie było.
  • Lokalne modele były zbyt wolne lub pisały w dziwnym, poetyckim stylu.

Rozwiązanie

Zbudowałem hybrydowy system w Node.js, wykorzystujący trzy kroki:

  • Klasyfikacja typu: Zmuszam AI, aby najpierw wybrało typ (feat, fix, chore itp.).
  • Skracanie kontekstu: Wysyłam tylko pierwsze 250 linii diffa. Pozwala to oszczędzić pieniądze i zachować skupienie.
  • Walidacja: Używam wyrażenia regularnego (regex), aby sprawdzić wynik. Jeśli walidacja zawiedzie, skrypt próbuje ponownie.

Moje ustawienia techniczne

  • Model: Używam GPT-4o-mini. Jest szybki i tani.
  • Temperatura: Ustawiam ją na 0.2. Niska temperatura zapewnia nudne, spójne komunikaty.
  • Workflow: Nie stosuję auto-commita. Używam narzędzia do zasugerowania komunikatu, a następnie sprawdzam go i wklejam ręcznie.

Lekcje dla programistów

  • Limity tokenów to Twój główny wróg. Duże diffy mogą przekroczyć Twój budżet lub limit promptu.
  • Walidacja jest niezbędna. Bez sprawdzenia za pomocą regex otrzymasz bezużyteczny tekst.
  • Ręczna weryfikacja to bezpieczeństwo. AI popełnia błędy. Nigdy nie pozwól mu zrobić commita bez Twojego nadzoru.
  • Prywatność ma znaczenie. Nie wysyłaj wrażliwego kodu do zewnętrznego API, jeśli Twoja firma tego zabrania.

Jeśli chcesz to wypróbować, uruchom to jako alias Git. Dzięki temu proces staje się płynny.

Źródło: https://dev.to/__c1b9e06dc90a7e0a676b/i-built-a-git-commit-message-generator-with-ai-heres-what-i-learned-2534

Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi