ElcamyTECH
Articles
Antigravity

Claude Fable 5 時代のトークン節約術:rtk / headroom / lean-ctx / h5i を実測比較

TechAILLMトークン削減AntigravityClaude Codeベンチマーク2026/06/09

はじめに:新しいモデルが来ても、トークン代は減らない

2026 年 6 月 9 日、Anthropic が新しいフラッグシップ Claude Fable 5 / Mythos 5(クロード フェイブル ファイブ / クロード ミトス ファイブ)を公開しました。料金は 100 万トークンあたり入力 $10・出力 $50。現行の主力 Claude Opus 4.8(入力 $5・出力 $25)のちょうど 2 倍です。

性能は上がりましたが、財布には逆風です。同じ作業を新モデルに任せれば、それだけでトークン代は単純計算で 2 倍。しかもエージェントにコードを書かせると、git diff やテストログ、インストールの出力で、AI に渡る文字は放っておくほど積み上がります。単価が 2 倍のうえに量も増える——ここで AI コーディングのコストがじわじわ効いてきます。

そこで考えました。モデルを変えずに、AI に渡すトークンそのものを減らせないか? しかも、答えの質は落とさずに。

このテーマには、LLM に渡る前のテキストを圧縮する道具がいくつもあります。ただ、名前が似ていて、互いに引用し合い、効く場所も微妙に違う。そこで 4 つを実際に動かし、本物のリポジトリでトークン数を前後で測りました。

先に答えを言うと——迷ったら、まず rtk を入れておきましょう。もっと削りたいなら headroom も。 この 2 つで大半のトークンは削れます。実際、シェル出力の圧縮はちゃんと効き(中央値 80%、巨大な diff では 99% 超)、「効く理由」と「効かない場面」がツールごとにきれいに分かれていました。以下、理由と使い分けを実測しながら説明します。

この記事でわかること

  • AI コーディングのトークン代を下げる 4 つのツール(rtk / lean-ctx / headroom / h5i)の違い
  • 実測した削減率(コマンド別の前後比較)
  • どの場面でどれを使えばいいか(初心者向けのたとえ付き)
  • 圧縮しても答えの質は落ちないのか(公式ベンチで確認)

なぜ CLI 出力がトークンを食うのか

AI エージェント(Claude Code や Codex)は、git diffgrep -rn、インストーラのログを そのまま コンテキストに取り込みます。uv.lock を 1 回再生成しただけで diff が数千行 = 100 万トークン超、ということが普通に起きます。

LLM が本当に必要としているのは「何が変わったか」の要約であって、ロックファイルの全行ではありません。そこで「LLM に届く前に出力を間引く / 要約する」中間ツールが登場します。

4 つのツールはレイヤーが違う

最初に混乱したのがここでした。4 つとも「トークン削減」と書いてありますが、効く場所が違います。図にするとこうです。

ツール役割
rtkシェル出力git / ls / grep / diff などの出力を圧縮
lean-ctxシェル出力+ファイル読みrtk と同じ役割の代替。さらにファイル読みに強い
headroomAPI リクエストコンテキスト全体を圧縮する proxy(内部で rtk か lean-ctx を利用)
h5iコマンド出力+git出力を圧縮しつつ、原本と来歴を git に記録(後から復元可)

引用関係も独特です。headroom は rtk バイナリを同梱してシェル出力の書き換えに使っています(README に「Huge thanks to the RTK team」と明記)。h5i は headroom の line-folding 技術を借りています(Apache-2.0)。競合というより、重ねて使う前提で作られています。

1 点だけ注意。rtk と h5i は同じ「コマンド出力」の層なので、同じコマンドに両方をかけると二重圧縮になります(しかも h5i が残す原本が rtk で削った後の出力になってしまう)。普段の使い捨ては rtk、記録も残したいコマンドだけ h5i、とコマンドごとに片方を選ぶのがコツです。headroom は別の層(会話)なので、こちらは気にせず重ねて OK。

計測方法

  • トークンカウンタ: tiktokeno200k_base(GPT-4o 系)。Claude のトークナイザとは厳密には異なりますが、削減「率」の傾向は共通です。
  • 対象リポジトリ: chopratejas/headroom(Python + Rust、402 コミット、3,150 ファイル)を浅くクローン。
  • 比較: 各コマンドを「素の出力」と「ツール経由」で実行し、トークン数を比較。

結果①:rtk(シェル出力の書き換え)

実測した結果です。

ケース素のtokrtk tok削減
git log -3010,6351,67684.2%
git diff HEAD~5(uv.lock 8,112行再生成を含む)1,171,8805,91499.5%
ls -la1,59930381.1%
find *.py10,40018098.3%
grep 'def '173,9754,25397.6%
read(aggressive)31,1652,01793.5%
env1,03934666.7%

典型値で 60〜99%、中央値 ~80%(計測した全 10 コマンド)。 最大のインパクトは「巨大だが情報密度の低い出力」——lockfile の diff、再帰 grep、長いインストールログ——で、ここが 99% 級に落ちます(上表は代表 7 ケース)。

自分の実利用ログでも裏が取れた

rtk は累積セーブを自己集計しています(rtk gain)。筆者の実環境では:

Total commands:  3,527
Tokens saved:    5.2M (79.3%)

ベンチの中央値 ~80% と実運用 79.3% がほぼ一致。「測ったら出来すぎ」ではなく、日常的にこの水準で効いていることが分かります。

注意: rtk read は既定が全文素通し(--level none)。削減したいなら -l minimal/aggressive を明示します。

結果②:headroom(コンテキスト圧縮)

headroom の本体価値は proxy 層での「コンテキスト全体の圧縮」。これは headroom.compress() を直接呼べば proxy も実 API キーも不要でローカル実測できます。

会話履歴に検索結果・コミットログ・diff を "参照テキスト" として積んだ状態(合計 309,248 トークン)を、フルパイプライン(ML 圧縮 Kompress + SmartCrusher + CacheAligner)で圧縮:

指標
tokens_before309,248
tokens_after21,295
削減93.1%(287,953 トークン減)

役割が分かれている

試しているうちに分かったのですが、ツールの出力(tool_result)を積んだ会話では、headroom は router:excluded:tool と表示してそこを圧縮しませんでした。役割が分かれているのです。

ツールの出力(git diff の生データなど)を削るのは rtk / lean-ctx の仕事。headroom が削るのは、会話そのものや、検索で取り込んだ長い文章のほう。

だから 2 つは競合しません。rtk が出力を 80% ほど削り、そのあと会話に残った本文を headroom がさらに 93% 削る、という重ね方になります。これはコードを読んでも確認できました。

注意:headroom の圧縮(Kompress)は要約なので、元の文章とは変わります。だから直近のやりとりや、いま読んでいるコードは触らない設計です。効かせるのは「古くなった文脈」だけ、と考えると安全です。

でも「消したら困る」のでは? ── CCR(戻せる圧縮)

要約して捨ててしまうと、AI が後で詳細を欲しくなったとき困りそうです。headroom はそこに CCR(Compress-Cache-Retrieve、戻せる圧縮)という仕組みを持っています。コードを読むと、流れはこうです。

  1. 圧縮するときに、元データを手元にいったん取っておく
  2. 圧縮後の文章に「足りなければ取りに来てね」という目印を残す
  3. AI が必要と判断したら headroom_retrieve を呼んで元データを取り戻す

headroom のドキュメント自身が「戻せる圧縮は、戻せない圧縮に勝つ」と書いています。攻めて削っても、最悪 AI が取りに来られるので事故りにくい、という発想です。

注意:この控え(キャッシュ)は既定で 5 分で消えます。あくまで「その場の保険」です。原本を長く残したいなら、後で出てくる h5i のほうが向いています。

圧縮しても精度は落ちないのか

「要約したら答えが悪くなるのでは?」という当然の疑問に、headroom は公式の精度テストで答えています。

テスト圧縮なしheadroom
GSM8K(算数の推論)0.8700.870±0
TruthfulQA(事実性)0.5300.560+0.030

算数は変わらず、事実性はむしろ少し上がっています。余計なノイズが減って答えやすくなった、と読めます。公式は実際の作業でも、コード検索で 92%、障害調査で 92%、issue 分類で 73% 削れたとしていて、本記事の自前計測(93.1%)とも近い水準でした。

結果③:rtk vs lean-ctx 直接対決

lean-ctx は rtk の代わりに headroom へ差し替えられます(HEADROOM_CONTEXT_TOOL=lean-ctx)。同じコマンドを lean-ctx -c "..." と rtk で測った結果です。

ケースrtkrtk%lean-ctxlc%勝者
git log -3010,6351,67684.2%62594.1%lean-ctx
git diff(1.17M)1,171,8805,91499.5%1,171,8800.0%rtk
ls -la1,59930381.1%33179.3%rtk
find *.py10,40018098.3%2,60774.9%rtk
grep 'def '173,9754,25397.6%45,92573.6%rtk
env1,03934666.7%19781.0%lean-ctx

git diff が lean-ctx で 0.0%、完全に素通し。 1,171,880 トークンが 1 トークンも減りません。計測ミスを疑って調べました。

lean-ctx の git diff が無圧縮な件を裏取りする

「0% は怪しい、何かのミスでは」と疑い、3 つの角度から検証しました。

① 小さい diff でも同じ。 101 トークンの小さな working-tree diff でも lean-ctx は 99 トークン(ほぼ無圧縮)。サイズ依存ではありません。

② lean-ctx 自身のベンチが設計思想を明かす。 lean-ctx benchmark run を回すと、大きな削減は READ MODES(map 97.5% / signatures 93% / cache 99.9%) から来ていて、中身を削らない aggressive モードは ~15% しか減りません(元の情報は 100% 残る)。要するに、情報を捨てないことを優先するツールでした。

③ 公式 README の作りが裏付ける。 README には次の記述があります(いずれも原文ママ)。

  • "Up to 99% token savings"(見出しの謳い文句)
  • "Cached re-reads: ~13 tokens"(再読込はキャッシュで ~13 トークン)
  • "56 pattern modules compress git, npm, cargo, docker, kubectl, terraform and more (270 passthrough rules)"

つまり lean-ctx の削減は キャッシュとパターン整形から来ており、270 もの "passthrough(素通し)ルール" が示すように「意味ある出力はそのまま通す」設計です。diff はこの素通し側に入っている、と読めます。

結論:lean-ctx の git diff 0% は計測ミスではなく設計思想。 中身を削ってまで diff を縮めないのが lean-ctx の考え方でした。私のベンチは「中身を削る」rtk 向きのお題だったので、lean-ctx には不利だったわけです。

lean-ctx の本来の得意分野を測る

公平を期すため、lean-ctx を本来の戦場で測り直しました。

武器①:見出しだけ読む

コードファイルには「関数の見出し(名前・引数・戻り値)」と「中身(実際の処理)」が入っています。lean-ctx はコードを解析して、見出しだけを取り出す読み方ができます。本でいえば、全ページではなく目次だけを読むイメージです。server.py(31,232 tok)で測ると:

読み方トークン削減
signatures(関数の見出しだけ/18言語対応)1,12796.4%
map(見出し+どのファイルが何を呼ぶか)1,09396.5%
(比較)rtk read -l aggressive2,02893.5%

「中身は要らない、どんな関数があるか分かればいい」という段階で、rtk の read aggressive を上回ります。

武器②:再読込キャッシュ

lean-ctx は一度見たファイルを覚え、2 回目以降は 1 行スタブに畳みます。未読ファイルでコールド→ウォームを実測:

ファイルコールド読みウォーム再読込
anthropic.py24,10124,10920(99.9%減)
wrap.py35,48835,49519(99.9%減)

返ってくるスタブの実物がこれです:

F2 cached wrap.py [3991L 35488t] (read #3)

「このファイルはもう読んだ(3,991 行 / 35,488 トークン、3 回目)」と AI に伝えて、同じファイルを貼り直すのをやめさせます。AI は同じファイルを何度も読み直しがちなので、長い作業ほどこれが効いてきます。rtk にはこの仕組みはありません。

武器③:terse モード(出力側を削る)

lean-ctx terseoff / lite / full / ultra を渡すと、ここまでと違って AI の "返答" のしゃべりすぎ を抑えられます(lite: 箇条書き / full: diff と一言だけ / ultra: ほぼコードだけ)。公式は出力トークンを 25-65% 減らすとしています。これは入力ではなく出力側の話で、実際に AI を動かさないと測れないので本記事では数値は出していません。ただ「削る場所」がもう 1 つある、という意味で覚えておくと便利です。

得意がきれいに分かれた

rtklean-ctx
シェル出力フィルタ(diff/grep/find)◎ 圧勝△ 保全優先で控えめ
ファイル読み(見出しだけ抽出)○ 93.5%◎ 96-97%
再読込キャッシュ✗ なし◎ 99.9%(1行スタブ)
出力側の削減(terse)○ 25-65%(出力)

lean-ctx は「弱い」のではなく、得意な場所が違うだけでした。コードを何度も読み返す作業なら、lean-ctx の方が効きます。

裏取り:実測 vs 公式主張

各ツールの公式 README・自己ベンチと、実測を突き合わせました。

項目本実測公式の主張整合
rtk 全体中央値 ~80%(実ログ 79.3%)「60-90%」
rtk git log / ls84.2% / 81.1%「-80% / -80%」✅ ほぼ一致
rtk git diff99.5%「-75%」(典型値)✅ 巨大 lockfile ゆえ高め
lean-ctx git diff0%(素通し)「270 passthrough rules」=素通し設計✅ 仕様どおり
lean-ctx ファイル読みmap 96.5% / sig 96.4%「Up to 99% token savings / Cached re-reads: ~13 tokens」
headroom 本文圧縮93.1%「60-95% fewer tokens」✅ 範囲内
h5i 巨大ログ圧縮99.8%(git log -p)、全文復元はバイト一致「up to 95%」✅ 公称以上+復元も実証

すべて公式の主張の範囲に収まりました。

h5i は「圧縮もできる」が本質は別

h5i には 2 つの顔があります。

  1. エージェント連携・来歴記録(本来の主目的): git を「AI の作業ノート」として使い、複数エージェントがメッセージを残し合ったり("Agent Radio")、「誰が・なぜ・何を考えてこのコードを書いたか」を Git ref / LFS に記録する。
  2. トークン圧縮: h5i capture run -- コマンド でコマンド出力を畳む(line-folding は headroom 由来)。

今回は ② の観点で見ました。h5i の圧縮で面白いのは、畳んだ原本の「しまい方」です。

AI には短い要約を渡し、元の全文は git の中に番号(sha256)付きで保管します。あとで h5i recall object を打つと、その番号から全文がそのまま戻ります。長いテスト/ビルドのログを、こんな 1 枚のカードに畳むイメージです。

テスト: pytest / 結果: 失敗 / 成功120・失敗1 / 全文は番号 sha256:… で保管

「戻せるか(可逆性)」で並べると

「畳んだ全文を取り戻せる」のは h5i だけの特権ではありません。実は各ツールが、それぞれの形で持っています。並べるとこうです。

ツール戻せるか戻し方どれくらい残る
rtk△ 一部コマンドが失敗したときだけ全文を別保存その場かぎり
lean-ctxtee で出力をファイルに残すファイルとして残る
headroom○(CCR)headroom_retrieve で取り戻す5 分のキャッシュ
h5irecall object で取り戻すgit に永続(版管理)

「攻めて圧縮しても、いざとなれば戻せる」——この考え方自体は headroom も CCR として持っています。違いは残し方です。headroom は 5 分の控え、h5i は git に番号付きで永久保存。前者は「その場の保険」、後者は「あとから監査できる証拠」です。用途で選び分けるところです。

h5i も実測した

h5i capture run を他ツールと同じ条件で測りました。

ケースh5i 要約削減
git log -p -30(巨大ログ)1,220,6122,04499.8%
grep 'def '14,28482894.2%
find *.py3,15732289.8%
ls -laR(小さい出力)1,3821,448-4.8%

大きく繰り返しの多いログで 90〜99.8%。公式の「最大 95%」とも整合します。一方、ls -laR のような小さい出力では逆に増えます(-4.8%)——h5i はラッパーの定型文を足すので、短い出力には向きません。h5i の出番は "長大なログ" だと数字でも分かります。

畳んでも全文が戻る

h5i の真価は「消さずに退避する」こと。実際に検証しました。

  • git log -p -30 の生出力 = 2,717,348 バイト / 約 122 万トークン
  • AI が見る要約 = 約 2,000 トークン(99.8% 減)
  • h5i recall object で復元 = 2,717,348 バイト、元と完全にバイト一致

AI に渡る量は 99.8% 減らしつつ、原本は 1 バイトも欠けずに戻りました。

つまり h5i は「トークン圧縮」と「作業の記録・監査」を兼ねたツールです。圧縮だけが目的なら大げさですが、「削った証拠を版管理して残し、あとで誰でも取り戻せる」のが持ち味です。git の上で動くので、rtk や headroom と一緒に使っても干渉しません。

ちなみに「h5i を入れれば headroom はいらないのでは?」と思うかもしれませんが、置き換えにはなりません。h5i が圧縮するのは h5i capture run で包んだコマンド出力(rtk と同じシェル出力の層)で、会話そのものには手を出しません。会話本文を削るのは headroom の役目なので、会話が膨らむ長丁場ではそちらが効きます。両者は別の層を担当している、というだけです。

初心者向けまとめ:結局どれを使えばいい?

どれも「AI に渡す文章を短くして、トークン代を下げる」道具です。でも得意な場面が違います。

道具やることたとえユースケース
rtkコマンドの出力を短くする長いログを 3 行メモにするgit diffnpm install のログでコンテキストが埋まるとき
lean-ctxファイルを賢く読む・使い回す一度渡した資料は「さっき渡したやつ」で済ます同じコードを何度も読み返す作業のとき
headroom会話まるごとを圧縮する入口で荷物をまとめて圧縮する長時間まわして会話が膨らんできたとき
h5i圧縮しつつ原本を保管要約を渡し、原本は番号付きで倉庫へあとで全文を見たい・記録を残したいとき

選び方はシンプルです。

  • まずは rtk。入れるだけでコマンドの出力が 8 割減ります。効果がいちばん分かりやすい。
  • コードをよく読むなら lean-ctx を足す(rtk と入れ替えてもいい)。
  • もっと削りたい・長くまわす日は headroom を上に重ねる。
  • 出力を消したくない、あとで全文が要るなら h5i。圧縮というより「記録」の道具です。

大事なのは、これらは競合しないこと。働く場所が違うので、rtk + headroom + h5i のように重ねて使えます。

結論:まず rtk、足りなければ headroom

  • とりあえず rtk を入れる。 コマンドの出力が 8 割減ります。これだけで十分効きます。
  • もっと削りたいなら headroom も入れる。 会話の本文をさらに 93% 圧縮します。
  • lean-ctx と h5i は用途次第。コードを何度も読むなら lean-ctx、ログを消さず残したいなら h5i。

インストール方法は各リポジトリに書いてあります。

よくわからなければ、Claude Code に URL を貼って「これ入れて」と言うだけで OK。だいたいインストールまでやってくれます(この記事の検証も、最初はその一言から始まりました)。

参考・出典

計測は単一マシン(Apple Silicon / arm64)・単一リポジトリでの結果です。環境や対象によって数字は前後します。公式の主張(rtk 60-90% / headroom 60-95% / lean-ctx の挙動)はいずれも各 README・自己ベンチに基づきます。

関連記事

Solution

AIエージェント・Dify構築支援

AIエージェント開発・Dify構築・PoC・社内研修まで
ワンストップで支援。まずはお気軽にご相談ください。

Elcamy

Technology Partners

DifyGoogle Cloud Partner