zdk/lowfat
lowfat - slim your command output. strips noise, saves tokens.
lowfat – CLI 出力をトリミングして AI トークンコストを節約
概要 – lowfat は、シェル(または AI アシスタント統合)と実行するコマンドの間に位置する、小さな単一バイナリのコマンドラインツールです。コマンドとファイルのテキスト出力を、そのテキストが大規模言語モデル(LLM)エージェントに送信される前にフィルタリングして圧縮し、モデルが処理する必要のあるトークン数を削減します。
重要性 – LLM はトークンごとに課金されます。AI アシスタントがシェルコマンド(例:git diff)を実行し、その生の出力をモデルに送ると、テキストの多くはノイズ(ステータスメッセージ、変更されていない行、コメントなど)です。lowfat はそのノイズを除去または圧縮し、同じコマンドがはるかに少ないトークンで必須情報を伝達できるようにします。
コアアイデア
| アイデア | 意味 |
|---|---|
| 軽量 | 小さな Rust バイナリ。追加の動作はプラグインで追加されます。 |
| ローカルファースト | テレメトリなし – すべてのデータはマシン上に留まります。 |
| 構成可能 | 任意の Unix フィルタ(` |
| ユーザー所有 | lowfat history はどのコマンドが最も多くのトークンを節約したかを示し、自分のワークフローに合わせてフィルタを調整できます。 |
仕組み
- ツール前フック – コマンドが実行される前に、
lowfatはフィルタパイプラインを使用してコマンド(またはその引数)を書き換えます。 - 読み取り後フック – エージェント(例:Claude)がファイルを読み取った後、
lowfat post-readはファイル内容を圧縮します(コメントの削除、大きな配列の切り詰め、ロックファイルの要約など)。 - レベル – 3 つの圧縮レベル:
lite– 軽度のトリミングで、ほとんどの場合に安全です。full– より強力な削減(例:変更されていない diff ハンクを削除)。ultra– 最大圧縮(関数本体を折りたたみ、シグネチャのみ保持)。
- プラグイン –
.lfDSL、シェル、または Python(PEP 723/uv)で独自のフィルタを作成できます。組み込みセットはgit、docker、grep、find、ls、treeなどの一般的なツールをカバーしています。
インストール
# Cargo(Rust パッケージマネージャー)経由
cargo install lowfat
# または Homebrew(macOS/Linux)
brew install zdk/tools/lowfat
プリビルドバイナリは GitHub Releases ページからも入手できます。
クイックスタート
# lowfat でコマンドを実行
lowfat git status
lowfat docker ps
lowfat ls -la
# 設定済みフィルタとその音量を表示
lowfat info
lowfat info git
# これまでに節約したトークン数を確認
lowfat stats
lowfat stats --audit # 最近のプラグイン実行
lowfat history # 潜在的な節約量でコマンドをランク付け
# 圧縮レベルを動的に変更
lowfat level ultra # セッションのデフォルトを設定
LOWFAT_LEVEL=lite lowfat git log # 1 回限りのオーバーライド
エージェント統合
- Claude Code –
~/.claude/settings.jsonにフックを追加して、すべての Bash コマンドが自動的にlowfatを通過するようにします。 - OpenCode –
lowfat opencode installは、検出された OpenCode バージョンに適切なプラグインを配置します。コマンドは透過的に書き換えられます。 - シェル –
eval "$(lowfat shell-init zsh)"(またはbash)は、CLAUDECODE=1などの環境変数が存在する場合、またはLOWFAT_ENABLE=1を設定した場合にlowfatをアクティブにするラッパーを追加します。 - Pi エージェント – エージェントの
shellCommandPrefixにeval "$(lowfat shell-init zsh)";を追加します。
ファイル内容の圧縮(post-read)
| タイプ | lowfat の動作 |
|---|---|
| ソースコード(Rust、Python など) | コメントを削除し、空白を正規化。ultra は関数本体をシグネチャに折りたたみ |
| Markdown | バッジ/HTML コメントを削除し、長いコードブロックとテーブルを切り詰め |
| HTML / Vue / Svelte | <style>/<script> セクションを削除し、オプションでテキストのみ保持 |
| JSON / JSONC | 巨大な配列を切り詰め、深いネストを折りたたみ |
| ロックファイル(Cargo.lock、package-lock.json など) | 短い要約(パッケージ数 + トップ依存関係)に置き換え |
| 不明 | 行数メモ付きで先頭と末尾を保持 |
約 10% 未満の節約になるファイルはそのまま通過します。
パフォーマンススナップショット(サンプルリポジトリ)
| コマンド | lite での削減 |
full |
ultra |
|---|---|---|---|
git diff |
–16% | –38% | –96% |
git log |
–53% | –80% | –91% |
git status |
–62% | –62% | –74% |
docker ps |
–38% | –38% | –85% |
ls -la |
–2% | –75% | –87% |
これらの数値は生出力のトークン削減を反映しています。実際の節約は、LLM プロンプトのどれだけがコマンド出力で構成されているかによって異なります。
類似ツールとの比較
| 機能 | lowfat | rtk(最も近い競合) |
|---|---|---|
| コアサイズ | 最小バイナリ、プラグイン駆動 | バッテリー同梱のモノリス |
| 組み込みコマンド | 6 つの厳選(git、docker、grep、find、ls、tree) | 100+ |
| カスタムフィルタ言語 | .lf DSL + シェル + Python |
TOML DSL |
| 圧縮レベル | lite/full/ultra |
--aggressive、--ultra-compact |
| 読み取り後ファイル圧縮 | あり(コード、markdown、HTML、JSON、ロックファイル) | 限定 |
| テレメトリ | なし | オプトイン、匿名集計 |
| 節約分析 | ローカル stats と history |
ローカル gain と discover |
ライセンスと由来
- ライセンス – Apache-2.0(寛容、商用利用に適しています)。
- AI 通知 – プロジェクトは開発中に複数の AI ツールが使用されたことを認めています。
結論
lowfat は、LLM ベースのコーディングアシスタント(Claude、OpenCode、Pi など)を使用し、ノイズの多い CLI 出力とファイル内容をトリミングしてトークンコストを低く抑えたい人にとって、実用的でプライバシー優先のユーティリティです。プラグインアーキテクチャにより、依存する任意のコマンドにツールを拡張でき、組み込み統合により既存の AI エージェントワークフローに簡単に組み込めます。
関連
- Dispatch
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト