CLAUDE LABEN
MODEL — Claude Opus 4.8が登場。コーディング・エージェント・推論が4.7から向上し、価格は据え置きですCODE — Opus 4.8のFastモードが2.5倍速で動作し、従来モデルより3倍安く使えるようになりましたCODE — auto-modeのコマンド分類が拡張され、拒否履歴の記録やbashパスの自動補完が追加されましたENTERPRISE — カスタムロールでコネクタ権限を細かく設定でき、ロールごとに使えるツールを制御できますTEAM — SlackでClaudeをタグ付けし、作業を進めながらタスクを任せられるようになりましたMCP — MCPサーバー起動時の認証通知が追加され、接続状態を把握しやすくなりましたMODEL — Claude Opus 4.8が登場。コーディング・エージェント・推論が4.7から向上し、価格は据え置きですCODE — Opus 4.8のFastモードが2.5倍速で動作し、従来モデルより3倍安く使えるようになりましたCODE — auto-modeのコマンド分類が拡張され、拒否履歴の記録やbashパスの自動補完が追加されましたENTERPRISE — カスタムロールでコネクタ権限を細かく設定でき、ロールごとに使えるツールを制御できますTEAM — SlackでClaudeをタグ付けし、作業を進めながらタスクを任せられるようになりましたMCP — MCPサーバー起動時の認証通知が追加され、接続状態を把握しやすくなりました
記事一覧/API & SDK
API & SDK/2026-06-29上級

Claude API の Context Editing を入れたらエージェントが同じ調査を繰り返したとき — クリア境界とキャッシュ無効化を計測する運用メモ

Context Editing でツール結果を自動クリアしたら、エージェントが直前に読んだ内容を忘れて同じツールを呼び直し、キャッシュも毎回壊れてコストが上がった。沈黙する劣化を計測ログで切り分け、trigger・keep・clear_at_least を実測で決める運用メモです。

claude-api75context-editingcontext-management5agent9prompt-caching11cost-optimization22tool-use20

プレミアム記事

「コンテキストが軽くなったのに、むしろ遅くなった」という違和感

長く走らせるエージェントのコンテキスト肥大に手を焼いて、Context Editing の clear_tool_uses_20250919 を一行足したときのことです。トークン数のグラフは確かに下がりました。ところが体感の応答は速くならず、月末のトークン請求はむしろ増えていました。

ログを並べて分かったのは、エージェントが「さっき検索して読んだはずの内容」を忘れ、同じ web_search をもう一度呼び直していたことです。クリアされた結果のプレースホルダーだけが残り、Claude は「ここに何かあったが消えた」と判断して、足りない情報を取りに行き直していました。つまりクリアで減らしたトークンを、呼び直しの新しいツール結果で取り戻していたわけです。

個人開発で複数サイトの記事生成や監視を無人で回していると、こうした「数字は良くなったのに実害は悪化している」状態が一番やっかいでした。派手なエラーは出ません。静かにコストと品質だけが削れていきます。この記事は、その沈黙する劣化を計測で表に出し、Context Editing を入れて損をしない設定に落とすまでの手順をまとめたものです。

まず疑うべきは「クリア境界が会話の意味境界とズレている」こと

clear_tool_uses_20250919 は、古いツール結果から順にクリアします。問題は、Claude にとって「もう不要な結果」と「後続の判断にまだ効いている結果」の境界は、トークン数では測れないことです。keep(保持するツール使用回数)が小さすぎると、まだ参照したい結果まで消えます。

呼び直しループに入っているかどうかは、次の2系列を時系列で並べるだけで判定できます。ひとつは同一ツール・同一引数の重複呼び出し回数、もうひとつはクリア発動の前後でのキャッシュヒット率です。重複呼び出しが増え、かつキャッシュが頻繁に作り直されているなら、クリアが攻撃的すぎます。

# Context Editing 適用時のレスポンスから、クリア発動とキャッシュの実測値を取り出す
# 目的: 「クリアが効いた量」と「キャッシュが壊れたコスト」を同じ行で観測する
import anthropic, json, hashlib
 
client = anthropic.Anthropic(api_key="YOUR_API_KEY")
 
def call_with_context_editing(messages, tools):
    resp = client.beta.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=4096,
        messages=messages,
        tools=tools,
        betas=["context-management-2025-06-27"],
        context_management={
            "edits": [{
                "type": "clear_tool_uses_20250919",
                "trigger": {"type": "input_tokens", "value": 30000},
                "keep": {"type": "tool_uses", "value": 3},
                "clear_at_least": {"type": "input_tokens", "value": 5000},
            }]
        },
    )
    u = resp.usage
    # context_management の適用結果は usage 配下のサーバ報告値で確認する
    applied = getattr(u, "context_management", None)
    print(json.dumps({
        "input_tokens": u.input_tokens,
        "cache_read": getattr(u, "cache_read_input_tokens", 0),
        "cache_write": getattr(u, "cache_creation_input_tokens", 0),
        "context_edits": str(applied),
    }, ensure_ascii=False))
    return resp

cache_read_input_tokens がほぼゼロのまま cache_creation_input_tokens ばかり積み上がっていれば、クリアのたびにキャッシュプレフィックスが壊れています。これが「軽くなったのに高くなる」の正体です。

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

この記事の続きを読む

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

この記事で得られること
ツール結果クリアが引き起こす「呼び直しループ」を、ツール呼び出し回数とキャッシュヒット率の2系列ログで切り分ける具体的な計測手順
trigger・keep・clear_at_least・exclude_tools を推測ではなく実測トークン分布から決めるための、最小の検証ループとコード
Prompt Caching のキャッシュプレフィックス無効化コストとクリアの節約量を突き合わせ、入れて損する設定を事前に弾く判断基準
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API & SDK2026-06-24
ツール定義を一行直しただけで、キャッシュが丸ごと作り直しになりました — cache_control ブレークポイントの置き場所
ヒット率が突然ゼロに張り付いた原因は、揮発するブロックを安定したブロックより上流に置いていたことでした。prefix キャッシュのカスケード失効の仕組みと、安定→揮発でブロックを並べ替え、4つしかない cache_control ブレークポイントをどこに置くかを実装と判断表で整理します。
API & SDK2026-06-21
検索結果を二度運ばない — response_inclusion で消費済みブロックを応答から外す設計
dynamic filtering を有効にしたエージェントで出力トークンが膨らむ原因は、code execution が消費し終えた検索結果ブロックが応答に二重で乗ることにあります。response_inclusion を excluded にして安全に外せる条件と、full を保つべき条件を実装と判断表で整理しました。
API & SDK2026-06-24
毎朝のバッチでプロンプトキャッシュが毎回ミスしていた — 1時間TTLを延命するウォーミング間隔と損益分岐の出し方
数時間おきに走る定期実行では、1時間TTLのプロンプトキャッシュでも毎回コールドミスします。中身を変えずにTTLを延命するウォーミングの間隔をTTLから逆算し、読み取りコストを織り込んだ損益分岐を式で出す方法を、4サイトの自動生成パイプラインの実測とともにまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →