CLAUDE LABEN
MODEL — Claude Opus 4.8とHaiku 4.5がMessages APIで利用可能になり、コーディングやエージェント処理に使えますCODE — Claude Codeが/rewindで/clear前の会話に戻れるようになり、MCPの信頼性とOAuthの再試行も改善されましたCODE — ストリーミング時のCPU使用が約37%削減され、長時間セッションの安定性が向上しましたCLOUD — ClaudeがMicrosoft Foundry(Azure)で一般提供され、Azureネイティブで利用できるようになりましたSECURITY — 静的APIキーをWIF(短命・スコープ付き資格情報)へ置き換えられるようになりましたPOLICY — 米政府がMythos 5モデルを約100社・連邦機関へ限定提供することを許可しましたMODEL — Claude Opus 4.8とHaiku 4.5がMessages APIで利用可能になり、コーディングやエージェント処理に使えますCODE — Claude Codeが/rewindで/clear前の会話に戻れるようになり、MCPの信頼性とOAuthの再試行も改善されましたCODE — ストリーミング時のCPU使用が約37%削減され、長時間セッションの安定性が向上しましたCLOUD — ClaudeがMicrosoft Foundry(Azure)で一般提供され、Azureネイティブで利用できるようになりましたSECURITY — 静的APIキーをWIF(短命・スコープ付き資格情報)へ置き換えられるようになりましたPOLICY — 米政府がMythos 5モデルを約100社・連邦機関へ限定提供することを許可しました
記事一覧/API & SDK
API & SDK/2026-06-30上級

ツール出力が大きすぎてコンテキストを溶かす問題 — カーソルで小分けに返すページング設計

一覧系のツールが数百件をそのまま返すと、エージェントのコンテキストは一回の呼び出しで溶けます。カーソルベースのページングでツール出力を小分けに返し、トークン予算を守る設計を実装コード付きで解説します。

Claude API94Agent SDK4MCP38コンテキスト管理3トークン最適化3

プレミアム記事

個人開発で4つの技術ブログを自動運用していると、エージェントに「公開済みの記事一覧を見せて」と頼む場面が一日に何度も訪れます。あるとき、その一覧を返すMCPツールが400件あまりのタイトルとスラッグをまるごと返し、たった一回の呼び出しでコンテキストウィンドウの体感2割ほどを食い潰しました。

会話のまだ序盤です。これから記事を生成し、品質ゲートをかけ、pushまで走らせなければなりません。にもかかわらず、最初のツール呼び出しだけで予算の入り口がふさがれてしまった。手が止まりました。

原因ははっきりしています。ツールが「全部」を返していたからです。エージェントが本当に必要としていたのは、最新の数十件と「まだ続きがある」という事実だけでした。以下では、その落とし穴を埋めるカーソルベースのページングを、署名付き不透明カーソルの実装まで含めて組み立てます。

なぜ「全件返す」ツールがエージェントを壊すのか

通常のWeb APIなら、レスポンスが多少大きくてもクライアントが受け取って捨てるだけです。ところがエージェントの場合、ツールの戻り値はそのまま次のターンの入力トークンになります。一覧が大きいほど、以降の全ターンでその重みを背負い続けることになります。

実測してみました。私の記事一覧ツールは、1件あたりタイトル・スラッグ・カテゴリ・公開日・タグを返します。日本語タイトルを含むので、1件あたりおよそ45トークン。400件で約18,000トークンです。これが会話の冒頭に居座ると、後続のシステムプロンプト・生成指示・コード片と合わさって、まだ何も作っていないのに予算の足元が崩れます。

さらに厄介なのは、この出力がプロンプトキャッシュと相性が悪い点です。一覧は記事を追加するたびに変わるため、巨大かつ揮発性の高いブロックになります。キャッシュの安定ブロックと揮発ブロックを分離する設計をしていても、この一覧だけは毎回キャッシュミスを生み続けます。

オフセット方式では足りない理由

「ではページングすればよい」と考えて、まずオフセット方式(offsetlimit)を試しました。実装は最も単純です。

def list_articles_offset(offset: int = 0, limit: int = 20):
    rows = db.query(
        "SELECT slug, title, category, published_at "
        "FROM articles WHERE status = 'published' "
        "ORDER BY published_at DESC LIMIT ? OFFSET ?",
        (limit, offset),
    )
    return {"items": rows, "next_offset": offset + limit}

これで1ページ20件、約900トークンに収まりました。18,000トークンからおよそ95%の削減で、トークン量だけ見れば成功です。

ところが運用に乗せてすぐ、エージェントが同じ記事を二度処理する事故が起きました。エージェントが1ページ目を見て検討している最中に、別のスケジュールタスクが新しい記事を1本publishしたのです。published_at DESC の並びでは、新記事が先頭に割り込みます。その結果、もともと20番目だった記事が21番目へ押し出され、offset=20 の2ページ目で再び現れました。逆に、削除が起きれば取りこぼしが発生します。

オフセット方式は「並びが固定されている」という前提に立っています。エージェントの世界では、その前提がしばしば成り立ちません。複数のタスクが同じデータを並行して触るからです。

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

この記事の続きを読む

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

この記事で得られること
一覧系ツールが400件を一括返却して約18,000トークンを消費していた箇所を、1ページ20件・カーソル方式で約900トークンまで削減した実装手順
オフセット方式が陥る重複・取りこぼしを避ける、不透明カーソル(opaque cursor)の署名付きエンコード実装(Python / TypeScript)
エージェントが『次のページを取りに行くべきか』を自分で判断できるよう、has_more と要約メタ情報をツール結果に同梱する設計指針
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API & SDK2026-06-29
ツールが返す画像を Claude に「見せる」 — tool_result を画像ブロックにしてトークンを約10分の1にする
ツールが返した画像を tool_result に文字列で詰めると、同じ画像が約10〜20倍のトークンを消費します。image コンテンツブロックとして返す正しい組み立て方と、SDK 実装・コスト見積もり・落とし穴を実コードでまとめました。
API & SDK2026-06-28
接続が切れた瞬間、その投稿は通ったのか — 無人パイプラインで MCP 書き込みを二重実行せずにやり直す
接続断で中断した MCP の書き込みツール呼び出しは、サーバー側で実行されたかどうか分かりません。素朴な再試行が二重投稿を生む理由と、冪等キーと照合読み取りで安全にやり直すラッパーの実装を、無人パイプラインの実例とともにまとめました。
API & SDK2026-06-25
API リクエスト1本でリモート MCP サーバーに直接つなぐ — Messages API の MCP コネクタ実装メモ
ローカルに MCP クライアントを立てずに、Messages API の mcp_servers と mcp_toolset だけでリモート MCP サーバーのツールを呼ぶ実装をまとめました。allowlist/denylist 設計、レスポンス処理、無人運用での落とし穴まで。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →