本記事では、Claude Code のトークン消費を抑える sqz というツールのインストールと設定を紹介する。個人アプリ開発・Qiita記事のネタ探し・記事執筆など複数の用途が混在する自分の環境に導入してしばらく使った結果、平均23.5%のトークン削減になった(あくまで自分の利用環境での参考値)。
このツールは長いコマンドの出力をモデルに渡る前に自動で圧縮する。
sqzとは
sqz はコマンド単体の圧縮だけでなく、セッション全体を通じた節約が効く。仕組みは4つある。
- 単発圧縮:コマンド出力をその場で短く書き換える
-
dedupキャッシュ:直前に渡した内容と完全に同じ出力が再び現れたら、本文の代わりに
§ref:33f3520f08182e1e§のような短い文字列に置き換える。この文字列をトークナイザにかけると13〜14トークン程度になる(cl100k_baseで実測)。ファイルを何度も読み直すセッションで大きく効く(sqz README) - デルタエンコード:ファイルを数行変更して再読み込みした場合、ファイル全体ではなく差分のみ送信する(約60〜75トークン)
- 予測プリキャッシュ:ファイルを読むとき、そのimportを解析して依存ファイルを先にキャッシュする。後でそのファイルを読んだときは即座にdedup hitになる
dedupキャッシュが13〜14トークンで済むのは、内容を伝え直しているのではなく「直前に渡したものと同一」というメタ情報だけを渡しているからである。sqzは出力全体のSHA-256ハッシュをキーにしたローカルキャッシュ(~/.sqz/sessions.db というSQLiteファイル)で各エントリの最終アクセス時刻を管理しており、会話がcompactionされていない(=モデルがまだ保持しているはず)ハッシュだけを参照に置き換え、compactionを挟んだ(=手元から消えている可能性がある)ハッシュは本文をもう一度フルで送り直す。この判定をモデルに渡す前段階(PreToolUseフック)に行うため、本来なら数百〜数千トークンかかる本文がモデルの会話履歴に渡らない。
インストール
eget でインストールする(eget の使い方はこちら)。圧縮用の sqz と、MCPサーバーの sqz-mcp の2つが必要になる。
eget ojuschugh1/sqz --file sqz --to ~/bin/sqz
eget ojuschugh1/sqz --file sqz-mcp --to ~/bin/sqz-mcp
~/bin に PATH が通っていなければ追加する。
設定
設定は2ステップ。
1. フックを登録する
インストール後、次のコマンドを実行する。
sqz init --global
これで ~/.claude/settings.json の hooks.PreToolUse 配列の末尾に、1オブジェクトが追加される。
// ~/.claude/settings.json(既存の設定はそのまま、末尾に追加される)
{
"hooks": {
"PreToolUse": [
// ... 既存のフック設定 ...
{ // ← sqz が追加するのはここだけ
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "/home/<user>/bin/sqz hook claude",
"timeout": 5,
"statusMessage": "sqz compressing output"
}
]
}
]
}
}
特定のプロジェクトだけに絞るなら、引数なしの sqz init で .claude/settings.local.json に書き込まれる。
2. MCPサーバーを登録する
続いて sqz-mcp をMCPサーバーとして登録する。~/.claude.json の mcpServers に追記する。
{
"mcpServers": {
"sqz": {
"command": "sqz-mcp",
"args": ["--transport", "stdio"]
}
}
}
sqz-mcp は、expand など圧縮と解凍に関する機能を提供する。MCPサーバーは各機能の説明文をモデルに渡すしくみになっていて、expand の説明文に「§ref:HASH§ を見たら元の内容を復元できる」と書いてある。モデルがこのトークンを読めるのはそのためである。
ここまで設定したら Claude Code を再起動すれば有効になる。
rtkが気になる人へ
同種のツールに rtk(Rust Token Killer) がある。こちらも有力だが、rtk init -g を実行すると次の変更が走る。
-
~/.claude/hooks/rtk-rewrite.sh(約200行)を新規作成 -
RTK.mdを新規作成 -
~/.claude/CLAUDE.mdに@RTK.mdを追記
CLAUDE.md は自分で管理しているファイルなので、勝手に書き換えられたくない人もいるだろう。sqz はこれらの変更を行わず、settings.json(hook)と~/.claude.json(MCPサーバー)への追記だけで完結する。
性能面の比較はこちらで。公式ベンチマーク(benchmark-vs-rtk.md)
まとめ
- 自分の利用環境(個人開発・記事執筆など複数用途混在)で平均23.5%トークンを削減
- hook1つとMCP設定を追加するだけなのでファイルを汚したくない人に向いている