高木のブログ

ChatGPT にコミットメッセージを考えてもらう CLI ツールを作った

2023/05/05

最近はコミットメッセージを ChatGPT に考えてもらっている
指示の入力と差分のコピペが面倒になったので、CLI ツールを作った

ytkg/commit-genius - GitHub

ツール名も ChatGPT に考えてもらった

インストール方法と使い方

インストール

Deno で作った

$ deno install --allow-env --allow-run --allow-net --allow-read https://deno.land/x/commit_genius/cg.ts
✅ Successfully installed cg

$ cg --version
cg v0.4.0

使い方

環境変数に OpenAPI の API キーをセット

$ export OPENAI_ACCESS_TOKEN=sk-HogehogeXXX

git add して、コマンド叩けばコミットメッセージの候補が出てくる

$ git add .
$ cg
Possible commit message suggestions:
- Update installation guide (インストールガイドを更新)
- Add --allow-write flag to installation command (インストールコマンドに --allow-write フラグを追加)
- Update README.md with usage examples (README.mdを使用例付きで更新)

日本語も欲しかったので表示するようにしている(後々オプションで表示・非表示に選べるようにする予定)

どうして作った?

正直、n 番煎じでこれより高機能なものをあるけど、自分のユースケースにピッタリ当てはまるものじゃなかったのと CLI ツールを作る知見を貯めたかったから作った

どうして Deno ?

本当にこれで、CLI ツールは今までに Go や Ruby でも作ったことがあるけど、サクッと作って気軽に配布できるという点が良くて Deno を選んだ

プロンプト

現時点ではこんな感じの指示を与えている

あなたは与えられた git diff の結果からコミットメッセージを考えるアシスタントです。
英語でのコミットメッセージの候補を出力してください。
それぞれの日本語訳も欲しいです。

出力例:
Possible commit message suggestions:
- commit messages 1 (日本語訳1)
- commit messages 2 (日本語訳2)
- commit messages 3 (日本語訳3)

所感

精度はそれなりに良かったが、微妙な場合もあった
変数名や関数名が明確ではなかったり、コミットの粒度が大きかったりすると微妙な結果になっている気がする
簡易的なコードレビューとしても使えると感じた

今後の展望

OSS に PR を出す用に変更内容の要約も出力するオプションも追加したいと思っている


SNS でシェアする


ytkg

Written by ytkg, Twitter, GitHub