【要約】Claude Code の Remote Control が固まる問題を、Python ウォッチドッグで自動復旧する [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
macOSでClaude CodeのRemote Control機能を利用するユーザーが、スマホからの承認操作後にセッションが停止する問題に直面している。具体的には以下の課題がある。
- ・現象: スマホで承認してもターミナルが
waiting状態のまま更新されない。 - ・制約: PCのスリープ中などは、手動でのマウス操作による復旧が困難である。
- ・影響: セッションがロックされることで、作業の中断を余儀なくされる。
// Approach
監視役(Python)と起動役(Shell)の2つのスクリプトに責務を分離し、自動復旧を実現する。具体的な手法は以下の通りである。
- ・検知:
~/.claude/sessions/<pid>.jsonを読み、statusとupdatedAtを確認する。 - ・判定:
waiting状態なら120秒、busy状態なら600秒の経過を異常とみなす。 - ・復旧: Pythonがプロセスを
killし、Shellのwhileループが--continue引数を用いて同じタブ内で再起動する。
// Result
Claude CodeのRemote Control利用時における、セッション固まり問題の自動解決を実現した。得られた成果は以下の通りである。
- ・低コスト: LLMを使用しないため、トークン消費がゼロで決定論的に動作する。
- ・高可用性: 同じターミナルタブ内で再起動するため、画面オフの状態でも復旧が可能。
- ・継続性:
--continue引数により、中断した作業の履歴を保持したまま再開できる。
Senior Engineer Insight
> 監視と復旧の責務を分離した設計は、実戦的で非常に優れている。状態ファイルという「真実のソース」を利用することで、CPU負荷やログ解析といった不確実な要素を排除し、高精度な検知を実現している。ただし、内部仕様への依存は運用上のリスクだ。実戦投入時は、対象ツールのアップデートによる仕様変更を継続的に監視する体制が不可欠である。