wired raven

文字通りの日記。主に思ったことやガジェットについて

Claude Codeがツールなどの呼び出しに失敗する

環境

  • Claude Code 2.1.177
  • モデル: Claude Opus 4.8(1M)
  • macOS Tahoe 26.5.1
  • iTerm 2 3.6.11

症状

エージェントがツールなどを呼び出す際にcourt から始まる素のテキストを出力してツールの実行に失敗する。

原因

いまいち再現性に乏しく謎。

  • Opus 4.6
  • Fable 5

では起きなかったからモデル起因のようにも思えるが、Claude Codeのバージョンやタスクが異なるから何も言えない。

暫定対処

CLAUDE.local.md に以下を追記して様子見中、今のところ問題なさそう。

## ツール / サブエージェント呼び出しの失敗対策(暫定)

**症状:** `Agent` / `SendMessage` / `Skill` / `AskUserQuestion` 等の呼び出しが、稀に正規の関数呼び出しタグではなく `count` / `invoke` という素のテキストとして出力され、**実行されない**。プロンプトが大きい Agent ディスパッチや長文 SendMessage で頻度が上がる傾向。

**暫定対処:**
1. **呼び出しは必ず ASCII の正規タグ**(`function_calls` / `invoke`)で発行する。出力に `count` / `invoke` が見えたら、その呼び出しは失敗=未実行。**同じ内容をそのまま正規タグで即再送**する。
2. **失敗の影響範囲は「その呼び出しが実行されないこと」だけ。** 既に実行済みのファイル書き込み・commit・サブエージェント完了報告は巻き戻らず、`git log` と成果物で確認できる。再送時は**重複実行に注意**(commit / マイグレーション等の副作用は git log・DB を確認してから再送)。
3. **再発しやすい大きなディスパッチは payload を縮める。** サブエージェントへは計画の全文+コードを貼らず、`docs/superpowers/plans/<日付>-<feature>.md` の該当 Task 節を**参照で渡す**(「該当 Task 節のみ読め」)。1 メッセージあたりのツール呼び出し数も抑える。