2026年9月19日(9連休1日目)
OpenCodeとの出会い
Grok BuildやGoogle AIの安いプランではレートリミットが圧倒的に足りない。 しかし、個人で休日にくらいしか使わないものに高額なプランを契約するのは憚られる。
無料で利用できるモデルが複数提供されているオープンソースのAIコーディングエージェントOpenCode ⧉を知り、試してみた。 かなり使える。レートリミットが必ずしも共有されているわけではないらしく、あるモデルでリミットに達した後、別のモデルを選択すると使えるようになった。
趣味ですらプログラムを書かなくなった昨今、AIエージェントが作成したコミットのAuthorが人間で、クレジットがCo-authored-by止まりであることに不満が出てきた。
AIがコミットする時にいちいちGPG鍵のパスワードを入力して再認証してやらないといけないのもダルい。
コミットAuthorをAIエージェント自身にさせることはできないだろうか?
GitHub Appsにコミットさせる
GitHub Appsでコミットさせられる予感はあったので、少し調べるとすぐにからあげ氏 ⧉の記事「GitHub AppをAIエージェントに使わせる方法 ⧉」を発見した。 この記事の「方法3」がまさにやりたいことである。
GitHub Appsを作成
やり方は記事に書かれている通りであった。
- GitHubのSettingsページからDeveloper Settingsを開く
- 「New GitHub App」ボタンをクリックし、以下を入力する(書いていない項目はデフォルト)
- GitHub App name:
conahcnuj(任意) - Homepage URL:
https://github.com/nahcnuj⧉(任意) - Webhook:
Activeのチェックを外す - Permissions: 無し(後で必要なものを設定する)
- GitHub App name:
- 「Create GitHub App」ボタンをクリックする
- 作られた
conahcnujアプリケーション ⧉の設定画面で、「Private keys」セクションの「Generate a private key」をクリックする - 秘密鍵ファイルを適当な場所にダウンロードする(ファイルのパーミッションを正しく設定する)
作成したアプリを自分のアカウントにインストールする。
- 先ほどと同じ設定画面から「Install App」をクリックする
- 自身のアカウントにインストールする
- インストール ⧉されたアプリの設定画面が開く
OpenCodeが署名付きコミットできるようにする
さて、記事ではこの後Pythonを使ってGitHub CLIのラッパーを作っているが、Powershellでなんとかしたい。 早速OpenCodeを使ってそのようなスクリプトを作らせることにした。
nahcnujのcopilotということでconahcnuj ⧉という名前にした。
Powershellなのは install.ps1 だけで、実際にはシェルスクリプトなのは御愛嬌。Windowsには bash.exe があるので問題ない。
リポジトリルートで以下を実行すると ~/.config/opencode/ 配下にプラグインが配置される(はず...?)。
./install.ps1
ラッパースクリプトの中身を知っているOpenCodeは自身の書いたスクリプトを使って、自分名義のコミットを署名付きで作った。
リポジトリのオーナーとして正真正銘のLGTM ⧉を付けることが出来た。
他のリポジトリにもコントリビュートさせたい
この仕組みを使って自分の別のリポジトリにも、コーディングエージェント名義で作業を行わせたい。
目下取り組んでいるところの自作AIストリーマー、馬可無序 ⧉(まか・むじょ)の makamujo リポジトリ ⧉をターゲットにする。
適当に立てていたissuesをやってみてもらった。
コーディングエージェントに作業させながらリポジトリにブランチ保護の設定をした。Approveなしにはマージできないようにした。
1つ ⧉はまあ上手く行ったのだが、もう1つ ⧉を(別のモデルに)やらせてみると上手くコミットが出来ない。
おそらく、コーディングエージェントがGH_TOKENを生成してコミットするラッパースクリプトの存在を認識できず、「ブランチ保護を外さないとマージできないから外してくれ」 ⧉と懇願されるほどだった。
OpenCodeの設定ファイルにコメントでしか書かれていないので多分それが原因なのだろうと思った。
// GitHub App "conahcnuj" (app id 4997044) として git 操作を行います。
// 仕組みは plugins/gh-app-token.ts (自動ロード) + gh-app/get-token.sh が
// インストールトークンを発行し、shell.env フックで GH_TOKEN と
// GIT_CONFIG_* (user.name/user.email/credential.helper/commit.gpgsign) を注入します。
頑張れ、conahcnuj!
