I Built An AI Git Commit Message Generator

以前は、質の低いコミットメッセージを書いていました。

「fixed bug」や「updated stuff」といったメッセージがよくありました。そのせいで、プルリクエストが乱雑になってしまったのです。そこで、これを自動化するためのAIツールを作ることにしました。コードの差分(diff)から、明確でプロフェッショナルなメッセージを生成したかったのです。

思っていたよりも難しかったです。単にシンプルなプロンプトを使うだけではうまくいきません。

プロセスを通じて学んだことは以下の通りです。

The Failures

  • 初期の試みは冗長すぎました。AIが短い行ではなく、段落のような長い文章を書いてしまったのです。
  • AIが Conventional Commits のような標準的なフォーマットを無視しました。
  • 指示を増やしすぎると、AIが実際には存在しない変更を捏造(ハルシネーション)するようになりました。
  • ローカルモデルは動作が遅すぎるか、あるいは奇妙で詩的なスタイルで書いてしまいました。

The Solution

Node.js を使用して、以下の3つのステップからなるハイブリッドシステムを構築しました。

  • 型の分類 (Type Classification): AIにまず型(feat, fix, chore など)を選ばせるように強制します。
  • コンテキストの切り詰め (Context Truncation): diff の最初の250行だけを送信します。これによりコストを抑え、内容を集中させることができます。
  • バリデーション (Validation): 正規表現(regex)を使用して出力をチェックします。失敗した場合は、スクリプトが再試行します。

My Technical Settings

  • Model: GPT-4o-mini を使用しています。高速で安価です。
  • Temperature: 0.2 に設定しています。低い Temperature にすることで、退屈なほど一貫性のあるメッセージを保証します。
  • Workflow: 自動コミットはしません。ツールにメッセージを提案させ、それを自分で確認してから手動で貼り付けます。

Lessons for Developers

  • トークン制限が最大の敵です。大きな diff は、予算を使い果たしたり、プロンプトを機能不全にさせたりします。
  • バリデーションは必須です。正規表現によるチェックがなければ、役に立たないテキストが生成されてしまいます。
  • 手動レビューは安全策です。AIは間違いを犯します。自分の目で確認せずにコミットさせてはいけません。
  • プライバシーが重要です。会社で禁止されている場合は、機密性の高いコードを外部 API に送信しないでください。

これを試してみたい場合は、Git のエイリアスとして実行してください。プロセスがシームレスになります。

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

Optional learning community: https://t.me/GyaanSetuAi