Cline がコマンド実行中に応答しなくなり、パネルが固まった(「Resume Task」から進まない、ボタンを押しても無反応など)ときに、原因をログとタスク履歴から特定する手順のメモ。
Devin(VS Code フォーク)の場合、アプリ名のフォルダの下に通常の VS Code と同じ構造でログと拡張機能ストレージが入っています。
~/Library/Application Support/Devin/logs/<セッションID>/
main.log … アプリ全体
window1/exthost/exthost.log … 拡張機能ホストのログ(ウィンドウごと)
window1/exthost/output_logging_*/1-Cline.log … Clineの出力パネルのログ
ptyhost.log, terminal.log … ターミナル周り
~/Library/Application Support/Devin/User/globalStorage/saoudrizwan.claude-dev/
tasks/<タスクID>/ui_messages.json … 画面に表示される全メッセージ履歴
tasks/<タスクID>/api_conversation_history.json … AIとのやり取り(APIリクエスト単位)
VS Code 本体の場合は Devin の部分が Code になります。他のフォークでもアプリ名を ~/Library/Application Support/ 配下で探せば同じ構造が見つかります。
tasks/ 配下で最近更新されたタスク ID を探し、ui_messages.json の末尾を見ます。
ls -lat ~/Library/Application\ Support/Devin/User/globalStorage/saoudrizwan.claude-dev/tasks | head
python3 -c "
import json, datetime
with open('.../ui_messages.json') as f:
data = json.load(f)
for m in data[-10:]:
ts = m.get('ts')
t = datetime.datetime.fromtimestamp(ts/1000) if ts else None
print(t, m.get('type'), m.get('say') or m.get('ask'), str(m.get('text',''))[:200])
"
止まる直前の最後のメッセージの種類に注目します。
ask: resume_task … タスクのセッションが途切れ、再開待ちになっている典型パターン。say: command の後に何も続かない … コマンドを送ったが結果が返ってきていない。say: api_req_started のまま止まる … AI へのリクエスト自体が返ってきていない。UI 上は固まっていても、裏では実際にコマンドが完了していることが多いです。ログだけで判断せず、実体を直接確認します。
/tmp/xxx.log など)のタイムスタンプと中身を見る。ps aux | grep <名前> で確認。which や ls で実在するか確認。止まっている時間帯に exthost.log / terminal.log / ptyhost.log に何も追記されていない場合、拡張機能ホストがクラッシュしたのではなく、「ターミナルの完了通知が Cline に届いていない」という同期ズレが起きている可能性が高いです。
# コメント入りの複数行コマンドインタラクティブな zsh は既定で # をコメントとして扱いません(setopt interactive_comments が無効)。AI が生成したコマンドに # 説明 のような行が混ざっていると zsh: parse error near ')' のようなエラーになり、そこからターミナル統合の状態がおかしくなることがあります。
対策: ~/.zshrc に setopt interactive_comments を追加。
コマンド文字列を流し込むタイミングとシェル側の準備完了のタイミングが競合し、先頭文字が二重化する(echo → eecho など)文字化けが起きることがあります。この文字化けがシェル統合のコマンド境界検出を壊し、以降ずっと「完了待ち」のまま無応答になります。
対策: 1 回のコマンド実行を短く・少ない行数に分割するよう、.clinerules などでカスタム指示を入れておく。
Cmd+Shift+P → Developer: Reload Window。タスク履歴はディスク(globalStorage/tasks/)に保存されているので消えない。~/.zshrc に setopt interactive_comments を追加。.clinerules を置き、「大量の複数行コマンドを一度に送らず、短いコマンドに分割する」よう明示的に指示しておく。