给 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 时才执行,否则自动回退:

  1. tool-output——把 AI 的日志、diff、grep、dump 输出折叠成模板,保留错误和变化行。200 行的 build log → 5 行摘要
  2. cache discipline——排序工具定义、设置 prompt cache key,让缓存命中率更高
  3. lexical retrieval——BM25+ 排序 + TextTiling 切主题,只保留相关上下文
  4. skeletonization——用 tree-sitter 解析 14 种语言代码,保留有用的函数体,其余缩成签名
  5. serialize + hygiene——JSON 压缩、记录数组编码成 TOON/CSV
  6. json sample——超大记录数组只保留首几条 + 离群值 + 有代表性的样本
  7. dedup——合并重复或几乎重复的文本行
  8. output control——精简指令、设置 token 预算
  9. tool layer——只保留当前任务需要的工具定义
  10. 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_compressllmtrim_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)