rtkはRustで書かれた単一バイナリのCLIプロキシです。git status、cargo test、npm testなどのコマンド出力をLLMに渡す前にフィルタリング・圧縮し、エージェントが読むbash出力バイトを削減します。100種類以上のコマンドに対応し、Claude Code・Cursor・Codexなど複数のAIツール向けフックを同梱しています。
仕組みは3段階です。まずエージェント側のフック(PreToolUse等)がBashツール呼び出しを検知し、`rtk rewrite`にコマンド文字列を渡します。src/hooks/rewrite_cmd.rsがこれを受け取り、レジストリと照合して終了コードで判定を返します(0=自動書き換え、1=対象外でそのまま実行、2=拒否ルール一致、3=承認要求つき書き換え)。次に`git status`のようなコマンドは`rtk git status`に置き換わり、実際にはsrc/cmds配下の各コマンドモジュール(git・js・jvm・go・dotnet・phpなど)が生の出力を解析し、失敗のみ表示や件数集約など専用ロジックで圧縮します。最後にcore/trackingがSQLiteに削減バイト数を記録し、src/analytics配下の`rtk gain`や`rtk session`が読み取り専用でダッシュボード化します。トークン数はbytes÷4の概算であり、専用トークナイザは同梱していないとREADMEに明記されています。
- STEP 01
`brew install rtk`または`install.sh`でバイナリを導入すると、単一実行ファイルとして`~/.local/bin`などに配置されます。
- STEP 02
`rtk --version`と`rtk gain`を実行し、バージョン表示と空の削減ダッシュボードが出ることを確認します(crates.ioの同名パッケージと取り違えると`rtk gain`が失敗する点に注意、とREADMEにあります)。
- STEP 03
`rtk init -g`(Claude Code向けなど)を実行すると、対象エージェントのフック設定ファイルが生成されます。
- STEP 04
エージェントを再起動後、通常どおり`git status`を打つと、フックが裏で`rtk git status`に書き換え、40行の出力が3行程度に圧縮されて渡される、とdocs/guide/index.mdの図で説明されています。
- STEP 05
`rtk gain --daily`や`rtk discover`を叩くと、日別の削減率やRTKを経由せず素通りしたコマンド(見逃した節約分)が一覧表示されます。
手に入るのは、対応コマンドの出力バイト削減率を可視化するダッシュボード(`rtk gain`)と、実際にエージェントへ渡るbash出力が短くなるという体験です。ただしREADME自身が、バイト削減率とAPI課金の削減率は同じではないと明言しており、絶対トークン数はbytes÷4の概算にすぎません。
フックが効くのはBashツール呼び出しのみで、Claude CodeのRead・Grep・Globなど組み込みツールは自動書き換えの対象外、とREADMEに明記されています。
報告されるトークン数はbytes÷4の概算であり、実際の課金トークナイザとは異なるため、絶対値ではなく削減率の参考値として扱うべきです。
crates.ioに同名の別プロジェクト(Rust Type Kit)が存在するため、`cargo install`時は`--git`指定でリポジトリから直接入れる必要があります。
対応コマンドはgit・cargo・npm・go・dotnet・phpなど多岐にわたりますが、リストにない独自スクリプトやコマンドは当然圧縮対象外です。
日常的にClaude CodeやCursorなどのエージェント経由でgit・test・lint系コマンドを多用し、bash出力でコンテキストを消費しがちな開発者には向いています。単一Rustバイナリで導入コストが低く、`rtk gain`で効果を数値確認できる設計も実務向きです。ソースコード(cmds配下の各言語モジュール、core/tracking、analytics)とREADMEの記述が一致しており、削減率と課金削減を意図的に区別して誠実に説明している点は、実測せずとも一定の信頼を置ける根拠になります。一方で、対応コマンド以外や組み込みツール経由の呼び出しには効果が及ばない点は事前に理解しておくべきです。