ブログ

AI開発のコストを抑える工夫:Claude Codeのトークン消費を80%削減するRust製ツール「RTK」

GitHubで大きな注目を集めていた 63k Stars, a Rust Tool That Reduces Claude Code's Token Consumption by 80% という記事を読み、AIエージェントを運用する上での「トークン管理」の重要性が改めて気になったので、自分なりに内容を整理してみたいと思います。

トークン貧乏にならないように...。一度、使って見ようかな。


Claude CodeやCursorといったAIエージェントを利用していると、知らず知らずのうちに大量のトークンを消費していることがあります。実は、その多くは人間にとっても不要な「コマンド出力のノイズ」かもしれません。

AIエージェントが直面する「ノイズ」の問題

AIエージェントに何かタスクを依頼すると、彼らは裏側で cargo testnpm test、あるいは git status といったコマンドを実行します。

たとえば、Rustのプロジェクトで cargo test を実行したとしましょう。もし200個のテストが走り、そのうち2つが失敗したとします。このとき、標準出力には200行以上のテキストが並びますが、AIが本当に知るべきなのは「どのテストが、なぜ失敗したか」という最後の数行だけであることがほとんどです。

しかし、通常のエージェントは出力された数千トークン分ものログをすべてコンテキストに詰め込んでしまいます。これは、以下のような非効率を招く原因となります。

  1. 金銭的コストの増大: API経由で利用している場合、不要なログに対しても支払いが発生します。
  2. コンテキスト上限の圧迫: 重要な情報がノイズに埋もれ、AIの推論精度が下がる可能性があります。
  3. 利用制限(レートリミット)への到達: サブスクリプション型サービスでも、トークン消費が激しいとすぐに制限がかかってしまいます。

RTK (Rust Token Killer) の仕組み

こうした課題を解決するために登場したのが、RTK (Rust Token Killer) というツールです。これはRustで書かれたCLIプロキシで、AIエージェントとシェルの間に割り込んで動作します。

仕組みを簡単に図解すると、以下のようになります。

flowchart LR
  Agent["AIエージェント<br>(Claude Code等)"]
  RTK["RTK<br>(プロキシ層)"]
  Shell["シェル<br>(コマンド実行)"]

  Agent -- "① 実行命令" --> RTK
  RTK -- "② コマンドをパススルー" --> Shell
  Shell -- "③ 生の出力 (大量)" --> RTK
  RTK -- "④ フィルタリング済みの出力 (最小限)" --> Agent

RTKは、コマンドの実行結果をそのままAIに渡すのではなく、一度受け取ってから「AIにとって意味のある情報」だけを抽出して渡す役割を担っています。

トークンを削減する4つの戦略

RTKがどのように出力を「掃除」しているのか、主な戦略は以下の4つに分けられます。

  • フィルタリング (Filtering): 空行や定型的なコメント、進捗バーなどの不要な行を削除します。
  • グループ化 (Grouping): たとえば大量のファイルリストがある場合、ディレクトリ単位でまとめるなど、構造化して記述量を減らします。
  • 切り詰め (Truncation): 繰り返されるログや重要度の低い中間情報をカットし、最初と最後、あるいはエラー周辺のコンテキストを重点的に残します。
  • 重複排除 (Deduplication): 同じようなエラーメッセージが何度も出力される場合、「x100」のように回数を付与して一行にまとめます。

実際の削減効果

元記事で紹介されている比較例を見ると、その差は一目瞭然です。

実行コマンド 生の出力(トークン数) RTK適用後(トークン数) 削減率
cargo test (262テスト) 約 4,823 約 11 約 99.8%
git status 約 120 約 30 約 75%

cargo test の例では、個別のテストが成功したというログをすべて削り、「262 passed」というサマリー一行に圧縮しています。これだけで、AIが理解すべき内容は損なわずに、コストを劇的に抑えられていることがわかります。

実際に数週間運用した開発者のデータによると、15,000回以上のコマンド実行において、平均して約88.9%のトークン削減に成功したとのことです。

導入することで得られるメリット

このツールを導入することで、ユーザーのタイプに合わせて以下のようなメリットがあるかと思います。

APIや従量課金ツールを利用している場合

単純に支払額が減ります。記事によれば、請求額の約70%が実はこうした「ノイズ」に対する支払いであるケースも少なくないようです。ここを削ることで、より高度なモデルを安価に使い続けることが可能になります。

サブスクリプション型ツール(Claude Code Pro等)を利用している場合

「一日のメッセージ上限」や「コンテキストウィンドウ」を節約できます。大規模なリファクタリング作業など、長時間にわたるセッションでもAIが記憶を保持しやすくなり、作業の効率が落ちにくくなるはずです。

おわりに

AIエージェントの性能が向上する一方で、それを受け取る私たちの「情報の渡し方」も工夫が必要になってきていると感じます。

RTKのようなツールを使って、AIに渡す情報を「賢く間引く」というアプローチは、今後の開発ワークフローにおいて当たり前のものになっていくかもしれません。まずは自分の環境で、どの程度「ノイズ」を垂れ流しているのかを rtk gain などのコマンドで確認してみるのも面白いのではないでしょうか。

一応、こうしたツールの導入によって、万が一AIが必要とする情報まで削られてしまわないかという懸念もありますが、現在のフィルタリング精度を見る限り、実務でのバランスはかなりうまく取れているようです。

参照記事