大家好,我是何三,独立开发者

你给 Claude Code 发了一条指令。它收到了一堆废话。

1241 个 token 的 git diff 输出,真正有用的不到 40 个 token——97% 都是噪音。这不是我的推测,这是 zdk/lowfat 实测出来的数据。一个刚在 Hacker News 拿到 150+ points 的 Rust 项目,专治 AI 编程的 Token 浪费。

用过 AI 编程的人应该都懂那种感觉——Claude Code 或者 Copilot 接到指令后,先花大量 token 去消化那些毫无意义的终端输出。git status 打印了一堆 "use git add \<file>..." 的提示文字,git log 重复渲染了每个 commit 的元数据边框,ls -la 里夹杂着隐藏文件的权限信息。

这些信息对 AI 理解你的意图没有任何帮助。

但它们照吞不误,然后算你的钱。

Lowfat 干的事很简单:把命令输出里的废话滤掉,只把有信息量的部分喂给 AI

lowfat数据对比

效果有多离谱?你自己看:

命令 原始输出 ultra 级别
git diff 减少 96%
git log 减少 91%
git status 减少 74%
docker ps 减少 85%
ls -la 减少 87%

对,你没看错。git diff 的输出能砍掉 96%,git log 砍 91%。跟竞品 rtk 的头对头对比里,Lowfat 的 git 相关命令压缩率直接碾压——git log 压缩 97% vs rtk 的 56%,git status 压缩 91% vs rtk 的 79%。

换句话说,同样的上下文窗口,别人能跑 1 轮对话,你能跑 4 轮

它是怎么做到的

原理说穿了不值钱。

Lowfat 不是一个通用的文本压缩器。它针对每种命令,都写了一套「哪些有用、哪些是废话」的规则。

比如 git status 的输出——AI 开发者真正需要知道的是: 1. 当前在哪个分支 2. 哪些文件被修改了 3. 哪些文件还没被追踪

至于 "use git add \<file> to update what will be committed" 这种提示文字、空行分隔符、表格边框——统统扔掉。

git diff 更狠。你给 AI 看一个 diff,它需要的是修改了哪几行、改了什么内容。不需要知道文件路径用几个反引号括起来的、行号前那几个空格偏移量有多少。Lowfat 把这些全剪了,剩下纯粹的代码变更信息,AI 一样理解。

这东西怎么说呢……就是那种,你知道了以后会拍大腿说「为什么我没早点想到」的解决方案。

说到这个我就想起之前做的一个项目,当时为了省 token 费,我自己写了个 shell 脚本过滤 git diff 的输出,写了三版都没写好,不是过滤过头把有用信息删了,就是过滤不够省不下来。最后放弃了,心想"算了,token 才几个钱"。结果 Lowfat 的作者直接把这事儿做成了通用工具,还开源了。

真的服气。

大白话总结:Lowfat 就是个给 AI 程序员用的「去废话过滤器」,把终端命令输出里 AI 不该吃进去的垃圾扔掉,省你的 token 钱。

怎么装、怎么用

安装就两行的事:

# 用 Cargo 装
cargo install lowfat

# 或者用 Homebrew
brew install zdk/tools/lowfat

Rust 编译的单二进制,轻到没感觉。

装完之后,最常用的用法就是给 git 命令加个前缀:

lowfat git status
lowfat git diff
lowfat git log

效果立竿见影——肉眼可见输出变短了,信息密度高了。

但 Lowfat 真正的杀招是跟 AI 编程工具的集成。比如 Claude Code,你只需在 .claude/settings.json 里加一段配置:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [{ "type": "command", "command": "lowfat hook" }]
      }
    ]
  }
}

之后 Claude Code 每次执行 bash 命令,输出都会先过一遍 Lowfat 再喂给 LLM。你就正常写代码,它在后台默默帮你省 token。

还有一个更绝的用法——装到 shell 里自动激活:

echo 'eval "$(lowfat shell-init zsh)"' >> ~/.zshrc

它会自动检测你是不是在 Claude Code、Codex 这类 AI 环境里,是就自动开始过滤,不是就乖乖闭嘴不干活。设置 LOWFAT_ENABLE=1 可以强制在任何终端都开启。

Lowfat 还内置了一个小仪表盘:

lowfat stats       # 看看省了多少 token
lowfat history     # 哪个命令帮你省得最多
lowfat level ultra # 调成最强压缩模式

打开 lowfat stats 看到那串数字的时候——说实话,这个效果我真的太爱了。

跟 rtk 比怎么样

Lowfat 不是这个赛道唯一的选手。最接近的竞品是 rtk,装机量更大,集成的工具链更多(支持 Claude Code、Copilot、Gemini、Codex 等 14 种工具)。

但两者理念不太一样:

  • rtk 是"全家桶"风格,内置了 100+ 命令的过滤规则,开箱即用
  • Lowfat 是"极简内核 + 可扩展"风格,内置 6 个核心命令(git、docker、ls、grep、find、tree),但你可以用 .lf DSL 自己写过滤规则

说实话,如果你只用 Claude Code 或 Copilot,不太折腾,rtk 的即插即用更适合你。但如果你习惯自己调教工具链,Lowfat 的灵活性会让你觉得——这玩意儿的架构设计得真干净。

为什么这么设计?别问我,问作者去。反正我个人更喜欢 Lowfat 的路线,就那种 UNIX 哲学那种感觉,一个工具只做好一件事。

另外,Lowfat 的官方文档写得不错——ARCHITECTURE.md 里有详细的架构图和插件开发指南。如果你会写简单的脚本,照着写一个自己的 filter 很有意思。

一些值得说的细节

Lowfat 支持三级压缩:lite(轻度)、full(中度)、ultra(激进)。

ultra 模式会把能删的都删了,但有可能删掉 AI 需要的上下文。比如 find 命令在 ultra 模式下才会开始压缩,这说明作者保留了克制——不是所有输出都无脑压缩。

还有一点让我挺舒服的:这东西完全本地运行,不上传任何数据。没有遥测,没有后台,你的代码数据你自己掌握。对比某些 AI IDE 插件偷偷把数据往外传的骚操作,Lowfat 这种"local-first"的立场让我觉得作者是个实在人。

总结

Lowfat 解决了一个真实痛点——AI 编程时代,Token 就是钱。git diff 输出减少 96%、git log 减少 91%,这些数字不是噱头,是实测结果。一个轻量级的 Rust 单二进制,装好之后它就在后台默默工作,省下来的 token 不会让你暴富,但日积月累,差的不是一星半点。

装不装都行,看你自己。反正我已经装上了。

GitHub 地址:https://github.com/zdk/lowfat

本文使用 MGO 编辑并发布

关注"何三笔记",回复"mgo" 免费下载使用