zdk/lowfat
lowfat - slim your command output. strips noise, saves tokens.
lowfat – 精简 CLI 输出以节省 AI token 成本
它是什么 – lowfat 是一个小巧的单二进制命令行工具,位于你的 shell(或 AI 助手集成)和你运行的命令之间。它在文本发送到大型语言模型(LLM)代理之前,过滤并压缩命令和文件的文本输出,从而减少模型需要处理的 token 数量。
为什么重要 – LLM 按 token 收费。当 AI 助手运行 shell 命令(例如 git diff)并将原始输出输入模型时,大量文本是噪音(状态消息、未更改的行、注释等)。lowfat 会移除或折叠这些噪音,让相同的命令以更少的 token 传达必要信息。
核心概念
| 概念 | 含义 |
|---|---|
| 轻量级 | 一个小型 Rust 二进制文件;额外行为通过插件添加。 |
| 本地优先 | 无遥测 – 所有数据都保留在你的机器上。 |
| 可组合 | 像任何 Unix 过滤器(` |
| 用户自有 | lowfat history 显示哪些命令节省了最多的 token,让你根据自己的工作流程调整过滤器。 |
工作原理
- 工具前钩子 – 在命令运行之前,
lowfat使用过滤器管道重写命令(或其参数)。 - 读取后钩子 – 在代理(例如 Claude)读取文件后,
lowfat post-read压缩文件内容(去除注释、截断大型数组、总结锁文件等)。 - 级别 – 三种压缩级别:
lite– 轻度修剪,对大多数情况安全。full– 更强的削减(例如,删除未更改的 diff 块)。ultra– 最大压缩(折叠函数体,仅保留签名)。
- 插件 – 使用
.lfDSL、shell 或 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
# 查看到目前为止节省了多少 token
lowfat stats
lowfat stats --audit # 最近的插件运行
lowfat history # 按潜在节省量对命令排序
# 动态更改压缩级别
lowfat level ultra # 为会话设置默认值
LOWFAT_LEVEL=lite lowfat git log # 一次性覆盖
代理集成
- Claude Code – 在
~/.claude/settings.json中添加一个钩子,使每个 Bash 命令自动通过lowfat。 - OpenCode –
lowfat opencode install为检测到的 OpenCode 版本放置适当的插件;命令会被透明地重写。 - Shell –
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% |
这些数字反映原始输出的 token 缩减;实际节省取决于你的 LLM 提示中有多少是命令输出。
与类似工具的比较
| 特性 | lowfat | rtk(最接近的竞争对手) |
|---|---|---|
| 核心大小 | 最小二进制,插件驱动 | 功能齐全的巨石 |
| 内置命令 | 6 个精选(git、docker、grep、find、ls、tree) | 100+ |
| 自定义过滤器语言 | .lf DSL + shell + 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 输出和文件内容来降低 token 成本的人。其插件架构允许你扩展工具以支持任何你依赖的命令,而内置集成使其易于融入现有的 AI 代理工作流程。
相关
- Dispatch
- 项目
- 项目
- 项目
- 项目