Codex Remote ControlとHerdrを両立する
スマホから、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-idとCODEX_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-idとCODEX_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スキルの安全性も崩さず、自分のペインを見つけられるようにはなりました。そして、同じところで困った人が検索できる場所にも残せた。おしりも見逃さなくなった。めでたしめでたし。