在这里插入图片描述

在大模型辅助开发的日常场景中,你是否经常因为把 git logcargo testdocker 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 statusrtk 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 推荐)

brew install rtk

方式 2:一键脚本(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  # 或 ~/.zshrc

方式 3:Cargo(有 Rust 环境推荐)

# 注意:必须从 GitHub 安装,避免与 crates.io 上的同名包冲突
cargo install --git https://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 为例
wget https://github.com/rtk-ai/rtk/releases/latest/download/rtk-x86_64-unknown-linux-musl.tar.gz
tar -zxvf rtk-x86_64-unknown-linux-musl.tar.gz
mv rtk ~/.local/bin/
rtk --version

验证安装

rtk --version   # 应输出类似 "rtk 0.36.0"
rtk gain        # 查看 Token 节省统计

三、快速上手:与 AI 工具集成

RTK 最核心的使用方式,是通过 rtk init 为 AI 工具安装 自动改写 Hook。安装后,AI 工具每次调用 Bash 命令时,Hook 会自动将命令透明改写(如 git statusrtk git status),AI 完全无感知,只会收到压缩后的输出。

第一步:初始化并安装 Hook

根据你使用的 AI 工具选择对应命令:

rtk init -g                     # Claude Code / GitHub Copilot(默认,推荐)
rtk init -g --gemini            # Gemini CLI
rtk init -g --codex             # OpenAI Codex
rtk init -g --agent cursor      # Cursor
rtk init -g --agent windsurf    # Windsurf(项目级别,需加 -g 参数)
rtk init --agent cline          # Cline / Roo Code(项目级别)

安装完成后,重启 AI 工具使 Hook 生效。

第二步:验证 Hook 生效

rtk init --show   # 查看已安装的 Hook 和配置

第三步:正常使用即可

Hook 生效后,你在 AI 工具中使用原生命令时,RTK 会自动在后台完成改写和压缩:

# 以下命令在 AI 工具中执行时,会自动被 RTK 透明处理
git status
git diff main
cargo test
ls -l ./src
grep -r "error" ./logs
docker ps

重要提示:Hook 只作用于 Bash 工具调用。Claude Code 的内置工具(如 ReadGrepGlob)不经过 Bash Hook,不会自动改写。如需在这些场景下使用 RTK 压缩,请改用 Shell 命令(cat/rg/find)或直接调用 rtk readrtk greprtk find

手动调用 RTK 命令

不依赖 Hook,也可以直接手动调用 RTK 的各类子命令:

# 文件与目录
rtk ls .                        # Token 优化的目录树
rtk read file.rs                # 智能读取文件
rtk read file.rs -l aggressive  # 只保留函数签名(去掉函数体)
rtk grep "pattern" .            # 分组展示搜索结果
rtk find "*.rs" .               # 紧凑的 find 结果
rtk diff file1 file2            # 精简 diff

# Git
rtk git status
rtk git log -n 10
rtk git diff
rtk git push                    # 输出简化为 "ok main"

# 测试命令(只显示失败项)
rtk test cargo test
rtk pytest
rtk go test
rtk vitest run

# 构建与 Lint
rtk tsc                         # TypeScript 错误按文件分组
rtk lint                        # ESLint 按规则/文件分组
rtk cargo build
rtk cargo clippy

# Docker / Kubernetes
rtk docker ps
rtk docker logs <container>
rtk kubectl pods

# 日志与杂项
rtk log app.log                 # 去重日志
rtk env -f AWS                  # 过滤环境变量
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 会做两件事:

  1. 在 Claude Code 的全局配置中注入 PreToolUse Hook,拦截所有 Bash 工具调用并透明改写为 rtk 命令;
  2. 生成 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 自动压缩(只显示失败项)
cargo test

# 2. 查看相关代码变更,RTK 自动压缩 diff
git diff main -- ./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:环境变量(优先级最高)
export RTK_TELEMETRY_DISABLED=1

# 方式 2:撤回 consent
rtk telemetry disable

# 方式 3:配置文件
# 在 ~/.config/rtk/config.toml 中添加:
[telemetry]
enabled = false

卸载

rtk init -g --uninstall     # 移除 Hook、RTK.md 及相关配置
cargo uninstall 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 前缀版本:

git status Shell rtk git status rtk rewrite settings.json (PreToolUse) Claude Code git status Shell rtk git status rtk rewrite settings.json (PreToolUse) Claude Code 调用 Bash: "git status" 执行 rtk rewrite "git status" 匹配到 GitCommands::Status 调用 git status 执行原生命令 原始输出 (~2000 tokens) 返回原始输出 智能过滤/压缩 精简结果 (~200 tokens)

这种设计的优势是零系统级侵入:不需要 root 权限,也不依赖平台特定的系统调用拦截技术,仅需在 AI 工具配置中注入一段 Hook 脚本即可。

命令失败时的 Tee 恢复机制

当命令执行失败时,RTK 会将完整原始输出保存到本地文件,并向 LLM 提供精简摘要 + 文件路径,兼顾 Token 节省与排错需求:

执行命令

退出码 != 0?

输出 > 500 bytes?

写入 ~/.local/share/rtk/tee/

LLM 看到精简摘要 + 文件路径

仅返回精简输出

可通过环境变量 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 命令)。

官方资源


附录:原博文主要错误与修正说明

以下是原博文中发现的主要错误,供参考:

问题类型 原博文内容 实际情况
许可证错误 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 filterRTK_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] 为主
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐