2026年6月に公開した記事を、Claude Fable 5.1(9月1日)と GPT-6 Astra(9月3日)の公開に合わせて書き直しました。rtk・lean-ctx・headroom は9月時点の最新版で測り直し、新しく caveman と codegraph を加えています。6月の計測結果は末尾の折りたたみに残しました。
結論(先に)
Q. シェルの出力を減らすなら、何を入れればいい?
A. rtk です。 最新の 0.48 は、8つのコマンドで出力を中央値約89%減らしました(git diff は97.5%減)。一覧を途中で打ち切ったときは、残りを保存したファイルの場所を出力に書きます。
Q. コードを調べるときのトークンは減らせる? A. 減らせます。 codegraph は「この型はどこで定義され、どこで使われているか」を約6千トークンで返しました。grep して定義ファイルを丸ごと読む方法と比べると、大きなファイルほど差が開き、最大で1/14でした。
Q. いちばん人気の caveman(GitHub スター10万超)は効く? A. git や grep の出力には効きません。 同じエンジンを使う CLI では 0〜1% でした。CI ログでも8.5%です。公式の「入力33%減」は、プロキシとスキルを両方使って、ログや JSON を読ませたときの作者側の数字です。
Q. 6月の記事から変わったことは? A. headroom がツールの出力を圧縮するようになりました。 6月に使った 0.24 はツールの出力を圧縮の対象から外していましたが、0.37 は圧縮します。rtk と同じ出力を削るようになったので、「rtk と headroom は削る場所が違う」という6月の説明は成り立ちません。
なぜいまトークンを減らすのか
2026年9月の主なモデルの料金です(100万トークンあたりの米ドル)。
| モデル | 入力 | 出力 | 備考 |
|---|---|---|---|
| Claude Fable 5.1(9/1) | $10 | $50 | Fable 5 と同じ |
| GPT-6 Astra(9/3) | $10 | $50 | 1回の入力が27.2万トークンを超えると、入力は2倍・出力は1.5倍 |
| Claude Opus 5 | $5 | $25 |
新しい2つのモデルは、どちらも Opus 5 の2倍です。AI にコードを書かせると、git diff やテストのログ、検索結果がそのまま AI への入力になります。ロックファイルの差分1回で数十万トークンになることも珍しくありません。GPT-6 Astra では、入力が27.2万トークンを超えた時点で単価そのものが上がります。
5つのツールは、削る場所が違う
同じ「トークン削減」でも、どこで削るかがツールごとに違います。
| ツール | 削る場所 | やること |
|---|---|---|
| rtk | シェルコマンドの出力 | git・grep・find などの出力を短く書き換えてから AI に渡す |
| lean-ctx | シェルコマンドの出力、ファイルの読み込み | rtk と同じことに加え、関数の見出しだけを読むなどの読み方を持つ |
| headroom | AI に送るリクエスト | AI に送る直前に、新しく入ってきたツールの出力を圧縮する |
| caveman | AI に送るリクエスト、AI の返答 | 入力を圧縮するプロキシと、返答を短くするスキルの2つ |
| codegraph | コードの調べ方 | 関数・クラス・呼び出し関係を先に索引にし、grep やファイル読みの代わりに索引を引かせる |
以下、同じリポジトリ・同じ入力でそれぞれを測った結果です。
シェル出力を測り直した
各ツールにシェルコマンドを通したときのトークン数と、削減率(かっこ内)です。対象は headroomlabs-ai/headroom の2026-09-10時点のコミット(2,366ファイル)。条件の詳細は末尾の「計測方法」にまとめました。
| コマンド | ツールなし | rtk 0.48 | lean-ctx 3.10.1 | headroom 0.37 | caveman 1.3.3 |
|---|---|---|---|---|---|
git log -30 | 62,212 | 2,254(96.4%) | 721(98.8%) | 0% | 0% |
git log -p -5 | 311,826 | 0%(そのまま) | 170,391(45.4%) | 0.2% | 0% |
git diff HEAD~5 | 297,382 | 7,431(97.5%) | 45,883(84.6%) | 0.2% | 0.3% |
git show --stat HEAD | 2,762 | 0% | 27(99.0%) | 0% | 0% |
ls -la | 2,047 | 470(77.0%) | 529(74.2%) | 0% | -0.8% |
ls -laR headroom/proxy | 3,621 | 655(81.9%) | 1,230(66.0%) | 0% | 1.5% |
find . -name '*.py' | 14,954 | 356(97.6%) | 792(94.7%) | 10,085(32.6%) | 0% |
grep -rn 'def ' --include=*.py | 142,893 | 4,407(96.9%) | 39,168(72.6%) | 82,980(41.9%) | 0.9% |
8コマンドの削減率の中央値は、rtk 0.48 が約89%、lean-ctx が約79%です。headroom と caveman は、git の出力をほとんど変えませんでした。
打ち切った出力の扱い
削減率が高いものの多くは、一覧を途中で打ち切っています。元の出力にあったファイル名のうち、圧縮後の出力にも残っているものの割合を数えました。
| コマンド | rtk 0.48 | lean-ctx 3.10.1 | 打ち切った分の扱い |
|---|---|---|---|
grep -rn 'def ' --include=*.py(475ファイル) | 4.4% | 100% | rtk は残り457ファイルを保存したファイルの場所を表示 |
find . -name '*.py'(1,485ファイル) | 3.9% | 6.1% | rtk は同上。lean-ctx は一部だけ表示 |
ls -laR headroom/proxy | 44.8% | 99.1% | rtk は同上 |
rtk 0.48 の grep は、出力の最後にこう書きます(パスは短くしています)。
+457 more files [see remaining: tail -n +1 "$HOME/Library/Application Support/rtk/tee/..._grep_skipped.log"]
AI が続きを必要と判断すると、このコマンドを実行して残りを読みます。そのぶん、やりとりの回数とトークンは増えます。
6月から変わったこと
rtk(0.38 → 0.48)
git log -pはそのまま通すようになりました。 0.38 は 311,826 → 364 トークン(99.9%減)でしたが、5コミット中4コミットが出力から消え、差分も「+7612 lines omitted」と省かれていました。grep -rnのようにオプション付きの grep も圧縮するようになりました(0.38 はそのまま通していました)。- README に「削減率は bash 出力の削減率で、利用料の削減率ではない」「トークン数は bytes/4 の推定」と書かれるようになりました。 筆者の環境の
rtk gainは、6月の 3,527 コマンド・79.3%減から、9月は 23,415 コマンド・66.0%減になっています。 - Claude Code の Read / Grep / Glob ツールは rtk を通りません。 rtk が書き換えるのは Bash ツールで実行したコマンドだけです。
lean-ctx(3.10.1)
- 出力をパイプで受けたときだけ圧縮します。 同じ
lean-ctx -c "git log -30"でも、ファイルに書き出すと元の出力のままでした。エージェントからの実行はパイプで受けるので、普段の使い方では圧縮されます。自分で計測するときは注意が必要です。 - 6月に0%だった
git diffは、84.6% 減らすようになりました。 - 3.9.19 で「ソースコードを、構文としては正しいまま勝手に省略する」不具合が報告されました。 3.9.20 で、この出力フィルタは既定でオフになっています。
headroom(0.24 → 0.37)
6月に使った 0.24 と最新の 0.37 に、同じ3つの形の会話を通しました。
| 会話の形 | 0.24 | 0.37 |
|---|---|---|
| 検索結果や diff を会話の本文に貼ったもの | 0% | 0% |
| Claude 形式のツール結果(tool_result) | 0%(対象外) | 13.4% |
| OpenAI 形式のツール結果(role: tool) | 0%(対象外) | 38.6% |
0.37 は「過去のやりとりは1バイトも変えず、新しく入ってきたツールの出力と最新の発言だけを圧縮する」設計です。そのため、rtk と同じツール出力を削るツールになりました。
README の数字も控えめになっています。6月は「60-95% fewer tokens」でしたが、今は実際のツール出力の形式を使った4つの例で 21〜57% です。精度テストの TruthfulQA も「100問での +0.03 は誤差の範囲で、改善ではない」と書き直されました。リポジトリは chopratejas/headroom から headroomlabs-ai/headroom に移り、匿名の利用統計の送信は既定でオンです(HEADROOM_BEACON=off で止まります)。
JSON・ログ・CSV も測った
headroom と caveman は、JSON やログのように同じ形の行が大量に並ぶ出力が得意だとしています。そこで、git 以外の入力も測りました。
| 入力 | ツールなし | rtk 0.48 | lean-ctx 3.10.1 | headroom 0.37 | caveman 1.3.3 |
|---|---|---|---|---|---|
| GitHub Actions の CI ログ(1MB) | 409,394 | 0% | 16,593(95.9%) | 276,092(32.6%) | 374,712(8.5%) |
| GitHub API の issue 100件(JSON) | 361,146 | 0% | 220,373(39.0%) | 0% | 0% |
| ライセンス一覧(CSV 330行) | 7,950 | 0% | 1,041(86.9%) | 7,181(9.7%) | 7,607(4.3%) |
- rtk は
catをrtk readに書き換えますが、rtk readは既定では全文をそのまま返します。 そのため0%です。 - lean-ctx の
catは、先頭と末尾だけを残して途中を省きます。 CI ログは 8,570行 → 253行になり、「error」「fail」という語の出現回数は 378回 → 187回に減りました。削減率が高いのは、この省略によるものです。 - headroom は、JSON なら何でも減らせるわけではありません。 issue の JSON(入れ子が深く、長い本文を含む)は0%でした。同じ100件を「番号・タイトル・状態など6項目だけの平らな配列」にすると、36,704 → 4,642 トークン(87%減)になりました。
- caveman の CLI(
caveman compress)は、CI ログで8.5%、CSV で4.3% でした。
ファイルの読み込み
headroom/proxy/server.py(6,425行・62,146トークン)を読ませた結果です。
| 読み方 | トークン | 削減 |
|---|---|---|
| そのまま読む | 62,146 | — |
rtk 0.48 read -l aggressive | 4,220 | 93.2% |
lean-ctx read -m signatures(関数の見出しだけ) | 3,323 | 94.7% |
lean-ctx read -m map(見出し+依存関係) | 2,537 | 95.9% |
lean-ctx read(既定) | 10,340 | 83.4% |
lean-ctx read -m full を2回続けて実行 | 62,146 / 62,146 | 0% / 0% |
- lean-ctx の既定の読み方は、215のまとまりのうち7つだけを表示し、全文の読み方を最後に案内する形でした。
- 6月の記事の「2回目の読み込みは1行の短い表示になる(99.9%減)」は、コマンドを1回ずつ実行する今回の計測では再現しませんでした。この機能は、lean-ctx を MCP サーバーとして動かし続けているときに働くものです。
codegraph:コードの索引を先に作る
codegraph(スター約7万、MIT)は、リポジトリの関数・クラス・呼び出し関係を先に索引にしておき、AI に grep やファイル読みの代わりに索引を検索させるツールです。今回のリポジトリでは、1,835ファイル・45,917ノード・128,515エッジの索引を約21秒(うち解析6.0秒)で作り、索引の容量は128MBでした。
「この型はどこで定義され、どこで使われているか」を調べるのに必要なトークン数を、grep して定義ファイルを丸ごと読む方法と比べました。
| 調べた型 | grep+定義ファイルを読む | codegraph explore | codegraph callers |
|---|---|---|---|
| CacheAligner | 6,791 | 5,672 | 371 |
| SmartCrusher | 49,803 | 6,232 | 430 |
| ContentRouter | 86,491 | 6,105 | 417 |
exploreは、定義と使われ方をまとめて返します。 3件とも定義のあるファイルを含んでいました。- 差は、grep の結果と定義ファイルが大きいほど開きます。 小さいファイルに定義された CacheAligner ではほぼ同じ、約6.9万トークンのファイルに定義された ContentRouter では1/14でした。
callersは呼び出し元の一覧(ファイル名と行番号)だけを返します。 定義の中身は含みません。
注意点は、codegraph の README 自身が書いています。1回の質問に答えるまでのトークンは少ない一方、codegraph の返す内容がまとまって会話に残るため、何往復もするセッションの終わりに会話に残っている量は、7リポジトリ全体で約80%多いそうです(VS Code のリポジトリでは67k 対 18k)。
caveman:いちばん人気の節約ツール
caveman(スター約10.5万)は、AI に短い言葉で答えさせるスキルとして広まりました。今は2つの部品に分かれています。
- スキル:AI の返答(出力)を短くする。MIT ライセンス。
- プロキシ:AI に送る入力を、送る直前に圧縮する。本体のプログラムは BSL-1.1 ライセンス。
今回は、プロキシと同じエンジンを使う CLI(caveman shrink -- コマンド、caveman compress)を測りました。結果は上の表のとおりで、git・grep・find・diff は 0〜1%、CI ログは8.5%、CSV は4.3% です。エンジンは入力の種類(diff・コードなど)を判定したうえで、中身をほとんど変えませんでした。
公式の「入力33%減」は、プロキシとスキルの両方を入れた Claude Code に、60〜95KB のログ・JSON・CSV・テスト出力・YAML・HTML を読ませた、作者側のベンチマークの数字です。HTML だけは9.9%増えたことも、そのまま載せています。
スキルについては、作者の「Honest Numbers」ページに次の説明があります。
- スキルは毎ターン、約1,000〜1,500トークンの指示を入力に足します。 返答の削減がこれより少なければ、かえって増えます。
- 返答の削減率は「まだ公開していない」としています。
- 第三者の JetBrains は、SkillsBench の86タスク(比較が成立したのは82)で、返答のトークン 8.5%減(公称65%)と測りました。
CLI は既定で匿名の利用統計を送ります(caveman telemetry off または DO_NOT_TRACK=1 で止まります)。
第三者の検証:JetBrains
JetBrains は7月、節約ツールを「ツールが表示する削減量」ではなく「実際に API で使ったトークン量」で比べた検証を公開しました。どれも Claude Code と claude-sonnet-5 で、SkillsBench の同じタスクをツールあり・なしで実行して比べています。
| ツール | 公称 | JetBrains の実測 | 回答の品質 |
|---|---|---|---|
| rtk | 60〜90% 削減 | reasoning effort を low にした設定で コスト7.6%増(p=0.004)、high では ±0 | 差なし |
| caveman スキル | 65% 削減 | 返答のトークン 8.5%減 | 差なし |
| Ponytail | コスト20%減 | コスト 10.3%減(p=0.004) | 差なし |
rtk でかえってコストが増えた主な理由として、JetBrains は次の点を挙げています。
- rtk が届くのは、ツール出力の文字数の2割弱までに限られていました。 Read や Grep ツールは Bash を通らず、Bash で実行したコマンドの半分も書き換えの対象外でした。
- 圧縮された出力を見た AI が、読み直しや追加の調査をしました(やりとりの回数が13.8%増)。条件を組み合わせた
findを書き換えてエラーにし、やり直しになった例もありました。
同じ検証で、rtk 自身の集計は「扱った出力の99.8%を削った」と表示していました。JetBrains は、ツールが表示する削減量は「ツールがなかったら」という想定に基づく主張であって、実際の利用料を示すものではない、とまとめています。
ほかに出てきたツール(今回は測っていません)
| ツール | 削る場所 | やること | 公表されている数字 |
|---|---|---|---|
| context-mode(スター約2.2万、Elastic-2.0) | ツールの出力 | ツールの出力を別プロセスに置き、必要な部分だけを AI に渡す | セッション全体で 315KB → 5.4KB(98%減) |
| codebase-memory-mcp(スター約4.3万、MIT) | コードの調べ方 | tree-sitter でリポジトリの関数や呼び出し関係を索引にする MCP サーバー | 論文(arXiv 2603.27277)で31リポジトリ、トークン1/10・回答品質83% |
| JetBrains Context(JetBrains AI の契約者向け、7月から早期アクセス) | コードの調べ方 | リポジトリの索引を Claude Code や Codex CLI から検索させる | JetBrains の計測で、やりとり最大68%減・コスト最大48%減 |
| Ponytail | AI の返答 | AI が書くコードの量そのものを減らすスキル | JetBrains の計測でコスト10.3%減(公称20%) |
| tamp(スター約90、MIT) | AI に送るリクエスト | JSON の書き直しや重複の除去などを順に重ねて圧縮するプロキシ | 入力52.6%減 |
h5i(2026年6月の計測を残します)
h5i はその後、0.3〜0.4系で「AI エージェント用のセキュリティテスト向けブラウザ」に方針を変えました。README からは、ここで扱った h5i capture run と h5i recall object がなくなっています。以下は 2026年6月時点(h5i 0.1系) の結果です。
h5i には当時、2つの機能がありました。1つは、誰がなぜそのコードを書いたかを git に記録する機能。もう1つは、h5i capture run -- コマンド でコマンドの出力を要約する機能です。要約前の全文は git の中に sha256 付きで保存され、h5i recall object で取り出せました。
| ケース | ツールなし | h5i の要約 | 削減 |
|---|---|---|---|
git log -p -30(巨大なログ) | 1,220,612 | 2,044 | 99.8% |
grep 'def ' | 14,284 | 828 | 94.2% |
find *.py | 3,157 | 322 | 89.8% |
ls -laR(小さい出力) | 1,382 | 1,448 | -4.8% |
- 大きな出力では 89.8〜99.8% 減りました(公称は最大95%)。
- 小さい出力では、h5i が付け足す定型文のぶん、逆に増えました。
git log -p -30の出力(2,717,348バイト)をh5i recall objectで取り出すと、元の出力と1バイトも違いませんでした。
使い分け(2026年9月版)
| やりたいこと | 使うツール | 今回の結果 |
|---|---|---|
| シェルコマンドの出力を減らす | rtk(lean-ctx でもよい) | 中央値約89%減。grep や find は一覧を打ち切り、残りの保存場所を表示 |
| コードの定義や使われ方を調べる | codegraph、lean-ctx の map / signatures | 大きなファイルが関わる調べものほど効く(最大1/14) |
| CI ログや、形の揃った JSON を大量に読ませる | headroom 0.37 | CI ログで3割減、平らな JSON で約9割減。入れ子の深い JSON は0%、CSV は1割程度 |
| AI の返答を短くする | caveman スキル、Ponytail | 返答8.5%減、コスト10.3%減(どちらも JetBrains の計測)。caveman は毎ターン1,000〜1,500トークンの指示が増える |
| GPT-6 Astra を使う | 上のツールで1回の入力を小さく保つ | 入力が27.2万トークンを超えると単価が上がる |
どれを入れた場合も、同じ作業をツールあり・なしで実行し、API の使用量(usage)で比べるのが確実です。ツールが表示する削減率は「ツールが扱った出力のうち、どれだけ削ったか」です。
計測方法
計測環境と再現手順
- マシン: Apple Silicon(arm64)の Mac、1台
- 対象リポジトリ:
headroomlabs-ai/headroomのコミット04cdf79(2026-09-10、2,366ファイル)。git diff HEAD~5には package-lock.json と uv.lock の大きな更新が含まれます - トークンの数え方: tiktoken の
o200k_base(6月と同じ)。Claude のトークンの数え方とは違いますが、削減率の比較には使えます - ツールの版: rtk 0.38.0(6月から手元にあったもの)と 0.48.0、lean-ctx 3.10.1、headroom-ai 0.37.0(比較用に 0.24.0)、caveman CLI 1.3.3(エンジン bin-v1.1.6)、codegraph 1.6.0
- 普段の環境との分離: すべて
HOMEを作業用のディレクトリに向けて実行し、普段の設定や集計データには触れていません。利用統計の送信は、環境変数(DO_NOT_TRACKなど)で止めました - 出力の受け取り方: パイプで受けました(エージェントから実行したときと同じ)。caveman だけは、Node の出力がパイプで64KBで切れたため、ファイルで受けています
- rtk:
rtk rewrite "コマンド"で、Claude Code から実行したときと同じ書き換え後のコマンドを取り出し、それを実行しました - headroom: proxy と同じ
compress()に、最新のツール結果として渡しました。表の「headroom 0.37」は Claude 形式(tool_result)の値です - ファイル名の残存率: 元の出力にあったファイル名やコミットハッシュが、圧縮後の出力にそのまま含まれている割合
- JSON・ログ・CSV: GitHub API の issue 100件、GitHub Actions の CI ログ(先頭1MB)、headroom リポジトリ内の Python ライセンス一覧
2026年6月の計測結果(rtk 0.3系・lean-ctx・headroom 0.2系)
対象は当時の chopratejas/headroom(402コミット・3,150ファイル)で、トークンの数え方は同じ o200k_base です。
rtk(シェル出力)
| ケース | ツールなし | rtk | 削減 |
|---|---|---|---|
git log -30 | 10,635 | 1,676 | 84.2% |
git diff HEAD~5(uv.lock 8,112行の再生成を含む) | 1,171,880 | 5,914 | 99.5% |
ls -la | 1,599 | 303 | 81.1% |
find *.py | 10,400 | 180 | 98.3% |
grep 'def ' | 173,975 | 4,253 | 97.6% |
read(aggressive) | 31,165 | 2,017 | 93.5% |
rtk と lean-ctx の比較
| ケース | ツールなし | rtk | lean-ctx |
|---|---|---|---|
| git log -30 | 10,635 | 1,676(84.2%) | 625(94.1%) |
| git diff | 1,171,880 | 5,914(99.5%) | 1,171,880(0.0%) |
| find *.py | 10,400 | 180(98.3%) | 2,607(74.9%) |
| grep 'def ' | 173,975 | 4,253(97.6%) | 45,925(73.6%) |
当時の lean-ctx は git diff をそのまま通していました。ファイルの読み込みは signatures 96.4%・map 96.5% 減で、2回目の読み込みは1行の短い表示(99.9%減)になりました。
headroom
検索結果・コミットログ・diff を積んだ会話(309,248トークン)を、当時の圧縮処理で 21,295トークン(93.1%減)にしました。会話の渡し方は、今回の表とは異なります。当時はツール結果(tool_result)を圧縮の対象から外していました。
参考・出典
- Anthropic「Introducing Claude Fable 5.1 and Claude Mythos 5.1」: https://www.anthropic.com/claude-fable-and-mythos-5-1
- Claude の料金: https://platform.claude.com/docs/en/about-claude/pricing
- GPT-6 Astra(OpenAI API): https://developers.openai.com/api/docs/models/gpt-6-astra
- JetBrains「rtk Claude Code Token Savings」: https://blog.jetbrains.com/ai/2026/07/rtk-claude-code-token-savings/
- JetBrains「Speaking to AI Agents like Cavemen Saves 65% of Tokens. We Test.」: https://blog.jetbrains.com/ai/2026/07/speak-to-ai-agents-like-cavemen-tosave-tokens/
- JetBrains「Ponytail Skill for Claude Code」: https://blog.jetbrains.com/ai/2026/07/ponytail-skill-claude-tested/
- JetBrains Context: https://blog.jetbrains.com/ai/2026/07/introducing-jetbrains-context-repository-intelligence-for-coding-agents/
- rtk: https://github.com/rtk-ai/rtk
- headroom: https://github.com/headroomlabs-ai/headroom
- lean-ctx: https://github.com/yvgude/lean-ctx
- caveman(Honest Numbers を含む): https://github.com/JuliusBrussee/caveman
- codegraph: https://github.com/colbymchenry/codegraph
- context-mode: https://github.com/mksglu/context-mode
- codebase-memory-mcp: https://github.com/DeusData/codebase-memory-mcp
- tamp: https://github.com/sliday/tamp
- h5i: https://github.com/h5i-dev/h5i
- tiktoken: https://github.com/openai/tiktoken
スター数は2026年9月11日時点です。計測は1台のマシン・1つのリポジトリでの結果で、環境や対象によって数字は変わります。

