
Claude Code 一个小时的典型会话,会产生约 15 万个 Token 的 CLI 命令输出噪音。这些噪音包括:git push 的 15 行进度条、cargo test 的 200 行通过测试日志、ls 命令的逐文件列表……
这些噪音不仅白白消耗 Token 额度,更严重的问题是——当上下文窗口被噪音填满后,LLM 的推理质量会显著下降。Claude Code Pro 计划约有 45 条消息 / 5 小时的速率限制,更干净的上下文意味着每条消息的产出更高。
算一笔账:一次 30 分钟的典型会话,CLI 命令输出约产生 118,000 Token,其中超过 80% 是对 AI 推理毫无价值的噪音。这就是 RTK 要解决的问题。
项目介绍:RTK 是什么
RTK(Rust Token Killer) 是一个用 Rust 编写的高性能 CLI 代理工具,核心目标是在命令输出到达 AI 之前过滤压缩噪音,平均节省 60-90% 的 Token 消耗。
一句话概括:RTK 是一个透明的代理层,AI 发出命令 → RTK 拦截并压缩输出 → AI 收到精简结果。 整个过程对用户和 AI 均完全透明,无需修改任何提示词或工作流。
核心数据
| 指标 | 数值 |
|---|---|
| GitHub Stars | 25.9k+ |
| 实现语言 | Rust(单二进制,零依赖) |
| 支持的 AI 工具 | 13 款 |
| 内置命令优化 | 100+ 条 |
| 平均 Token 节省率 | 60-90%(部分场景达 99%) |
| 每条命令额外延迟 | < 10ms |
| 许可证 | MIT 开源免费 |
技术原理:四层过滤架构
3.1 整体工作流
Without RTK:
Claude Code → shell → git → 原始输出 (~2000 tokens) → Claude Code
With RTK:
Claude Code → RTK → shell → git → 过滤压缩 (~200 tokens) → Claude Code
RTK 在 AI 工具和 Shell 之间插入一个代理层。安装 rtk init -g 后,RTK 会在 AI 工具配置中注入一个 PreToolUse Hook,自动将 Bash 命令重写为通过 RTK 代理执行:
{
"hooks":{
"PreToolUse":[
{
"matcher":"Bash",
"hooks":[
{
"type":"command",
"command":"rtk hook claude"
}
]
}
]
}
}
Claude Code 执行 git status → Hook 拦截,改写为 rtk git status → RTK 执行并压缩输出 → Claude 收到精简结果。
3.2 四层过滤策略
RTK 对每种命令类型依次应用四层过滤:
| 层级 | 策略 | 具体做法 | 示例 |
|---|---|---|---|
| 第一层 | 智能过滤 | 移除注释、空行、装饰性 ASCII 分隔线、编译器冗余注释 | 进度条 Enumerating objects... → 删除 |
| 第二层 | 分组聚合 | 同类条目聚合为摘要 | 47 个 .tsx 文件 → components/ (47 .tsx files) |
| 第三层 | 智能截断 | 保留首尾上下文,中间以摘要替代 | 1000 行日志 → 首尾各 10 行 + 统计信息 |
| 第四层 | 去重压缩 | 重复日志行折叠为一行 + 计数 | Connection timeout (x47) |
3.3 TEE 机制:失败输出保留
RTK 并非简单粗暴地丢弃所有信息。当命令执行失败时,RTK 默认将完整未过滤输出保存到本地文件:
FAILED: 2/15 tests
[full output: ~/.local/share/rtk/tee/1707753600_cargo_test.log]
AI 可以直接读取这个完整日志文件来分析失败原因,无需重新执行命令。这保证了正常输出极致压缩,异常输出完整保留的平衡。
配置项(~/.config/rtk/config.toml):
[tee]
enabled = true# 默认 true
mode = "failures"# "failures"(仅失败时)/ "always" / "never"
3.4 两套过滤体系
RTK 内部维护两套过滤实现:
| 体系 | 适用场景 | 说明 |
|---|---|---|
Rust 模块(src/cmds/) | 复杂解析 | 如 pytest 用状态机追踪测试状态,go test 用 NDJSON 流式解析 |
TOML DSL(src/filters/*.toml) | 简单行过滤/替换 | 如 helm、shellcheck 等,支持用户在 .rtk/filters.toml 中编写自定义规则 |
安装方式
4.1 安装 RTK
# 方式一:Homebrew(推荐,macOS/Linux)
brew install rtk
# 方式二:快速安装脚本(Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
# 方式三:Cargo 从源码编译
cargo install --git https://github.com/rtk-ai/rtk
# 方式四:Windows(原生 Windows 从 GitHub releases 下载 .zip 解压后加入 PATH)
验证安装:
rtk --version # 应显示 rtk 0.39.x
rtk gain # 显示 Token 节省统计
4.2 集成 AI 工具
# Claude Code / GitHub Copilot(默认)
rtk init -g
# Cursor
rtk init -g --agent cursor
# Windsurf
rtk init --agent windsurf
# Gemini CLI
rtk init -g --gemini
# Codex (OpenAI)
rtk init -g --codex
# Cline / Roo Code
rtk init --agent cline
# Kilo Code
rtk init --agent kilocode
# Google Antigravity
rtk init --agent antigravity
初始化后重启对应的 AI 工具即可生效。Hook 会自动代理 Bash 命令,无需手动调用 rtk。
4.3 Windows 特别说明
| 功能 | WSL | 原生 Windows |
|---|---|---|
| 命令过滤器 | ✅ 完整 | ✅ 完整 |
| Auto-rewrite hook | ✅ 支持 | ❌ 不支持(降级为 CLAUDE.md 注入模式) |
rtk init -g | Hook 模式 | CLAUDE.md 模式 |
| Token 分析工具 | ✅ 完整 | ✅ 完整 |
Windows 用户推荐使用 WSL 以获得完整的 Hook 自动拦截体验。
实战效果:Token 节省数据
5.1 命令级对比(30 分钟典型 Claude Code 会话)
| 命令 | 频次 | 原始 Token | RTK 后 | 节省比例 |
|---|---|---|---|---|
git status | 10x | 3,000 | 600 | -80% |
git diff | 5x | 10,000 | 2,500 | -75% |
git log -n 10 | 5x | 2,500 | 500 | -80% |
git add/commit/push | 8x | 1,600 | 120 | -92% |
cargo test | 5x | 25,000 | 2,500 | -90% |
pytest -v | 4x | 8,000 | 800 | -90% |
ls / tree | 10x | 2,000 | 400 | -80% |
cat / read | 20x | 40,000 | 12,000 | -70% |
grep / rg | 8x | 16,000 | 3,200 | -80% |
docker ps | 3x | 900 | 180 | -80% |
| 合计 | — | ~118,000 | ~23,900 | -80% |
5.2 直观对比示例
git push:
# 普通输出(~200 tokens) # RTK 输出(~10 tokens)
Enumerating objects: 5, done. ok main
Counting objects: 100% (5/5), ...
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 1.25 KiB
To github.com:user/repo.git
a1b2c3d..e4f5g6h main -> main
cargo test:
# 普通输出(200+ 行) # RTK 输出(~20 行)
running 15 tests FAILED: 2/15 tests
test utils::test_parse ... ok test_edge_case: assertion failed
test core::test_load ... ok test_overflow: panic at utils.rs:18
...(150 行 backtrace)
5.3 社区真实案例
- 单次会话执行 2,900 条命令,平均噪音削减率 89%
- 累计节省超过 1,000 万个 Token
cargo test极端场景:从 ~4,823 Token 压缩到 ~11 Token,节省 99%
支持的 AI 工具与命令
6.1 支持的 13 款 AI 编程工具
| AI 工具 | 集成方式 |
|---|---|
| Claude Code | PreToolUse Hook(原生集成) |
| Cursor | preToolUse Hook(hooks.json) |
| GitHub Copilot(VS Code) | PreToolUse Hook |
| GitHub Copilot CLI | deny-with-suggestion |
| Gemini CLI | BeforeTool Hook |
| Codex(OpenAI) | AGENTS.md + RTK.md |
| Windsurf | .windsurfrules(项目级别) |
| Cline / Roo Code | .clinerules |
| OpenCode | Plugin TS(tool.execute.before) |
| OpenClaw | Plugin TS(before_tool_call) |
| Kilo Code | .kilocode/rules/rtk-rules.md |
| Google Antigravity | .agents/rules/antigravity-rtk-rules.md |
6.2 支持的 100+ 条命令
| 类别 | 命令 |
|---|---|
| 文件操作 | ls、tree、read、smart、find、grep、diff |
| Git | git status、git log、git diff、git add/commit/push |
| 测试 | jest、vitest、playwright test、pytest、go test、cargo test、rspec |
| 构建/Lint | tsc、cargo build、ruff check、golangci-lint run、eslint |
| 云/容器 | aws ec2 describe-instances、docker ps、kubectl pods |
| 包管理 | pnpm list、pip list、npm、cargo |
| 数据分析 | json、deps、log、curl、wget |
6.3 常用命令速查
# 文件操作
rtk ls . # 压缩目录树
rtk read file.rs # 智能读取
rtk read file.rs -l aggressive # 只保留函数签名(极致压缩)
rtk grep "pattern" . # 按文件分组搜索
# Git
rtk git status / diff / log# 压缩输出
rtk git add / commit / push # 极简输出(成功时仅显示 ok)
# 测试
rtk cargo test / pytest / go test# 只显示失败的测试
# Token 节省分析
rtk gain # 总览统计
rtk gain --graph # 30 天趋势图(ASCII 图表)
rtk gain --daily # 按天分解
rtk gain --quota -t pro # 按订阅估算省钱金额
rtk discover # 发现未优化的命令
rtk session # 会话采用率指标
# 全局标志
# -u 超压缩模式(ASCII 图标 + 内联格式)
# -v 逐级调试模式(-v / -vv / -vvv)
常见问题
Q1:RTK 会影响 AI 工具的正常工作吗?
不会。 RTK 对 AI 工具完全透明。命令重写在底层 Hook 中自动完成,无需修改任何提示词或工作流。对于 RTK 不认识的命令,会原样执行,不会因 RTK 导致命令失败。
Q2:RTK 是否只支持 Rust 项目?
不是。 名称中的「Rust」指工具本身用 Rust 编写,实际支持任意语言的命令——pytest(Python)、go test(Go)、jest(JavaScript)、tsc(TypeScript)等均可压缩。
Q3:安装后需要手动调用 rtk 命令吗?
不需要。 使用 rtk init -g 集成后,Hook 会自动代理命令。AI 工具执行 git status 时,实际执行的是 rtk git status,用户和 AI 均无感知。
Q4:压缩后会不会丢失关键信息?
RTK 采用正常输出极致压缩,异常输出完整保留的策略。命令成功时只保留结果摘要;命令失败时,完整输出会保存到本地文件(TEE 机制),AI 可通过文件路径读取完整日志。
Q5:Windows 原生环境下能用吗?
可以,但体验有差异。Windows 原生环境下 Auto-rewrite Hook 不生效,RTK 会降级为 CLAUDE.md 注入模式(在项目根目录注入提示词,提醒 AI 优先使用 rtk 命令)。推荐使用 WSL 获得完整体验。
Q6:如何添加自定义过滤规则?
在项目根目录创建 .rtk/filters.toml,使用 TOML DSL 编写行过滤/替换规则。对于复杂解析需求(如自定义测试框架),可以提交 PR 贡献 Rust 模块。
Q7:RTK 本身的性能开销大吗?
非常小。Rust 编译的单二进制执行,每条命令增加的延迟 < 10ms,对交互体验几乎无感知。
优缺点分析
✅ 优点
| 优点 | 说明 |
|---|---|
| 效果显著 | 典型会话节省 80% Token,极端场景达 99% |
| 零感知使用 | Hook 自动拦截,用户和 AI 均无需手动调用 |
| 安全兜底 | 不认识的命令原样执行,不会因 RTK 导致失败 |
| TEE 机制 | 失败输出完整保留,不丢失关键调试信息 |
| 高度可扩展 | 100+ 内置命令 + TOML DSL 自定义规则 |
| 多工具支持 | 13 款主流 AI 编程工具全覆盖 |
| 可观测性强 | rtk gain 可随时查看节省统计和趋势图 |
| 零依赖部署 | 单二进制文件,Rust 编译,无运行时依赖 |
| 性能开销极低 | 每条命令 < 10ms 额外延迟 |
| MIT 开源免费 | 社区活跃,25.9k+ Stars |
❌ 缺点
| 缺点 | 说明 |
|---|---|
| 信息有损 | 压缩输出可能丢失部分细节(如完整 backtrace),调试复杂问题时可能需手动查看完整日志 |
| 仅限 CLI 场景 | 只对命令行输出有效,对 AI 直接读取文件内容等场景效果有限 |
| 需跟随维护 | 内置规则需要跟随工具版本更新,新工具/新命令需等待支持或自行编写规则 |
| Windows 体验打折扣 | 原生 Windows 不支持 Auto-rewrite Hook,只能降级为 CLAUDE.md 注入模式 |
| 新手认知成本 | 虽然安装简单,但理解 Hook 机制和过滤规则仍有一定门槛 |
总结
RTK 解决了一个很多 AI 编程用户忽视但代价高昂的问题:CLI 命令输出的 Token 浪费。在 Claude Code、Cursor 等工具按 Token 计费的今天,一个 30 分钟会话浪费的 9 万个 Token 可能就是几美元——一天下来就是一杯咖啡,一个月下来就是一顿大餐。
更关键的是,RTK 不仅省钱,还能提升 AI 的推理质量——更干净的上下文意味着 LLM 能更准确地理解代码状态,减少「幻觉」和「跑偏」。
一行命令安装,零配置生效,平均省 80% Token。如果你是 Claude Code 或 Cursor 的重度用户,RTK 是那种「装了就回不去」的工具。
快速上手(TL;DR)
# 1. 安装
brew install rtk
# 2. 集成 Claude Code
rtk init -g
# 3. 重启 Claude Code,开始使用
# 4. 查看节省了多少
rtk gain
五分钟搞定,从此告别 80% 的 Token 浪费。
⭐ 25.9k+ | Rust | MIT 开源
项目名称:rtk-ai/rtk
评论列表 (0条):
加载更多评论 Loading...