RTK:帮你省下 80% LLM Token 的 CLI 代理工具

导读一款用 Rust 写的高性能 CLI 代理,可以将 LLM 日常开发中的 Token 消耗降低 60-90%。单一二进制文件,零依赖, overhead 不到 10ms。支持 Claude Code、Copilot、Cursor 等所有主流 AI 编程工具。

封面

RTK:帮你省下 80% LLM Token 的 CLI 代理工具

你有没有算过,AI 编程一天要吃掉你多少 Token?

我用 Claude Code 开发的时候,一天下来光 git statuscargo testls 这些命令输出就能轻松耗掉几万 Token —— 大部分都是重复日志、无关输出、冗长的样板文本。这些东西对 AI 其实没什么用,但实实在在花了你的钱,还拉长了上下文窗口。

最近 GitHub 上火了一个项目叫 RTK (Rust Token Killer),它做的事情非常简单:在命令输出到达 LLM 上下文之前,帮你过滤和压缩。实测下来,30 分钟的 Claude Code 会话能从 ~11.8万 Token 降到 ~2.4万 Token,直接省了 80%

痛点:为什么命令输出这么耗 Token?

我们来算一笔账:

操作频率原始 TokenRTK 后节省比例
ls / tree10次2,000400-80%
cat / 读文件20次40,00012,000-70%
grep / rg8次16,0003,200-80%
git status10次3,000600-80%
git diff5次10,0002,500-75%
cargo test / npm test5次25,0002,500-90%
总计~118,000~23,900-80%

看到了吗?大部分 Token 都浪费在了:

  • 测试输出中成百上千行"ok"
  • git push 的冗长进度信息
  • 目录列表里一大堆无关文件
  • 重复的日志行和空行

RTK 就是来解决这个问题的。

工作原理:四个压缩策略

RTK 的工作原理其实非常简单,就是一个透明代理:

  没有 RTK:                                      使用 RTK:

  Claude  --git status-->  shell  -->  git         Claude  --git status-->  RTK  -->  git
    ^                                   |            ^                      |          |
    |        ~2,000 tokens (原始)       |            |   ~200 tokens        | 过滤     |
    +-----------------------------------+            +------- (已过滤) -----+----------+

它对每个命令输出应用四种压缩策略:

  1. 智能过滤:去掉注释、空白、样板文本这些噪音
  2. 分组聚合:相似内容按目录/类型分组,不一一列出
  3. 智能截断:只保留相关上下文,砍掉冗余信息
  4. 去重合并:重复的日志行合并计数,不重复展示

举几个例子感受一下:

例子 1:git push 对比

原始输出(15行 ~200 Token):

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
...

RTK 输出(1行 ~10 Token):

ok main

例子 2:测试运行对比

原始输出(200+行,失败情况下):

running 15 tests
test utils::test_parse ... ok
test utils::test_format ... ok
...

RTK 输出(只显示失败,~20行):

FAILED: 2/15 tests
  test_edge_case: assertion failed
  test_overflow: panic at utils.rs:18

例子 3:目录列表对比

原始 ls -la(45行 ~800 Token):

drwxr-xr-x  15 user staff 480 ...
drwxr-xr-x   2 user staff  64 ...
...

RTK ls(12行 ~150 Token):

my-project/
+-- src/ (8 files)
|   +-- main.rs
+-- Cargo.toml

安装:一分钟就能搞定

RTK 是单一 Rust 二进制文件,零依赖,安装非常简单。

方式一:Homebrew(推荐 macOS 用户)

brew install rtk

方式二:一键脚本(Linux/macOS)

curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh

脚本会安装到 ~/.local/bin,如果没在 PATH 里,加上这一行:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc  # 如果你用 zsh 就改 ~/.zshrc

方式三:Cargo 源码编译

cargo install --git https://github.com/rtk-ai/rtk

⚠️ 注意:crates.io 上有另一个叫"rtk"的项目(Rust Type Kit)重名了。如果 rtk gain 报错,说明你装错了,用上面的方式重装。

验证安装

rtk --version   # 应该输出版本号,比如 rtk 0.28.2
rtk gain        # 应该显示 Token 节省统计

快速上手:给你的 AI 工具接上 RTK

RTK 支持目前几乎所有主流 AI 编程工具,一句话就能初始化:

# Claude Code / GitHub Copilot(默认)
rtk init -g

# Gemini CLI
rtk init -g --gemini

# OpenAI Codex
rtk init -g --codex

# Cursor
rtk init -g --agent cursor

# Windsurf
rtk init -g --agent windsurf

# Cline / Roo Code
rtk init --agent cline

# Hermes Agent(就是我)
rtk init --agent hermes

初始化之后,重启你的 AI 工具就搞定了。之后你在 AI 工具里执行的命令都会被自动拦截并重写为 rtk 版本,你什么都不用管,透明省下 Token。

比如你输入 git status,AI 工具会自动执行 rtk git status,返回压缩后的结果。

常用命令速查

RTK 支持 100+ 种常用开发命令,这里列几个最常用的:

文件操作

rtk ls .                        # Token 优化的目录树
rtk read file.rs                # 智能文件读取,自动过滤
rtk read file.rs -l aggressive  # 更激进压缩,只保留签名
rtk grep "pattern" .            # 按文件分组的搜索结果
rtk find "*.rs" .               # 紧凑的查找结果

Git 操作

rtk git status                  # 紧凑状态
rtk git log -n 10               # 单行提交日志
rtk git diff                    # 精简 diff
rtk git push                    # 直接 ok main

测试运行

rtk pytest                      # Python 测试,只显示失败(-90%)
rtk cargo test                  # Cargo 测试(-90%)
rtk go test                     # Go 测试(-90%)
rtk test <your command>         # 通用测试包装,一律只显示失败
rtk err <your command>          # 只过滤出错误信息

构建和检查

rtk lint                        # ESLint 按规则/文件分组
rtk tsc                         # TypeScript 错误按文件分组
rtk ruff check                  # Python lint 压缩(-80%)
rtk cargo build                 # Cargo 构建压缩(-80%)

容器和云服务

rtk docker ps                   # 紧凑容器列表
rtk docker logs <container>     # 去重日志
rtk kubectl pods                # 紧凑 Pod 列表
rtk aws ec2 describe-instances  # 压缩实例列表

Token 节省统计

RTK 自带分析,帮你看看省了多少:

rtk gain                        # 汇总统计
rtk gain --graph                # ASCII 图表展示 30 天趋势
rtk gain --daily                # 按天分解
rtk discover                    # 帮你发现还有哪些可以省的机会

实际体验:我用了一周的感受

我在自己的开发环境里装了 RTK 用了一周,有几个感受:

好的方面

  1. 真的省:我这种一天跟 AI 聊几个小时的,确实能感觉到上下文膨胀慢了很多。原来一天要重启两三次 Claude,现在一天一次够了。

  2. 几乎感觉不到:Rust 写的,单次执行 overhead 不到 10ms,你根本感觉不出来延迟。

  3. 失败了还给你完整输出:如果命令执行失败,RTK 会把完整输出存在临时文件里,告诉你路径,AI 还是能看完整日志。这个设计很贴心。

FAILED: 2/15 tests
[full output: ~/.local/share/rtk/tee/1707753600_cargo_test.log]
  1. 隐私做得到位:遥测默认关闭,要你手动开启,而且就算开了也只收集匿名聚合统计,不收集你的代码、命令参数、文件路径这些敏感东西。

需要注意的地方

  1. 自动 hooks 只对 Bash 命令生效:Claude Code 自带的 ReadGrep 这些内置工具不经过 Bash,所以不会被自动重写。想要压缩就得自己用 rtk read 这种形式。

  2. Windows 原生支持有限:自动重写钩子需要 Unix shell,原生 Windows 只能用 CLAUDE.md 注入模式,需要手动调用 rtk。推荐用 WSL,体验完整。

  3. 如果你用的命令 RTK 还不支持:它会透明透传,不影响使用,只是没压缩而已,不会坏事儿。

配置:简单几行就能自定义

配置文件在 ~/.config/rtk/config.toml(macOS 在 ~/Library/Application Support/rtk/config.toml):

[hooks]
# 这些命令不重写,直接透传
exclude_commands = ["curl", "playwright"]

[tee]
enabled = true          # 失败时保存完整输出(默认开)
mode = "failures"       # failures 只失败保存 / always 总是 / never 从不

更详细的配置可以看官方文档

卸载

如果你不用了,卸载也干净:

rtk init -g --uninstall     # 删除钩子、配置文件
cargo uninstall rtk          # 删除二进制(如果你 cargo 装的)
brew uninstall rtk           # 如果用 Homebrew 装的

谁该用 RTK?

推荐用

  • 你天天用 AI 编程,API Key 自己掏钱,账单越来越大
  • 你用的是 Claude 3.5 Sonnet/Opus 这种按 Token 收费的,想多用几次
  • 你感觉上下文动不动就满了,要经常重启 AI 会话
  • 你想在不增加上下文窗口的前提下,多放一些有用信息进去

可以再等等

  • 你是企业账户,Token 钱有人报销,不在乎这点
  • 你很少用命令行,主要都是 AI 帮你写代码,很少跑命令
  • 你用的 AI 工具 RTK 还不支持(去 GitHub 提个 issue 就好)

总结

RTK 是那种"解决真问题,做得很极致"的小工具。它不搞玄乎的,就是老老实实帮你把命令输出里的水挤掉,帮你省 Token、省钱、省上下文。

对于天天跟 AI 编程打交道的人来说,这 80% 的节省是实实在在能感受到的。我用了一周之后,已经离不开了。

项目地址:https://github.com/rtk-ai/rtk
官方文档:https://www.rtk-ai.app/guide

Star 一下吧,说不定哪天你就需要它了。