给 LLM API 请求「减肥」
你有没有想过一个问题:每次 AI 代理跟模型对话,发出去的请求里有大量「废话」。比如 AI 跑了个 npm run build,报了 200 行日志,其中有用的可能就 2 行。但模型可不管,它对着所有 200 行做推理,你为每行付了钱。
llmtrim 就是解决这个浪费的。它是一个本地代理,坐在你的 AI 工具和 LLM API 之间,把请求里的冗余内容裁掉再转发出去。模型收到的消息更短、推理更便宜,但回答质量不受影响。
根据作者在 112 个真实案例上的 A/B 测试,平均省 31% 输入 token、74% 输出 token、费用降低 66%。而且压缩后的回答质量从 78.9% 略升到了 82.2%(是的,裁掉废话后模型反而表现更好了)。
怎么做到的?
llmtrim 在发送请求前跑 10 道压缩工序,每道工序只在自己能省 token 时才执行,否则自动回退:
- tool-output——把 AI 的日志、diff、grep、dump 输出折叠成模板,保留错误和变化行。200 行的 build log → 5 行摘要
- cache discipline——排序工具定义、设置 prompt cache key,让缓存命中率更高
- lexical retrieval——BM25+ 排序 + TextTiling 切主题,只保留相关上下文
- skeletonization——用 tree-sitter 解析 14 种语言代码,保留有用的函数体,其余缩成签名
- serialize + hygiene——JSON 压缩、记录数组编码成 TOON/CSV
- json sample——超大记录数组只保留首几条 + 离群值 + 有代表性的样本
- dedup——合并重复或几乎重复的文本行
- output control——精简指令、设置 token 预算
- tool layer——只保留当前任务需要的工具定义
- multimodal——图片缩放到模型支持的最大分辨率
最巧妙的设计是安全性:每道有损压缩步骤都会检测对查询答案的影响,如果覆盖度下降太多就回退。如果压缩后的请求被 API 拒绝,会自动用原始请求重发。最坏情况是没省到钱,绝不会因为压缩多花钱或得到更差的回答。
和 RTK 什么关系?
RTK 是本博客之前介绍过的工具,它主要在 CLI 端压缩输出(裁剪 git diff、构建日志等终端内容)。llmtrim 则是在 HTTP 请求层工作,压缩的内容包括工具定义、系统提示词、对话历史、代码骨架——覆盖范围更广。两者可以互补使用:RTK 管终端输出,llmtrim 管 API 请求。
如果你已经在用 RTK,llmtrim 可以叠加在其上,互不冲突。
安装
# 推荐方式(npm)
npm install -g @llmtrim/cli@latest && llmtrim setup
# 或者一键脚本
curl -fsSL https://raw.githubusercontent.com/fkiene/llmtrim/main/install.sh | sh
# Homebrew
brew install fkiene/tap/llmtrim
llmtrim setup 会做三件事:创建 CA 证书(仅限 LLM API 域名)、设置代理环境变量、注册后台服务。之后打开新终端,所有 AI 工具自动走代理。
用 llmtrim ca 可以查看证书详细信息,确认只对 LLM API 域名有效,不拦截其他流量。
使用方式
日常使用——零操作
装完 setup 后,代理在后台运行。你正常用 Claude Code、Cursor、Aider 等工具,llmtrim 自动拦截并压缩请求。完全无感。
查看省钱报告
llmtrim status # 健康状态 + 节省报告
llmtrim status --watch # 实时仪表盘
llmtrim status --monthly # 月度账单
诊断
llmtrim doctor # 端到端检查,失败的会给出修复方法
手动压缩(不启动代理)
echo '{"model":"gpt-4o","messages":[...]}' | llmtrim compress --provider openai
或者直接压缩并发送:
echo '{"model":"gpt-4o","messages":[...]}' | llmtrim send --provider openai
作为 MCP 服务器
llmtrim mcp install
注册后,Claude Code 可以直接调用 llmtrim_compress 和 llmtrim_stats 工具。
配置
默认零配置。如果需要微调,可以通过环境变量或 ~/.config/llmtrim/config.toml:
| 预设 | 适用场景 |
|---|---|
auto |
默认,自动识别请求类型并路由 |
safe |
仅无损压缩,字节级精确 |
reasoning |
数学/推理场景 |
cache |
固定前缀大量重复调用 |
能用在哪?
| 工具 | 支持 | 备注 |
|---|---|---|
| Claude Code | ✅ | prompt cache 折扣不受影响 |
| Codex CLI | ✅ | |
| Cursor | ✅ | 识别 NODE_EXTRA_CA_CERTS |
| GitHub Copilot | ❌ | 证书固定,无法拦截 |
支持 OpenAI、Anthropic、Google、DeepSeek、Mistral、xAI、Moonshot、Zhipu、Qwen、OpenRouter 等几乎所有主流模型提供商。
我的看法
llmtrim 是我最近看到最聪明的「省钱工具」。它思路很清新——不是教你怎么写更省 token 的 prompt,而是在发出去的最后一刻把能裁的全裁了。
几个让我印象深刻的地方:
- 安全优先——每道压缩工序都会验证效果,不对就回退。安全设计是第一位。
- 覆盖全面——从工具定义、代码、日志、JSON 到图片,几乎没有漏掉的浪费点。
- 零配置——装完 setup 就能用,auto 模式覆盖绝大多数场景。
- Claude Code 友好——prompt cache 折扣不受影响,省的钱是纯利润。
- 生态丰富——MCP 协议、多种语言绑定、可嵌入。
作为 Rust 编写的项目,它只有 4MB 的静态二进制文件,开销 <10ms,非常轻量。如果你用 Claude Code 比较频繁,每个月有 API 账单的,llmtrim 能把费用直接降一半以上。
项目地址:fkiene/llmtrim · 许可:AGPL-3.0 · 🌟 56 Stars(截至 2026-06-16)