用 Claude Code 写代码的时候,你有没有想过一个问题:git status 凭什么要吃掉 2000 个 token?
事情是这样的:每次 AI 工具执行 git status、npm test、cargo build 这类命令,它会把完整的终端输出原封不动塞进上下文窗口。一次 cargo test 失败输出动辄 200 多行、25000 token。跑几轮下来,上下文窗口满了,API 费用也跟着涨。AI 工具本身并不关心这些冗余信息——它只需要知道测试哪几个失败了、git 哪几个文件改了。
RTK 就是卡在这个缝隙里长出来的。
核心思路:在 AI 和终端之间插一层过滤器
RTK(rtk-ai/rtk)是一个用 Rust 写的 CLI 代理工具,版本号已经到了 0.28.2。它做的事情很简单:拦截 AI 工具发出的命令,把输出压缩后再喂回去。
根据 README 给出的数据,一个 30 分钟的 Claude Code 会话里:
| 操作 | 频率 | 标准输出 | RTK 压缩后 | 节省 |
|---|---|---|---|---|
| ls / tree | 10x | 2,000 | 400 | -80% |
| git status | 10x | 3,000 | 600 | -80% |
| git diff | 5x | 10,000 | 2,500 | -75% |
| cargo test | 5x | 25,000 | 2,500 | -90% |
| pytest | 4x | 8,000 | 800 | -90% |
| docker ps | 3x | 900 | 180 | -80% |
| 合计 | ~118,000 | ~23,900 | -80% |
不是魔法,就是四招:智能过滤(去掉注释、空白、样板文字)、聚合(按目录归组文件、按类型归组错误)、截断(保留关键上下文,砍掉重复)、去重(折叠重复的日志行并用计数标记)。
Hook 机制:AI 工具完全无感
RTK 最有意思的设计是它的 auto-rewrite hook。安装后,它会在 AI 工具发出 Bash 命令之前拦截并重写:
Claude --git status--> RTK --> git
^ | |
| ~200 tokens | filter |
+---- (filtered) -----+----------+
Claude 发出的还是 git status,但 RTK 会把它改写成 rtk git status 再执行,压缩后的结果返回给 Claude。整个过程对 AI 完全透明——它不知道输出被改写过。
支持 12 种 AI 工具:Claude Code、GitHub Copilot、Cursor、Gemini CLI、Codex、Windsurf、Cline/Roo Code、OpenCode、OpenClaw、Kilo Code、Google Antigravity。安装方式统一为 rtk init -g,不同工具有对应的 flag。
不只是压缩,还有可观测性
RTK 还带了一套 token 节约分析工具:
rtk gain— 查看节省统计rtk gain --graph— ASCII 图表展示近 30 天趋势rtk discover— 发现还没被 RTK 覆盖的命令rtk session— 查看跨会话的 RTK 采用率
对于重度使用 AI 编程工具的团队来说,这个数据可以直接对应到 API 成本。
注意事项
有两个限制需要知道:
- Hook 只作用于 Bash 命令调用。Claude Code 内置的 Read、Grep、Glob 工具不走 Bash hook,所以不会被自动改写。需要显式使用 shell 命令或
rtk read、rtk grep。 - Windows 原生环境不支持 auto-rewrite hook,会回退到 CLAUDE.md 注入模式。WSL 下完全支持。
快速上手
# Homebrew
brew install rtk
# 或直接安装
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
# 为你的 AI 工具安装 hook
rtk init -g # Claude Code / Copilot
# 重启 AI 工具后测试
git status # 自动改写为 rtk git status
项目 MIT 协议,39.6k Star,863 个 commit,核心团队三人,最近一次提交 2 天前。对于每天用 AI 编程工具花掉几十刀 API 费的人来说,这个工具的 ROI 几乎是立竿见影的。