ARTICLE · 1096425
RTK:让 AI 编程助手省下 60%-90% Token 的神器
用 Claude Code、Cursor 写代码的朋友,大概都遇到过这种情况:让 AI 跑一次测试,终端刷出几百行日志;让它看一眼 git log,又是一大屏。这些输出会原封不动地塞进 AI 的上下文里。
结果有三个:token 烧得飞快,上下文很快被撑满,AI 被无关信息干扰,判断变差。
今天介绍一个专门解决这个问题的开源小工具——RTK。它能在命令输出到达 AI 之前先“瘦身”,官方数据是平均减少 60%–90% 的输出量,而且装好之后基本不用管它。
RTK 全称 Rust Token Killer,是一个用 Rust 写的命令行代理工具。它夹在“AI 执行的命令”和“AI 读到的输出”之间,把冗长的终端输出压缩成 AI 真正需要的那部分。
几个关键信息:
官网:rtk-ai.appGitHub:rtk-ai/rtk
一句话:在命令执行前把它改写成走 RTK 的版本,再按命令类型用专门的规则压缩输出,最后才交给 AI。
[embedded content: RTK 工作流程 · 改写、执行、过滤、存档]
Claude Code 有一种叫 PreToolUse hook 的机制:AI 每次调用工具前,会先触发一段脚本。RTK 就挂在这里。AI 想执行 git status 时,RTK 把它改成 rtk git status 再交给 shell。
整个过程是透明的,AI 不知道命令被改过,你也不用改变任何习惯。Cursor、Copilot、Windsurf 等工具也是用各自的 hook 或插件接口实现同样的效果。
RTK 不是通用的文本压缩算法,而是针对每种命令写好的“摘要规则”。常用手法有四种:
压缩难免丢信息。所以命令失败或输出被截断时,RTK 会把完整原文存进本地,并在精简输出末尾附一行:
[full output: rtk recall 3f9c2a81d4e7]AI 觉得信息不够时,可以直接用这个编号取回全文,不用重新跑一遍命令。
任选一种方式即可。
macOS / Linux(Homebrew)
brew install rtk
macOS / Linux(一键脚本)
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
已有 Rust 环境(Cargo)
cargo install --git https://github.com/rtk-ai/rtk
Windows:到 GitHub Releases 下载 rtk-x86_64-pc-windows-msvc.zip,解压后把 rtk.exe 所在目录加入 PATH。
装好后验证一下:
rtk --version
rtk gain
能看到版本号就说明安装成功。
以 Claude Code 为例,一条命令搞定:
rtk init -g
-g 表示全局安装 hook。装好后重启 Claude Code,之后 AI 执行的 shell 命令都会自动走 RTK。其他工具换个参数:
rtk init -g | |
rtk init -g --agent cursor | |
rtk init -g --copilot | |
rtk init -g --gemini | |
rtk init -g --codex | |
rtk init -g --agent windsurf | |
rtk init --agent cline |
检查是否装好用 rtk init --show,卸载 hook 用 rtk init -g --uninstall。
装了 hook 后一般不用手动敲。如果想自己试试效果,在命令前加 rtk 即可:
# Git
rtk git status
rtk git log -n 10
rtk git diff
# 测试:只显示失败项
rtk pytest
rtk jest
rtk cargo test
# 文件与搜索
rtk ls .
rtk grep "pattern" .
rtk read file.rs -l aggressive
# 容器与日志:重复行会被合并
rtk docker logs <container>
rtk kubectl logs <pod>
# 没有专门规则的长命令,用通用摘要
rtk summary <命令>
加 -u(--ultra-compact)还能进一步压缩成更紧凑的格式。
rtk gain # 总节省量
rtk gain --graph # 图表
rtk gain --daily # 按天统计
rtk gain --history# 历史记录
rtk discover # 找出还没被优化的高消耗命令
配置文件位置:Linux / Windows 在 ~/.config/rtk/config.toml,macOS 在 ~/Library/Application Support/rtk/config.toml。常用的两项:
[hooks]
# 这些命令不走 RTK,保持原样输出
exclude_commands = ["curl", "playwright"]
[tee]
enabled = true
mode = "failures"# 保存原文的时机:failures / always / never官方公布的数据是:被改写的命令平均减少 56% 的输出,最啰嗦的命令能减少约 90%。测试失败时效果最明显:原本 200 多行的输出,压缩后大约剩 20 行。
拿一次 pytest 失败来打个比方(下面是示意,不是真实输出):
压缩前:AI 要读完整的收集日志、几百个 PASSED、进度条、警告汇总,最后才是那一两个真正失败的测试。
压缩后:只剩下这样的内容。
pytest: 248 passed, 2 failed
FAILED tests/test_order.py::test_discount - AssertionError: 90 != 85
FAILED tests/test_user.py::test_login - KeyError: 'token'
[full output: rtk recall 3f9c2a81d4e7]AI 一眼就能看到问题在哪,上下文也省出大量空间。想看自己的真实节省量,用一段时间后跑 rtk gain 就行。
- 只管 shell 命令:
Claude Code 内置的 Read、Grep、Glob 等工具不经过 shell,所以不会被压缩。 - 压缩会丢细节:
大多数时候没影响,但偶尔 AI 需要完整输出。建议保持 tee功能开启,让它能用rtk recall取回原文。 - 有些命令别压缩:
如果某个命令的输出你希望 AI 原样看到(比如调试接口时的 curl),把它加进配置里的exclude_commands。 - 覆盖有限:
没有专门规则的命令压缩效果会弱很多,可以用 rtk discover看看哪些命令还没被优化。 - 遥测默认关闭:
不放心可以用 rtk telemetry status确认,或设置环境变量RTK_TELEMETRY_DISABLED=1。
RTK 做的事很简单:在 AI 读终端输出之前,先把废话删掉。它开源免费,两条命令就能装好,装完基本感觉不到它的存在。
适合谁用:经常让 AI 跑测试、编译、看日志的开发者,尤其是按 token 计费、或者经常遇到上下文被撑爆的人。
不太需要的人:只用 AI 聊天、写文档,很少让它执行命令的用户。
最快上手的路径:
brew install rtk # 安装
rtk init -g # 接入 Claude Code
# 正常工作几天后
rtk gain # 看看省了多少