委譲した CLI エージェントのハングはプロセス生存と成果物更新の乖離で検知し、長大プロンプトは分割して再委譲する
AIエージェント
AI協働
運用
バックグラウンドで委譲した非対話 CLI エージェント(codex の exec 実行やヘッドレス実行の Claude など)が止まっているかどうかは、プロセスの生存確認だけでは判定できない。生存(liveness)と進捗(progress)は別の信号として扱う。
検知の判断基準
プロセスが生きていても、次の 2 つが揃ったら「生きているが進んでいない」ハングと判断する。
- プロセスの累積 CPU 消費時間がほぼゼロのまま増えない(API 応答待ちで貼り付いている状態と区別がつく)。
- 変更対象の成果物ファイルの最終更新時刻が、委譲開始時刻より前のまま動いていない。
読解・思考フェーズにはある程度時間がかかるため数分では判断せず、成果物の更新ゼロが 15〜20 分続いたら疑う。監視側は委譲開始時刻を控えておき、対象ファイル群の更新時刻と突き合わせる。
原因になりやすいプロンプトの型と対処
多数のケース・条件分岐・注意書きを 1 つの委譲プロンプトに詰め込んだ長大な一括指示は、エージェントが出力を始められずハングしやすい。ハングと判断したらプロセスを終了し、タスクを独立したまとまり(テスト追加ならケース群の単位など)に分割して、それぞれ短いプロンプトで再委譲する。分割後に成果物の更新時刻が進み始めることで復旧を確認できる。
適用条件
- 非対話・ワンショット実行の CLI エージェント全般に適用できる。対話型セッションでは途中経過が見えるため、この検知はバックグラウンド委譲に特に効く。
- リトライだけで同じ長大プロンプトを再投入しない。ハングの原因がプロンプト側にある場合は再発する。