CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/API & SDK
API & SDK/2026-05-19上級

Claude API のチャット履歴を階層サマライズする:3 段階圧縮でトークンを 70 % 削減した設計

壁紙アプリのインアプリ AI チャットで増え続ける履歴トークンを抑えるため、直近ターン・中期エピソード・長期エンティティの 3 層に分けて圧縮する設計を、TypeScript の動くコードと 7 週間の運用データつきで記録しました。月額 API 費用を $480 から $145 まで下げています。

claude-api81chat-historysummarization2token-optimizationproduction87

プレミアム記事

2026 年 4 月の中ごろ、運営している癒し系の壁紙アプリに組み込んだインアプリ AI チャットが、突然 1 セッションあたりの API コストを倍に押し上げ始めました。月のグラフで気付いたわけではありません。アプリ内のレスポンスがじわじわ重くなっていることをユーザーレビューで指摘されて、ようやくダッシュボードを開いたのです。原因は単純で、長く会話するユーザーほど履歴が膨らみ、毎回その全文を messages に詰めて送り続けていました。直近 40 ターンで input_tokens が 18,000 を超えるセッションも珍しくない状態です。

2014 年から個人でアプリを作り続けて、累計 5,000 万ダウンロードを超えるあいだに、サーバー側の課金事故は何度か味わってきました。けれども、Claude API の場合は「成功しているのに焼ける」というのが特徴です。会話は止まっておらず、ユーザー満足も悪くありません。それでも履歴が線形に伸びていく以上、input_tokens のグラフは静かに右肩上がりです。私は数日かけて、履歴を捨てるのではなく階層的に圧縮する設計に切り替え、結果として入力トークンを 7 週間の平均で 70 % 削減できました。

この記事は、その階層サマライゼーションを 3 層構造で組み直した実装記録です。Tier 1(直近ターンの忠実保持)、Tier 2(中期記憶の Haiku 要約)、Tier 3(長期記憶の Sonnet 抽象化)を分業させ、トリミング 1 つでは到達できない圧縮率と意味保持の両立を狙います。コードは Cloudflare Workers + TypeScript で動かしている本番版から再構成しました。

個人開発 12 年で見えた「履歴問題」の正体

履歴問題は、messages 配列に過去のターンを足し続けるだけのチャット設計につきまといます。短いセッションでは無視できる量ですが、ヘビーユーザーは平気で 80 ターン、100 ターンと続けます。私の壁紙アプリでも、長期利用者の上位 5 % が API コストの 38 % を消費していました。AdMob 経由の広告売上でこのコストを吸収する設計だったので、上位ユーザーが課金で報われない構造になり、放置できないと判断しました。

トリミング戦略の落とし穴

「履歴を 10 ターンで切る」という単純なトリミングを最初に検討しましたが、これは捨てたくない情報まで捨てる可能性があります。たとえば「あなたが先に教えてくれたカラーパレットの好み」「過去に却下したテーマ」のような、会話の文脈を作っている要素は、20 ターン前に出てきても次のリクエストで参照したいものです。トリミングは安いですが、ユーザーの「覚えていてくれない感」を生みます。実体験として、レビュー欄で「設定を毎回聞いてくる」「前に話したことを忘れる」と書かれることが何度かありました。

「忘却」ではなく「圧縮された記憶」

階層サマライゼーションは、この「直近の流れ」と「長期の文脈」を別々に扱う発想です。直近ターンは生のまま保ち、古いターンは要約に置き換え、さらに古いものは抽象化したエンティティ集合に落とします。トリミングが「忘却」だとすれば、階層サマライゼーションは「圧縮された記憶」だと考えています。1997 年にインターネットに触れたころに憧れた「コンピュータが自分のことを覚えていてくれる」という感覚を、現実的なコストで実現するための設計とも言えます。

3 層構造で履歴を圧縮する全体像

私の本番設計は、会話履歴を次の 3 つの Tier に分けています。

Tier内容圧縮方法想定トークン
Tier 1直近 6 ターン生のまま保持約 2,500
Tier 2中期エピソード(要約済み)Haiku 4.5 で 200 トークンに要約各 200、合計 800〜1,200
Tier 3長期エンティティ・意図Sonnet 4.6 で抽象化した JSON約 600

Tier 1 の役割

Tier 1 は会話の連続性を保つために生のまま送ります。直近 6 ターンを残しているのは、ユーザーが「さっきの返信を変えてほしい」「3 つ前の提案に戻して」と参照する範囲が、私のアプリでは 5〜7 ターンに収まることが多かったからです。これより短いと文脈飛びが起き、これより長いとトークン削減効果が頭打ちになります。

Tier 2 の役割

Tier 2 は中期記憶です。会話が伸びるにつれて「8 ターン前から 14 ターン前までの 1 セット」を 1 つのエピソードとして扱い、Haiku 4.5 で 200 トークン程度に要約します。Haiku を選んでいるのは、要約という比較的軽い推論タスクに対して費用対効果が圧倒的に高いからです。私のメトリクスでは、Haiku の要約品質は Sonnet と比べて主観評価で 88 % 相当を保てており、要約 1 回あたりのコストは Sonnet の 約 1/6 で済みます。

Tier 3 の役割

Tier 3 は長期記憶です。エピソードが 3 つ以上溜まったら、それらを横断的に眺めて「ユーザーが繰り返し求めていること」「明示的に拒否したこと」「進行中の選好(カラー・モチーフ・気分)」を JSON 構造に抽象化します。ここだけは Sonnet 4.6 を使います。意図抽出は要約より難しく、Haiku に任せると重要なエンティティを取りこぼすことが運用で確認できたためです。アーティストとして自分の作品制作のスケッチを整理するときの感覚に近いもので、Tier 2 は「描いた絵を縮めて並べる」、Tier 3 は「描いた絵から繰り返し現れる主題を抜き出す」という比喩が、私の中では合っています。

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

この記事の続きを読む

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

この記事で得られること
Tier 1〜3 の階層サマライゼーションを TypeScript で組む完成コードと、しきい値の決め方が分かります
Haiku 4.5 で要約・Sonnet 4.6 で抽象化を分業させ、月額 API 費用を $480 → $145 に下げた配分が分かります
圧縮タイミングを非同期に逃がす Cloudflare Queues の組み方と、ユーザー体感を悪化させない発火条件が分かります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API & SDK2026-07-13
Claude API の同時実行を束ねる — シングルフライトで重複推論とキャッシュ・スタンピードを防ぐ
同一プロンプトが同時に何度も Claude へ飛ぶ重複推論を、シングルフライト(request coalescing)で束ねる設計です。プロセス内・分散環境の実装、ジッター付きリトライ、負のキャッシュまで実測付きでまとめました。
API & SDK2026-07-03
同時リクエスト数はいくつまで持つのか — Little の法則と実測メモリで決める Claude API 本番デプロイのインフラ要件
同時リクエスト数・待ち行列長・メモリはいくつに設定すべきか。Claude API 本番デプロイのインフラ要件を Little の法則と実測ハーネスで数字から導く手順を、夜間バッチで OOM を踏んだ経験をもとに整理しました。
API & SDK2026-06-28
弱いモデルへ静かに落ちる方がエラーより怖い — Claude API のモデル降格に「下限」を設ける設計
無人運用のパイプラインでモデルが使えなくなったとき、弱いモデルへ自動で落ちる実装は危険です。タスクごとの能力契約と降格予算で「どこまで落ちたら止めるか」を決める設計を、個人開発の自動運用の実体験から解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →