◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/API & SDK
⬡ API & SDK/2026-03-31上級

Claude API で自己修復型AIエージェントを構築する — エラー検出・自動リカバリ・グレースフルデグラデーションの本番実装パターン

障害を自動検出して自己修復する本番向けAIエージェントをClaude APIで構築します。エラーの7分類と最適なリカバリ戦略、指数バックオフ付きリトライ、コンテキスト圧縮による自動回復、Supervisorパターンでのマルチエージェント修復、ツール呼び出しのフォールバックチェーンまで実装します。

claude-api83agent11self-healingerror-handling10production87resilience8typescript11

✦ プレミアム記事

ようやく腹を据えて「自動復旧」を設計に組み込んだ夜

個人開発でアプリやサービスを一人で運用していると、いちばん神経を使うのは「深夜に何かが壊れたとき」の対応です。課金まわりの検証、外部 API の呼び出し、自動応答 — どれも止まると翌朝の収益と評判に直撃します。

Claude API でエージェントを組み始めた頃、私もご多分に漏れず「うまく動いたとき」のデモコードばかり書いていました。レート制限、ツールタイムアウト、モデルの幻覚 — 「起きる前提」で設計していなかったのです。

実運用に入ると、AI エージェントの障害は通常のサーバ障害と質が異なる、ということに気づかされます。429 が返ってきた一つの事象に対して、対応すべき選択肢は「再試行」「モデル変更」「コンテキスト圧縮」「人間にエスカレーション」の4種類に増えます。サーキットブレーカーを噛ませるだけでは足りないのです。

ここで取り上げる「自己修復型(Self-Healing)」エージェントは、こうした AI 特有の障害をエージェント自身が分類し、最適な復旧戦略を選んで実行する仕組みです。Dolice Labs の Claude Lab・Gemini Lab・Antigravity Lab・Rork Lab を 4 サイト並行で運用している経験から、机上の理論ではなく「夜 3 時に呼び出されないために」必要なパターンを、TypeScript の動くコードで順番にまとめていきます。

公式ドキュメントには書かれていない自己修復実装の6つの落とし穴

本題に入る前に、私自身が Claude API を本番で運用して気づいた、SDK のリファレンスには明示されていない落とし穴を6つ共有します。これを先に押さえておかないと、後半のパターンを実装しても本番でハマります。

1. 429 だけでなく 529 (overloaded) も返ってくる

Anthropic.APIError を分類する際、レート制限(429)以外に「リージョン全体の過負荷」を示す 529 が返ってくることがあります。529 には retry-after ヘッダがほぼ付かないので、429 と同じバックオフロジックでは対応できません。実測では、529 は数分続いた後に自然回復するケースが多いので、私は「指数バックオフ最大 60 秒 → 60 秒以上経っても回復しなければモデルを切り替え」というロジックにしています。

2. ツールタイムアウト時は空文字列ではなくエラー文字列を返す

AbortController でツール実行をタイムアウトさせた場合、Claude 側はその tool call が完了したものとして次のメッセージを待ちます。ここで tool_result に空文字列を入れると、後続の parsing で例外が出るケースに何度か遭遇しました。私は必ず "ERROR: tool timed out after 30s, please proceed without this data" のような英語の説明文を入れています。Claude は英語のエラー文字列の方が正確に解釈してくれる傾向があります。

3. ストリーミング切断時の復元には tool_use_id の保持が必須

stream: true で stop_reason: tool_use の途中で接続が切れた場合、再接続時には同じ tool_use_id を持つ tool_result を含めてリクエストを再構成しないと、Claude は文脈を見失います。私は tool_use_id をローカルの SQLite にスナップショット保存し、ストリーム再接続時にリプレイする実装に落ち着きました。

4. Supervisor を Sonnet にすると意外と高くつく

最初は「障害監視も賢いモデルがいい」と考えて Supervisor を Sonnet で組みました。が、実測で 1 障害あたり約 3,000 token = 約 ¥1.5 のコストがかかります。日次 1,000 障害(小規模なエージェントでも本番ではこの程度起きる)なら ¥1,500/日 = 月 ¥45,000。Haiku で Supervisor を書き直したら、品質はほぼ変わらず コストは約 1/4 になりました。Supervisor は「分類するだけ」のタスクなので、Haiku で十分です。

5. コンテキスト圧縮の summary が幻覚を起こす

コンテキストが長くなったとき、別の Claude 呼び出しに summary を作らせるアプローチは便利ですが、その summary 自体が幻覚を起こします。具体的には、過去のツール実行結果を要約するときに「成功」と「失敗」を取り違える事故が起きました。対策として、私は temperature: 0 + system プロンプトに「ファクトのみ要約し、推測を加えてはならありません。不明な点は『不明』と明記せよ」と縛りを入れています。これで幻覚は劇的に減りました。

6. Cloudflare Workers ではエージェントループは設計しにくい

Dolice Labs の各サイトは Cloudflare Workers + OpenNext で動かしていますが、Workers の CPU time limit(無料 50ms、有料でも 30 秒)に長時間のエージェントループは収まりません。Self-Healing のリトライを 3 回回すと、それだけで普通に超えます。エージェントの実行基盤は Lambda・Cloud Run・自前 VM の方が向いています。Workers 上ではエージェントの「結果保存」と「軽量な状態遷移」だけ担当させ、本体は別レイヤに置くのが私の運用解です。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦AI エージェント特有の7種類のエラーを分類し、それぞれに最適なリカバリ戦略を割り当てる本番実装
✦Supervisor パターン・フォールバックチェーン・グレースフルデグラデーションを TypeScript で動かす完全コード
✦個人開発でアプリと複数サイトを一人で運用するなかで学んだ、夜中に呼び出されないための可観測性とコストのバランス設計
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⬡ API & SDK2026-03-27
Claude API プロダクション耐障害設計パターン — モデルルーティング・サーキットブレーカー・フォールバック戦略の実装ガイド
Claude APIを本番運用で支える耐障害設計の実装パターン。サーキットブレーカー、モデルルーティング、フォールバックチェーン、リトライ戦略、ディザスタリカバリをTypeScriptの実装コードと、運用で気づいた注意点を添えて整理しました。
⬡ API & SDK2026-05-22
Claude API の tool_result could not be submitted が再発しないための回復ハンドラ設計
Claude API でエージェントを長時間動かしていると、ある日突然 'tool_result could not be submitted' が連発し始めることがあります。再試行しても直らない、ストリーミング途中で死ぬ、そして次のセッションでもまた出る — 常時稼働のエージェント基盤で実際に踏み抜いた4種類の原因と、TypeScript で書いた回復ハンドラの実装を整理しました。
⬡ API & SDK2026-05-09
Claude API の 400/422/529 を“呼ぶ前”に消す5層プリフライト設計 — 月数百件の失敗呼び出しをゼロにした実装
Claude API の 400/422/529 エラーを“呼ぶ前”に止める5層プリフライト設計を、TypeScript の完全実装と運用1ヶ月分の数値でまとめました。失敗呼び出しのコスト・リトライ・通知ノイズを同時に削減できます。