RTK 入门指南:省下 60%-90% Token 的 CLI 代理
一句话理解 RTK
RTK(Rust Token Killer)是一个命令行代理,在 shell 命令的输出进入 AI 上下文之前,先做过滤、压缩、去重、截断。结果:AI 读到的内容少了 60%-90%,token 费用和消耗随之下降,但指令理解能力不受影响。
GitHub: rtk-ai/rtk

核心价值
AI 编码时大部分 token 花在了读终端输出上——git diff、npm test、grep 结果动辄几千行,其中 80% 是注释、空白、样板日志和重复内容。RTK 在命令输出进入 Claude Code 之前截住并压缩,AI 只看到关键信息。
没有 RTK:Claude → shell → git diff → 10000 tokens 原始输出
有 RTK: Claude → RTK → git diff → 2500 tokens 精简输出
实际数据(本地 1398 次命令累计):
- 输入 token:617M → RTK 后节省 617M(99.9%)
- 单次命令平均耗时仅 10ms,几乎无感
安装
# macOS 推荐
brew install rtk
# 或一键脚本(Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/master/install.sh | sh
验证:
rtk --version # 应显示 rtk x.x.x
rtk gain # 应显示 token 节省统计(非 "command not found")
接入 Claude Code
rtk init -g
然后重启 Claude Code,此后你执行的每条命令(git status、grep ...、npm test)都会自动经过 RTK 压缩。你不需要改变任何使用习惯——原来怎么写命令现在还怎么写。
基本用法
RTK 的命令和你原来用的命令完全一致,只是前面加了 rtk:
| 场景 | 原命令 | RTK 命令 |
|---|---|---|
| 看目录 | ls -la |
rtk ls -la |
| 读文件 | cat main.ts |
rtk read main.ts |
| 搜索 | grep "useState" . |
rtk grep "useState" . |
| git 状态 | git status |
rtk git status |
| git 差异 | git diff |
rtk git diff |
| 运行测试 | npm test |
rtk npm test |
| docker 日志 | docker logs app |
rtk docker logs app |
接入 Claude Code 后,hook 会自动加 rtk 前缀,你直接打 git status 就行。
查看节省效果
rtk gain # 总览:命令数 / 节省 token / 效率评分
rtk gain --history # 每条命令的详细统计
rtk gain --graph # ASCII 趋势图
rtk discover # 扫描 Claude Code 历史,找出没用 RTK 的命令
工作原理
RTK 对不同类型的命令输出采用不同压缩策略:
- 智能过滤 — 去掉注释、空白行、样板日志
- 分组聚合 — 同类型错误归并展示,不逐条列
- 上下文截断 — 只保留关键 diff 和失败条目
- 去重压缩 — 重复行合并为
Error xxx (×500)
RTK 是给 AI 看的,不是给人看的。所以它大胆砍掉人类需要的格式信息,只保留 AI 分析必需的语义内容。
要点提醒
rtk init -g后要重启 Claude Code,否则 hook 不生效。- 名字冲突:如果
rtk gain报错,你可能装错了包(reachingforthejack/rtk = Rust Type Kit)。卸载后重装正确的。 - 调试时跳过 RTK:
rtk proxy <command>直接执行原始命令,输出不压缩,方便排查问题。 rtk discover定期跑一下,找出自己哪些高频命令没用上 RTK。- 不适合人读,适合 AI 读:如果你想在终端里自己看完整输出,就别用 RTK;如果输出是给 Claude Code 看的,就让它压缩。
ymyotsfhstsgltoxuumrvwgomndrvp