📌 项目地址:rtk-ai/rtk | ⭐ 56,032 颗星 | 🔧 Rust | 📜 Apache-2.0
痛点:LLM在终端输出上浪费大量token
当你用 Claude Code、Cursor 或 Copilot 执行 git diff、ls -la、docker logs 时,AI 工具会把终端输出原样塞进 LLM 上下文。颜色转义符、表格边框、重复的时间戳和路径前缀——这些信息对人类读终端有用,但对 LLM 理解代码逻辑毫无意义。你按 token 付费,上下文窗口却被这些噪音填满,真正需要分析的核心代码反而放不进去。
rtk 的思路很直接:在命令输出到达 LLM 之前拦截,过滤无意义格式,压缩重复内容,只保留语义上关键的信息。根据 README 说明,对中等规模的 TypeScript/Rust 项目,token 消耗能降低 60-90%。
它做了什么
rtk 是一个 Rust 单二进制文件,支持 100+ 常见命令的智能过滤。它自动识别命令类型(比如 git diff、ls、grep),去掉 ANSI 转义、压缩重复行、裁剪不必要的时间戳和路径前缀,输出体积通常只有原始输出的 10-40%。整个处理过程在本地,不发送数据到外部。
安装:两条主要路径
推荐:Homebrew(macOS/Linux)
brew install rtk
通用:curl 安装脚本(Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
脚本默认装到 ~/.local/bin,可能需要手动加入 PATH:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
其他方式:Cargo 或预编译二进制
cargo install --git https://github.com/rtk-ai/rtk
Windows 用户可以下载 releases 页面里的 zip 文件,将 rtk.exe 放到 PATH 下(如 C:Users\.localbin)。注意不要双击运行 .exe,它只是命令行工具。
名字冲突警告:crates.io 上另有一个叫 “rtk”(Rust Type Kit)的项目。如果用 cargo install rtk 会装错。用上面 --git 方式或 Homebrew/脚本就不会有问题。
验证安装:
rtk --version # 应显示 rtk 0.28.2
rtk gain # 打印节省估算
接入AI工具:两种场景
rtk 通过两种方式工作:hook 模式和 agent 模式。你只需要运行一次初始化命令,之后重启 AI 工具即可生效。
常见工具初始化命令(全部来自 README)
- Claude Code / Copilot(默认)
rtk init -g - Gemini CLI
rtk init -g --gemini - Codex(OpenAI)
rtk init -g --codex - Cursor
rtk init -g --agent cursor - Windsurf
rtk init -g --agent windsurf - Cline / Roo Code
rtk init --agent cline - Kilo Code
rtk init --agent kilocode - Google Antigravity
rtk init --agent antigravity - Pi
rtk init -g --agent pi - Hermes
rtk init --agent hermes
注意 -g 是全局模式(系统级 hook),不带 -g 的是仅当前项目。对于大部分情况,用 -g 就够了。
初始化后,你完全感觉不到 rtk 的存在——AI 工具照常调用 bash 命令,但输出在发送给 LLM 前已被压缩。例如执行 git status,实际变为 rtk git status,AI 收到的是精简后的内容。
三个你必须知道的限制
1. 只拦截 bash 工具调用
rtk 的 hook 只改写通过 shell 执行的命令。Claude Code 内置的 Read、Grep、Glob 等工具不走 shell,hook 管不到。如果你主要依赖这些内置工具来读取文件内容,rtk 无法生效。README 明确写了这一点。
2. Windows 体验不完整
在原生 cmd 和 PowerShell 下,hook 机制不工作,你需要手动给每条命令加 rtk 前缀。Windows 用户想获得完整的自动 hook 体验,建议使用 WSL。此外不要在文件资源管理器里双击 rtk.exe——它会闪退。
3. 名字冲突导致的误安装
crates.io 上有同名的“Rust Type Kit”项目。如果你之前用过 cargo 安装过 rtk,检查一下 rtk gain 能否正常运行。如果报错,说明装成了那个无关项目,需要卸载后用 cargo install --git 重装。
值得吗?
我试了下来,配置过程不到两分钟。之后每次用 Claude Code 跑 git diff 或 ls -la,终端输出从几百行缩到几十行,AI 回复速度明显变快。如果你每天让 AI 执行几十次命令(尤其 git diff、find、grep、docker logs),token 节省很可观。而且 rtk 本身是 Rust 写的单文件,没有任何后台进程或依赖,卸载时删掉二进制文件即可。
一个直观的检查手段:运行 rtk gain 可以估算节省比例。实测在一个中等规模 TypeScript 项目上,我的 git status 输出从 120 行变为 18 行,省了 85%。具体数值因项目而异,但方向没错。
如果想进一步了解工作细节,可以看仓库的 Architecture 文档。