He creado un generador de mensajes de commit de Git con IA

Solía escribir malos mensajes de commit como "fixed bug" o "updated stuff". Esto hacía que mis pull requests fueran un desastre. Decidí automatizarlo usando IA. Quería generar mensajes de commit limpios y convencionales a partir de mis diffs de código.

Fue más difícil de lo que pensaba. Un simple prompt no funcionaba.

Los primeros intentos fallaron por muchas razones:

  • La IA escribía párrafos largos en lugar de líneas cortas.
  • Ignoraba los prefijos obligatorios "feat:" o "fix:".
  • Alucinaba funcionalidades que no existían en el código.
  • Los modelos locales eran demasiado lentos y escribían con un estilo poético e inútil.

Finalmente construí un sistema híbrido que funciona. Esta es la estructura que utilizo:

  • Clasificación de tipo: Le pido al modelo que elija un tipo como feat, fix o chore antes de escribir el mensaje.
  • Truncamiento de contexto: Solo envío las primeras 250 líneas del diff. Esto ahorra dinero y mantiene el enfoque preciso.
  • Validación: Utilizo una regex para comprobar la salida. Si el mensaje es incorrecto, el script lo intenta de nuevo.
  • Temperatura baja: Configuro la temperatura en 0.2. Esto hace que la salida sea consistente y aburrida. Lo aburrido es bueno para los logs.

No utilizo commit hooks automáticos. La IA comete errores. Ejecuto el script como un alias de git. Sugiere un mensaje y yo lo reviso antes de hacer el commit. La revisión manual es el mejor seguro contra un mal historial de git.

Tres lecciones que aprendí:

  • Los límites de tokens son tu enemigo. Los diffs grandes agotarán tu presupuesto o arruinarán tu prompt.
  • La validación es obligatoria. Sin ella, obtendrás cosas sin sentido.
  • La velocidad importa. Uso GPT-4o-mini porque es rápido y barato.

Si trabajas con código sensible, no envíes tus diffs a una API externa. En su lugar, utiliza un modelo local.

¿Cómo gestionas tus mensajes de commit? ¿Usas IA o los escribes a mano?

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