ターミナルに「今なにしてる?」と聞ける新プロトコル OSC 7501 が登場
A Terminal Protocol for Program Status (OSC 7501)
Mitchell Hashimoto氏が、プログラムの状態をターミナルに直接伝える新しいエスケープシーケンス「OSC 7501 Program Status Protocol」を仕様化した。idle、working、blocked、done、errorといった状態をkey=value形式で送信でき、coding agentの進捗把握やエージェント型受信箱の課題を根本から解決する。既存のヒューリスティックや独自APIに依存しない、ターミナルネイティブで汎用的な仕様だ。
もう、プログラムが何をしているかを画面やプロセスツリーから推測するのはやめにしよう。プログラム自身がすでに知っているのだから、教えてもらう方法を与えよう。
HNでの議論
33- drewg123
BSD系には、これと同様のものが何年も前からあります。ターミナルで ^T を押すと、待機中のアプリケーションに SIGINFO が送られます。デフォルトでは、プログラム名、何でブロックされているか、real/user/sys時間とメモリ使用量の情報が得られます。
emacsウィンドウをフォアグラウンドで起動した場合:
% emacs
^T
load: 0.32 cmd: emacs-31.1 64938 [select] 2.89r 0.75u 0.06s 6% 122404k
- Vegenoid
アイデアは好きですが、すでにターミナルベルがあります。自分の環境では、エージェントが完了したり何か必要としたりすると、ベルを鳴らします。設定に基づいて、ターミナルにいなければデスクトップ通知になり、ターミナルにいればマルチプレクサからトーストが出ます。ターミナルペインのタイトルには色付きの「ベル」アイコンが表示され、そのペインにアタッチするとクリアされます。
記事でターミナルベルについて全く言及されていないのは奇妙です。プロトコルを真剣に受け止めてもらうためには、これに対処する必要があると思います。より詳細な情報は素晴らしいですが、ベルのシンプルさもまた素晴らしいです。
- bugcheck7b
これはクールですね、zellijやghosttyを通じてカスタム通知OSCをいじって遊んでいました。
各ホップでリバースルートをエンコードするカスタムキーで自分用に完全に拡張して、それを発したウィンドウ/タブ/ペインに簡単にジャンプしたり、許可の承認/拒否などのカスタムアクションを特定のペインに送り返したりできるようにするつもりです。
- weinzierl
私は何十年もこれの貧乏人版を使っています。
私のiTerm2は、タブにアクティビティ、新規出力、ビジュアルベルを表示するように設定されています。LinuxではWezTerm用の近似があります。
パイプラインやシーケンスで使って、興味のあるイベントでベルを鳴らすためのbellコマンドがあります。些細なケースはプログラムが終了したときです。
シェルコマンドシーケンスで使える便利なエイリアスがあり、ターミナルベルを送るのに加えて、直前のコマンドの終了ステータスに応じて異なるサウンドを生成します。
- eschaton
ステータスラインをサポートするターミナルでステータスラインを設定するのと比べてどうですか?