大家好,我是何三,独立开发者
你的 Claude Code 账单,可能有一半在烧冤枉钱
用 Claude Code 写了一天代码,回头一看 Token 消耗——11.8 万。其中 8 万多是 git status、cat、cargo test 这些基础命令的原始输出喂进去的。
说白了,AI 编程工具的 Token 开销大头,根本不在代码生成本身,而在那些反反复复执行的终端命令。每次 git diff、ls、grep 输出的完整内容,全都原封不动塞进上下文窗口,占着 Token 位。
最近 GitHub 上冒出来一个叫 RTK 的项目,23.4k Star,专门解决这个痛点——在命令输出到达 LLM 之前,先帮你「减肥」。

一个 Rust 二进制,干了什么脏活
RTK 的全称没什么花哨的,就是一个 CLI 代理工具。用 Rust 写的,编译出来就一个二进制文件,零外部依赖。
它的思路非常简单粗暴:拦截命令输出 → 智能压缩 → 再喂给 LLM。

具体来说,RTK 对每条命令的输出做四件事:
- 智能过滤:把注释、空行、样板代码这些对 AI 理解毫无帮助的噪音全删掉
- 分组聚合:把类似的东西归类到一起,比如按目录结构折叠文件列表
- 智能截断:保留核心上下文,砍掉冗余部分
- 去重折叠:重复的日志行合并成一行,后面标个出现次数
说白了就是,以前 git status 输出 2000 个 Token,RTK 压缩后只剩 400 个,AI 照样能理解当前项目状态,但成本降了 80%。
最狠的是 git add/commit/push 这类操作——执行完了输出「ok main」就够了,RTK 直接砍掉 92% 的 Token。
上手体验:三分钟搞定
安装就一行命令的事:
brew install rtk
没有 Homebrew 的话,curl 一行搞定:
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
装完之后,运行初始化:
rtk init -g
这条命令会自动安装一个 Bash Hook——之后你在 Claude Code 里输入的命令,RTK 会在执行前透明地改写。比如你敲 git status,Claude Code 发出去的时候自动变成 rtk git status,输出被压缩后再返回给 Claude。
Claude 完全不知道这个 Hook 的存在,它只是收到了一个更精简的输出结果。
装完重启 Claude Code,直接正常用就行,感受大概是这样的:
# 以前 git push 输出 15 行,约 200 tokens
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 350 bytes | 350.00 KiB/s, done.
...
# 现在只有 1 行,约 10 tokens
ok main
想看省了多少 Token,可以随时运行:
rtk gain # 查看汇总统计
rtk gain --graph # 最近 30 天的 ASCII 图表
兼容性:不止 Claude Code
RTK 目前支持 10 款主流 AI 编程工具:
| 工具 | 安装命令 |
|---|---|
| Claude Code | rtk init -g |
| GitHub Copilot | rtk init -g --copilot |
| Cursor | rtk init -g --agent cursor |
| Gemini CLI | rtk init -g --gemini |
| Codex (OpenAI) | rtk init -g --codex |
| Windsurf | rtk init --agent windsurf |
| Cline / Roo Code | rtk init --agent cline |
覆盖了市面上主流的 AI 编程助手。不管你用哪个,装上 RTK 都能白嫖那一波 Token 节省。
支持的命令超过 100 种,涵盖 git、cargo/npm/pnpm、docker、kubectl、pytest、eslint、aws cli……基本日常开发会用到的终端命令,RTK 都做了压缩适配。
一个细节:失败了也能回溯
这是我觉得 RTK 设计得比较聪明的地方。
正常的命令输出被压缩了,但如果命令执行失败了呢?这时候 AI 需要看到完整的错误信息来排查问题。
RTK 内置了一个叫 Tee 的机制——命令失败时,自动把完整的原始输出保存到本地文件,然后在压缩输出里附上一行路径:
FAILED: 2/15 tests
[full output: ~/.local/share/rtk/tee/1707753600_cargo_test.log]
AI 看到失败提示后,可以自己去读那个日志文件,拿到完整信息。既省了日常开销,又不影响错误排查。
这个设计说实话挺到位的。很多「优化」工具最大的问题就是压缩过度导致丢关键信息,RTK 用这种 fallback 机制解决了。
什么时候该用,什么时候不用
适合用的场景:
- 每天用 Claude Code / Cursor 写代码超过 2 小时,月 Token 开销过百刀
- 项目比较大,
git diff、cargo test这类命令输出动辄几百行 - 团队多人共用 AI 编程工具,想控制整体成本
可能不适合的场景:
- 偶尔用一下 AI 辅助,Token 消耗本来就不多,装了也省不了多少
- 对实时性极度敏感的场景(RTK 的压缩延迟在 10ms 以内,正常使用基本无感)
- Claude Code 内置的 Read、Grep、Glob 工具不经过 Bash Hook,RTK 拦截不到——需要手动用
rtk read、rtk grep替代
本文使用 MGO 编辑并发布
关注"何三笔记",回复"mgo" 免费下载使用