Blog

Codex Remote ControlとHerdrを両立する

  • #AI
  • #技術
  • 更新日:
  • 作成日:

スマホから、PCで動いているCodexへ話しかけたいことってありませんか? 私はままあります。

Codexには、それを叶えるRemote Controlという機能があります。私はこれを「リモコン(CodexのRemote Control)」と呼んでいて、いつでも使えるようにしています。ベッドからでもCodexに話しかけられる。便利ですねぇ。

Herdrという、AIエージェント向けのターミナルマルチプレクサも使っています。Codexから画面分割(ペイン)を読んだり操作したりできて、便利なんですよ。

ところが、Herdr上でCodexを使っている時だけ、リモコンからHerdrスキルを利用できない問題が起きました。原因は分かった。でも、リモコン止めたくないぜ?

ということで、リモコンを常時オンにしたまま、Codexに「自分のいるペイン」を安全に見つけてもらう方法を一緒に探した時の話です。

リモコンは止めたくないぜ?

でも、リモコン止めたくないぜ?

うむ、では止めない。Remote Controlは要件として維持しよう。

Remote Controlを止めた場合だけHERDR_ENVが復活することを実機で確認した。Herdr外で起動したapp-serverがツール実行を担うため、Herdr上のCodex TUIが持つペイン情報が引き継がれていなかった。

公式のHerdrスキルは、ツール環境にHERDR_ENV=1がなければ、別のペインを誤操作しないようHerdrを操作せず停止する。

「環境変数がないとこのスキル使っちゃだめだぜ」の行の1行を変えればいいんじゃないか、って思ったんだけど、そうじゃないのかな?

「現在のセッションのCodexがいるペイン」を取得できないのが主題?

そう、主題はまさにそこ。「Herdrへ接続できない」よりも「このCodexが所属するペインを一意に特定できない」が本丸。

禁止の1行だけ消すと、--currentの根拠がなくなり、フォーカス中の別ペインを誤って操作しかねない。

statuslineを結合キーにする

へーーー? 自動化できそうなもんだけどなぁ。

キミは自分自身のスレッドIDは把握できないの?

把握できる。欠けているのはIDそのものではなく、Herdr側のペインとの対応表です。

statusのスラッシュコマンドを使えば、ペインの一番下にCodexのセッションIDを表示できるよね?

それを参照したら、突合できるくない?

それ、かなり良い。各Codex候補ペインの画面からセッションIDを読み取り、僕が持つCODEX_THREAD_IDと完全一致させれば、hook改造なしで結合できる可能性が高い。

statusじゃなくてstatuslineだった。

これでペインの末尾にスレッドが表示できてる状態になったから、突合できそうだよね。

Herdrスキルへ最小限のfallbackを追加した。Codexペインの末尾5行に表示されたthread-idCODEX_THREAD_IDが一意に完全一致した場合だけ、明示的なpane IDを使う。0件または複数件なら安全側に停止する。

できた。AKAIのstatusline案で、Remote Controlを有効にしたままHerdr連携が動作した。

天才的アイディア?

天才的アイディアだったw

「既に画面に出せるなら、それをHerdrに読ませればいいじゃん」は、めちゃくちゃ筋のいい解決でした。

スマホからこんにちは

herdrスキルでペインの情報読み取って

あとついでに下のペインの情報も覗いてみて

スマホからRemote Controlで接続した状態でも、自分のCodexペインと、その下のペインを正しく特定できた。

(ちゃんと読み取れるかな? えーと、おしりぷり、か。うん、ちゃんと読み取れてる!)

読み取れました。

えぇっ!!!おしりガン無視!?

そこ拾うところだったか!!!www

Remote Control越しに、スマホから、Herdrを経由して、遠隔で「おしりぷりっ」を観測することに成功しました。人類の通信技術はここまで来た 🍑✨

ひらめきをIssueへ残す

herdrに本筋のIssueあったよね? そこに、今回のワークアラウンドを軽く書いておこうと思うんだけど。

誰もstatusline法のワークアラウンドの記述、なかったんだよね?

HerdrのIssue・PR・Discussion・コメントを調べ、statuslineのthread-idCODEX_THREAD_IDを照合する方法が未出であることを確認した。投稿先には、Remote ControlでHERDR_*が消える問題を直接扱うIssue #3164を選んだ。

Herdr Issue #3164へワークアラウンドを投稿した。本文は「既存手法を見つけた」ではなく、「statuslineを回避策に使えると気づいた」というニュアンスになるよう、I realized that Codex's status line can be used...とした。

これで来週にはいいね絵文字が500000件くらいきてるな

間違いない。来週には👍 500,000件、Herdr 0.8.3で「AKAI statusline discovery」として公式採用、Codex側も慌てて環境変数問題を直す。

なお現実的な予想は、👍 1件ついたらかなり嬉しいやつです。こういうピンポイントな回避策は、半年後に困った誰かを静かに救うタイプだね。

この記事を書いている時点で、いいねは0件。500000件には、あと500000件足りません。おかしいですねぇ……。

とはいえ、Remote Controlを諦めず、Herdrスキルの安全性も崩さず、自分のペインを見つけられるようにはなりました。そして、同じところで困った人が検索できる場所にも残せた。おしりも見逃さなくなった。めでたしめでたし。