AIToday
大規模言語モデルAIコーディングZenn AI/ML掲載日時: 2026年11月8日 19:01

osFoundryが検知方式を比較

LINEで送る
osFoundryが検知方式を比較

3つのポイント

  1. 何が起きたか

    osFoundryがClaude Code 2.1.303の応答待ちを検知する3方式を検証。画面エミュレーション規則は実キャプチャ11件すべてに一致したが、出力末尾8KBの読み取りは5件のみだった。

  2. なぜ重要か

    Claude Codeは改行バイトなしでカーソル移動によりプロンプトを描画するため、プロンプト文がきれいな行として現れない。許可プロンプトを見逃すとエージェントセッションが停止しかねない。

わからないところ、AIに聞けます

質問と回答はこのページに公開されます。

こういう要約が、毎朝あなたのメールに届きます。

背景と解説

Claude Code 2.1.303は、スペースを書き込む代わりに\x1b[5GのようなCSIシーケンスでカーソルを固定列にジャンプさせて許可プロンプトを構築し、改行バイトを一切送らない。保存された11件のキャプチャ(2,099〜7,672バイト)はすべて改行バイトをゼロ個しか含んでいない。この設計により、出力末尾をgrepする安易な近道は通用しない。osFoundryの規則をPythonに移植し、各キャプチャの末尾8KBをエスケープシーケンス除去後、最後のキャリッジリターン以降のテキストを保持して採点したところ、実際にブロックされていた4件を含む全ケースでidleと判定された。見かけのプロンプト文も「Doyouwanttoproceed?」と連結してしまった。同じバイトを、文字、\r \n \b、カーソル移動、消去のみを扱う最小限の画面エミュレータに通すと、11件の状態をすべて正しく復元できた。

osFoundryデスクトップアプリはこの結論に従っている。terminal_pty.rsでは各セッションがvt100::Parserを保持し、検知にはエミュレート画面のscreen_text()のみを使う。その上の200行のスクロールバックは意図的に除外されている。応答済みで上にスクロールされたプロンプトがあると、ペインが永久にblockedと表示され続けてしまうからだ。

Claude Codeの文言と再描画の癖を模倣した代役エージェントによるライブ環境では、全ペインの700msスイープに中央値0.26秒、最大0.70秒の追加遅延が生じ、状態の残留は最大1サイクルだった。人が読むバッジとしては十分だ。自前で構築する人向けのプロジェクトの指針は次のとおり。エミュレート画面を分類すること、プロンプト固有のテキストとフッターを照合すること、blocked規則をworking規則より上に置くこと、エージェントを起動するプログラムにこれらの規則を編集させないこと、プロセステーブルは誰が実行中かを見る手段であり誰が待機中かを見る手段ではないと扱うこと。

よくある質問
無音を待つ方法が сигналとして使えないのはなぜか?
一部のツール呼び出しは0.5〜6秒静かに実行され、完了したターンも保留中プロンプトと同じくらい静かだ。30タスクのテストでは、5秒間の無音規則がアイドル時に18件の誤検知を出した。
osFoundryは古い「blocked」状態をどう避けるのか?
生のバイト末尾ではなく、エミュレートした32x120画面を分類する。コードはセッションごとにvt100パーサーを保持し、エミュレート画面のみを検知に渡し、200行のスクロールバックは意図的に除外する。
プロセスが待機中かどうかを機械的に判別できるか?
macOSでは不可能だ。端末読み取りでブロックされたプロセスとスピナーフレーム間でスリープ中のプロセスはどちらも状態Sを示し、CPU時間でも区別できないため、プロセス状態では保留中プロンプトを確認できない。
LINEで送る

あなたの仕事に関係するAIニュースを、毎朝お届けします。

業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。

登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →

AIに質問

この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。

質問と回答はこのページに公開されます。

このようなAIの動きを、御社の業界・競合に合わせて毎日届ける法人プランもあります → 詳しく見る

関連記事

次の記事へPangram AI DetectionがAI画像を検出