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 のエイリアスとして実行してください。プロセスがシームレスになります。
Optional learning community: https://t.me/GyaanSetuAi
