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を作成

やり方は記事に書かれている通りであった。

  1. GitHubのSettingsページからDeveloper Settingsを開く
  2. 「New GitHub App」ボタンをクリックし、以下を入力する(書いていない項目はデフォルト)
    • GitHub App name: conahcnuj(任意)
    • Homepage URL: https://github.com/nahcnuj(任意)
    • Webhook: Activeのチェックを外す
    • Permissions: 無し(後で必要なものを設定する)
  3. 「Create GitHub App」ボタンをクリックする
  4. 作られた conahcnuj アプリケーションの設定画面で、「Private keys」セクションの「Generate a private key」をクリックする
  5. 秘密鍵ファイルを適当な場所にダウンロードする(ファイルのパーミッションを正しく設定する)

作成したアプリを自分のアカウントにインストールする。

  1. 先ほどと同じ設定画面から「Install App」をクリックする
  2. 自身のアカウントにインストールする
  3. インストールされたアプリの設定画面が開く

OpenCodeが署名付きコミットできるようにする

さて、記事ではこの後Pythonを使ってGitHub CLIのラッパーを作っているが、Powershellでなんとかしたい。 早速OpenCodeを使ってそのようなスクリプトを作らせることにした。

nahcnujのcopilotということでconahcnujという名前にした。

Powershellなのは install.ps1 だけで、実際にはシェルスクリプトなのは御愛嬌。Windowsには bash.exe があるので問題ない。 リポジトリルートで以下を実行すると ~/.config/opencode/ 配下にプラグインが配置される(はず...?)。

./install.ps1

ラッパースクリプトの中身を知っているOpenCodeは自身の書いたスクリプトを使って、自分名義のコミットを署名付きで作った。

Add GitHub API commit helper and offline mock tests for CI by conahcnuj[bot] · Pull Request #2 · nahcnuj/conahcnuj

リポジトリのオーナーとして正真正銘の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!

馬可無序(まか・むじょ)- AI-VTuberニコニコ生放送で配信中馬可無序プロジェクト