トークン節約

NanoClaw のアップデートで RTK が pnpm test を素通りしてた話

TL;DR — RTK の rewrite は pnpm run build を圧縮するが pnpm test(実体は vitest run)は素通り。加えて /update-nanoclaw/update-skills を同一コンテキストで自動呼び出ししていた。SKILL.md を2行変えて解決。

NanoClaw の大型アップデート来ましたね。かなり中身が変わっていてローカルでのマージにものすごく時間がかかりました。最終的には、

「もう俺の作ったスキルさえ無事なら後はどうでもいいから全部上書きしちゃって!」

と雑な投げ方をしてアップデートをしてもらいました。

無事(一部無事じゃなかったけど git のログから復旧した)終わったんだけど、後日再度 /update-nanoclaw を実行した時の話です。

/update-nanoclaw を実行したら5時間制限の40%くらいを1回で使い切ってしまった。なにこれ、と思って Claude さんに調べてもらった。

以前 RTK を入れた記事を書いたとき、「効果はこれからに期待」と書いたんだけど、うまく行かなかったようで…

以下は、Claude さんに解説してもらった文章です。

RTK の仕組みをおさらい

RTK は Claude Code の PreToolUse hook として動く。Bash ツールが呼ばれるたびに rtk hook claude が起動し、rtk rewrite "<コマンド>" でコマンドを書き換えられるか確認する。

  • 書き換えできる(exit 3)→ rtk <subcommand> が代わりに実行され、出力が圧縮される
  • 書き換えできない(exit 1)→ 元のコマンドがそのまま実行される(RTK はノータッチ)

何が素通りしていたか

rtk rewrite "pnpm run build"
# → rtk pnpm run build(exit 3: 書き換え成功)

rtk rewrite "pnpm test"
# → (何も出力なし、exit 1: 書き換えなし)

pnpm run build は圧縮される。でも pnpm test は exit 1 で素通り。

Claude Code のトークンを節約する RTK を入れた

TL;DR — RTK(Rust Token Killer)は Claude Code の bash 出力をフィルタして LLM へのトークン消費を削減するプロキシ。rtk init -g だけで自動設定される。

ちょっと仕事が忙しくて疲弊してたんだけど、気分転換に前から気になってたツールを入れてみた。

効果はこれからに期待。

RTK とは

RTK (Rust Token Killer) は、Claude Code などの AI アシスタントが bash コマンドを実行したときの出力をフィルタして、LLM に渡るトークン数を削減する CLI プロキシ。git logls の出力って、そのまま渡すと無駄に長いことが多い。RTK はそれをコンパクトにまとめてから Claude のコンテキストに入れてくれる。公称で 60〜90% の節約効果があるらしい。

インストール

brew install rtk
rtk init -g

rtk init -g を叩くだけで、以下が自動設定される:

  • ~/.claude/RTK.md の生成(Claude Code に RTK の使い方を教えるファイル)
  • ~/.claude/settings.json への hook 追記(PreToolUse/Bashrtk hook claude が入る)

これ以降、Claude Code が bash を呼ぶたびに透過的に RTK を通るようになる。ユーザー側で何か変えなくていい。