在大模型辅助开发的日常场景中,你是否经常因为把
git log、cargo test、docker ps等 CLI 命令输出粘贴到对话框,导致 Token 瞬间爆炸?本文介绍的RTK(Rust Token Killer)正是解决这一痛点的利器——一款基于 Rust 的高性能 CLI 代理工具,能将 LLM 上下文的 Token 消耗降低 60%–90%,且性能开销不足 10ms。
一、RTK 是什么?
RTK是由 rtk-ai 团队开发的开源工具(⭐ 25.9k),核心目标是:在 CLI 命令的输出到达 LLM 上下文之前,对其进行智能过滤与压缩,剔除冗余字符(重复空格、ANSI 颜色码、注释噪音、重复日志行等),仅保留 LLM 真正需要的核心信息,从而大幅减少传入大模型的 Token 数量。
它本质上是一个CLI 代理(Proxy):当你在 AI 编程工具(Claude Code、Cursor、Copilot 等)中执行 Shell 命令时,RTK 的 Hook 机制会自动将命令透明改写为rtk版本(例如git status→rtk git status),AI 工具完全无感知,只会收到压缩后的精简输出。
核心特性
- 极致 Token 节省:针对开发者高频命令(ls/tree、cat/read、grep、git 系列、测试命令、Docker、AWS 等)深度优化,一次 30 分钟 Claude Code 会话可减少约 80% Token 消耗;
- 轻量高性能:纯 Rust 编写的单一二进制文件,零外部依赖,命令执行额外开销 < 10ms;
- 广泛支持:支持 100+ 常用 CLI 命令,兼容 macOS、Linux、Windows(推荐搭配 WSL);
- 无侵入使用:通过 AI 工具的 Hook 机制透明拦截,开发者无需修改任何使用习惯;
- 多 AI 工具适配:支持 Claude Code、GitHub Copilot、Cursor、Gemini CLI、Windsurf、Cline 等 10 款主流 AI 编程工具;
- 开源可配置:Apache-2.0 许可证,支持通过配置文件调整行为。
Token 消耗对比(30 分钟 Claude Code 会话)
| 操作 | 频次 | 原始 Token | RTK 后 | 节省比例 |
|---|---|---|---|---|
ls/tree | 10x | 2,000 | 400 | -80% |
cat/read | 20x | 40,000 | 12,000 | -70% |
grep/rg | 8x | 16,000 | 3,200 | -80% |
git status | 10x | 3,000 | 600 | -80% |
git diff | 5x | 10,000 | 2,500 | -75% |
git log | 5x | 2,500 | 500 | -80% |
git add/commit/push | 8x | 1,600 | 120 | -92% |
cargo test/npm test | 5x | 25,000 | 2,500 | -90% |
pytest | 4x | 8,000 | 800 | -90% |
docker ps | 3x | 900 | 180 | -80% |
| 合计 | ~118,000 | ~23,900 | -80% |
以中等规模 TypeScript/Rust 项目为基准,实际节省比例因项目大小而异。
二、安装方式(5 分钟搞定)
RTK 提供多种安装方式,安装完成后执行rtk --version验证。
⚠️注意名称冲突:crates.io 上存在同名的 “Rust Type Kit” 项目。如果执行
rtk gain报错,说明装错了包,请改用cargo install --git方式安装。
方式 1:Homebrew(macOS 推荐)
brewinstallrtk方式 2:一键脚本(Linux / macOS 通用)
curl-fsSLhttps://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh|sh默认安装到~/.local/bin,如果 PATH 未包含该目录,执行:
echo'export PATH="$HOME/.local/bin:$PATH"'>>~/.bashrc# 或 ~/.zshrc方式 3:Cargo(有 Rust 环境推荐)
# 注意:必须从 GitHub 安装,避免与 crates.io 上的同名包冲突cargoinstall--githttps://github.com/rtk-ai/rtk方式 4:手动安装(全平台)
从 GitHub Releases 下载对应平台的预编译包:
- macOS (Intel):
rtk-x86_64-apple-darwin.tar.gz - macOS (Apple Silicon):
rtk-aarch64-apple-darwin.tar.gz - Linux (x86_64):
rtk-x86_64-unknown-linux-musl.tar.gz - Linux (ARM64):
rtk-aarch64-unknown-linux-gnu.tar.gz - Windows:
rtk-x86_64-pc-windows-msvc.zip
# 以 Linux x86_64 为例wgethttps://github.com/rtk-ai/rtk/releases/latest/download/rtk-x86_64-unknown-linux-musl.tar.gztar-zxvfrtk-x86_64-unknown-linux-musl.tar.gzmvrtk ~/.local/bin/ rtk--version验证安装
rtk--version# 应输出类似 "rtk 0.36.0"rtk gain# 查看 Token 节省统计三、快速上手:与 AI 工具集成
RTK 最核心的使用方式,是通过rtk init为 AI 工具安装自动改写 Hook。安装后,AI 工具每次调用 Bash 命令时,Hook 会自动将命令透明改写(如git status→rtk git status),AI 完全无感知,只会收到压缩后的输出。
第一步:初始化并安装 Hook
根据你使用的 AI 工具选择对应命令:
rtk init-g# Claude Code / GitHub Copilot(默认,推荐)rtk init-g--gemini# Gemini CLIrtk init-g--codex# OpenAI Codexrtk init-g--agentcursor# Cursorrtk init-g--agentwindsurf# Windsurf(项目级别,需加 -g 参数)rtk init--agentcline# Cline / Roo Code(项目级别)安装完成后,重启 AI 工具使 Hook 生效。
第二步:验证 Hook 生效
rtk init--show# 查看已安装的 Hook 和配置第三步:正常使用即可
Hook 生效后,你在 AI 工具中使用原生命令时,RTK 会自动在后台完成改写和压缩:
# 以下命令在 AI 工具中执行时,会自动被 RTK 透明处理gitstatusgitdiffmaincargotestls-l./srcgrep-r"error"./logsdockerps重要提示:Hook 只作用于Bash 工具调用。Claude Code 的内置工具(如
Read、Grep、Glob)不经过 Bash Hook,不会自动改写。如需在这些场景下使用 RTK 压缩,请改用 Shell 命令(cat/rg/find)或直接调用rtk read、rtk grep、rtk find。
手动调用 RTK 命令
不依赖 Hook,也可以直接手动调用 RTK 的各类子命令:
# 文件与目录rtkls.# Token 优化的目录树rtkreadfile.rs# 智能读取文件rtkreadfile.rs-laggressive# 只保留函数签名(去掉函数体)rtkgrep"pattern".# 分组展示搜索结果rtkfind"*.rs".# 紧凑的 find 结果rtkdifffile1 file2# 精简 diff# Gitrtkgitstatus rtkgitlog-n10rtkgitdiffrtkgitpush# 输出简化为 "ok main"# 测试命令(只显示失败项)rtktestcargotestrtk pytest rtk gotestrtk vitest run# 构建与 Lintrtk tsc# TypeScript 错误按文件分组rtk lint# ESLint 按规则/文件分组rtkcargobuild rtkcargoclippy# Docker / Kubernetesrtkdockerpsrtkdockerlogs<container>rtk kubectl pods# 日志与杂项rtk log app.log# 去重日志rtkenv-fAWS# 过滤环境变量rtk json config.json# 只显示结构,隐藏值查看 Token 节省统计
rtk gain# 汇总统计rtk gain--graph# ASCII 折线图(近 30 天)rtk gain--history# 最近命令历史rtk gain--daily# 按天细分rtk discover# 找出未被 RTK 处理的"遗漏节省"机会rtk session# 查看 RTK 在 Claude Code 会话中的 adoption 率rtk learn# 从 Claude Code 错误历史中学习 CLI 修正模式四、RTK 与 Claude Code 深度配合
Claude Code 是 Anthropic 推出的 AI 编程工具,RTK 对其有原生的一等支持,也是目前最佳的组合之一。
安装 Claude Code 专属 Hook
rtk init-g# 安装 Hook + 生成 RTK.md 上下文文档rtk init--show# 验证安装状态rtk init -g会做两件事:
- 在 Claude Code 的全局配置中注入PreToolUse Hook,拦截所有 Bash 工具调用并透明改写为
rtk命令; - 生成
RTK.md文档,让 Claude Code 了解 RTK 的能力,进一步优化协作效果。
实际效果对比
git push 输出(原始 vs RTK):
# 原始输出(~15 行,约 200 Token) # RTK 输出(1 行,约 10 Token) Enumerating objects: 5, done. ok main Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (3/3), done. ...cargo test 失败输出(原始 vs RTK):
# 原始输出(200+ 行) # RTK 输出(~20 行) running 15 tests FAILED: 2/15 tests test utils::test_parse ... ok test_edge_case: assertion failed test utils::test_format ... ok test_overflow: panic at utils.rs:18 ... [full output: ~/.local/share/rtk/tee/...]Tee 恢复机制:当命令失败时,RTK 会将完整的原始输出保存到本地文件(
~/.local/share/rtk/tee/),并在精简输出末尾附上文件路径。Claude Code 可以随时读取完整日志,不丢失任何信息。
推荐工作流:用 RTK + Claude Code 排查 Bug
# 1. 执行测试,RTK 自动压缩(只显示失败项)cargotest# 2. 查看相关代码变更,RTK 自动压缩 diffgitdiffmain -- ./src# 3. 将精简后的信息发给 Claude Code# "以上是测试失败和相关代码变更,请分析根本原因并给出修复方案"由于输入内容大幅精简,Claude Code 能更专注于核心错误信息,响应更准确,且 Token 消耗仅为原来的约 15%。
五、配置详解
配置文件路径
- Linux / macOS:
~/.config/rtk/config.toml - macOS(应用支持目录):
~/Library/Application Support/rtk/config.toml
主要配置项
[tracking] # 自定义历史数据库路径 database_path = "/path/to/custom.db" # 默认: ~/.local/share/rtk/history.db [hooks] # 跳过某些命令的自动改写 exclude_commands = ["curl", "playwright"] [tee] # 失败命令的完整输出保存策略(max_files 目前为源码硬编码,暂不可配置) enabled = true mode = "failures" # "failures"(默认)| "always" | "never" [telemetry] # 匿名遥测(默认关闭,需显式 consent 后才开启) enabled = true # 设为 true 并执行 `rtk telemetry enable` 开启关于遥测(隐私说明)
RTK默认关闭匿名遥测。如需开启,需执行rtk telemetry enable显式同意。开启后大约每 23 小时上报一次以下聚合信息(用于辅助开发优先级决策):
- 设备哈希(加盐 SHA-256,不可逆)
- RTK 版本、操作系统、架构
- 命令计数和命令名称(如 “git”、“cargo”,不包含参数和路径)
- Token 节省百分比
不收集:源代码、文件路径、命令参数、密钥、环境变量或任何个人可识别信息。
如需禁用遥测(即使已开启):
# 方式 1:环境变量(优先级最高)exportRTK_TELEMETRY_DISABLED=1# 方式 2:撤回 consentrtk telemetry disable# 方式 3:配置文件# 在 ~/.config/rtk/config.toml 中添加:[telemetry]enabled=false卸载
rtk init-g--uninstall# 移除 Hook、RTK.md 及相关配置cargouninstall rtk# 移除二进制(Cargo 安装时)brew uninstall rtk# 移除二进制(Homebrew 安装时)六、工作原理:四大过滤策略
RTK 的核心是针对每类命令输出应用以下四种策略的组合:
| 策略 | 说明 | 典型效果 |
|---|---|---|
| Smart Filtering(智能过滤) | 移除注释、空白行、样板文字、ANSI 颜色码 | 去除git push进度条信息 |
| Grouping(分组聚合) | 将同类项目合并展示(按目录聚合文件、按规则聚合 lint 错误) | rtk ls将子目录折叠为一行 |
| Truncation(截断裁剪) | 保留最相关的上下文,截去冗余部分 | rtk read大文件时只保留核心段落 |
| Deduplication(去重折叠) | 将重复日志行合并并显示计数 | rtk docker logs将 1000 条重复日志折叠为 1 条 |
以git push为例,原始输出包含进度条、对象计数、Delta 压缩等约 15 行无实质内容的信息,RTK 直接精简为ok main(约 10 Token),对于 AI 来说信息等价,但成本降低 95%。
Hook 改写流程
RTK 并非通过系统调用拦截(如ptrace/DTrace)实现透明压缩,而是借助 AI 工具自带的PreToolUse Hook机制,在 Bash 命令执行前将其改写为rtk前缀版本:
这种设计的优势是零系统级侵入:不需要 root 权限,也不依赖平台特定的系统调用拦截技术,仅需在 AI 工具配置中注入一段 Hook 脚本即可。
命令失败时的 Tee 恢复机制
当命令执行失败时,RTK 会将完整原始输出保存到本地文件,并向 LLM 提供精简摘要 + 文件路径,兼顾 Token 节省与排错需求:
可通过环境变量RTK_TEE_DIR自定义 Tee 保存路径。
支持的 AI 工具
| 工具 | 安装命令 | 集成方式 |
|---|---|---|
| Claude Code | rtk init -g | PreToolUse Hook(Bash) |
| GitHub Copilot (VS Code) | rtk init -g --copilot | PreToolUse Hook(透明改写) |
| Cursor | rtk init -g --agent cursor | preToolUse Hook (hooks.json) |
| Gemini CLI | rtk init -g --gemini | BeforeTool Hook |
| OpenAI Codex | rtk init -g --codex | AGENTS.md 指令 |
| Windsurf | rtk init -g --agent windsurf | .windsurfrules(项目级,需加-g) |
| Cline / Roo Code | rtk init --agent cline | .clinerules(项目级) |
七、适用场景与成本测算
RTK 尤其适合以下场景:
- 频繁将 CLI 输出发送给 ChatGPT、Claude、Gemini 等 LLM 的开发者;
- 使用 Claude Code、Cursor 等 AI 编程工具进行日常开发;
- 对 API 调用成本敏感的团队或个人(Token 消耗降低 = 直接减少费用);
- 日志分析、代码调试、CI/CD 结果解读等场景。
月度成本节省参考
以某开发者日常使用 Claude Code 为例:
- 使用前:每次会话平均消耗 ~118,000 Token
- 使用后:每次会话平均消耗 ~24,000 Token
- 节省比例:约 80%
- 折算费用:按 Claude Sonnet 计算,每百次会话节省约数十美元,长期积累相当可观
八、总结与资源
RTK 是 LLM 辅助开发场景下几乎没有理由不用的工具:零学习成本、零侵入、即装即用,对 Claude Code 等 AI 工具有原生支持。唯一需要注意的是:它的匿名遥测默认关闭(需执行rtk telemetry enable显式同意后才能开启),以及 Hook 不覆盖 Claude Code 的内置文件读取工具(需手动改用 Shell 命令或rtk命令)。
官方资源
- 📦开源仓库:https://github.com/rtk-ai/rtk
- 🌐官方文档:https://www.rtk-ai.app
- 🔧故障排查:TROUBLESHOOTING.md
- 🏗️架构文档:ARCHITECTURE.md
- 💬社区交流:Discord
附录:原博文主要错误与修正说明
以下是原博文中发现的主要错误,供参考:
| 问题类型 | 原博文内容 | 实际情况 |
|---|---|---|
| 许可证错误 | MIT 许可证 | LICENSE文件为Apache-2.0,但Cargo.toml和 README 徽章仍标注 MIT,存在不一致 |
| 工作原理错误 | 通过ptrace/DTrace拦截系统调用 | 通过AI 工具的 PreToolUse Hook透明改写 Bash 命令 |
| 配置路径错误 | ~/.rtk/filters.toml、~/.rtk/hooks.toml | 配置文件为~/.config/rtk/config.toml,不存在filters.toml |
| 初始化命令错误 | rtk init(无参数) | 需加-g参数,且不同工具有不同参数(如--gemini、--agent cursor) |
| 不存在的命令 | rtk filter、RTK_DISABLE=1 | 无rtk filter命令;无RTK_DISABLE环境变量(有RTK_TELEMETRY_DISABLED) |
| 节省比例张冠李戴 | git diff节省 92% | 92% 是git add/commit/push的节省比,git diff实际节省 75% |
| 遥测信息缺失 | 未提及 | RTK默认关闭匿名遥测,需执行rtk telemetry enable显式同意后方可开启;上报间隔约 23 小时 |
| 支持工具不完整 | 只提及 Claude Code | 实际支持10 款AI 编程工具 |
| 自定义规则描述不准 | 描述了不存在的[claude-code-optimize]等配置节 | 实际配置项以[tracking]、[hooks]、[tee]、[telemetry]为主 |