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?
