开源项目

rtk

rtk

减少 LLM token 消耗 60-90% 的 CLI 代理,专门针对 AI 编码工具的 Bash 命令输出进行智能过滤和压缩。Rust 编写,单一二进制无依赖,安装极简。支持 Claude Code、Copilot、Cursor 等 13 种主流 AI 工具,通过 hook 或插件自动重写命令,对 ls、git、test 等 100+ 命令有针对性优化,且延迟 <10ms。适合高频使用 LLM 编码助手的开发者,能显著节省 API 费用。

README

RTK - Rust Token Killer

高性能 CLI 代理,将 LLM token 消耗降低 60-90%

CI Release License: MIT Discord Homebrew

Website • Install • Troubleshooting • Architecture • Discord

English • Francais • 中文 • 日本語 • 한국어 • Espanol


rtk 在命令输出进入 LLM context 之前对其进行过滤和压缩。单个 Rust 二进制文件,支持 100+ 命令,开销 <10ms。

Token 节省(30 分钟 Claude Code 会话)

操作 频率 标准 rtk 节省
ls / tree 10次 2,000 400 -80%
cat / read 20次 40,000 12,000 -70%
grep / rg 8次 16,000 3,200 -80%
git status 10次 3,000 600 -80%
git diff 5次 10,000 2,500 -75%
git log 5次 2,500 500 -80%
git add/commit/push 8次 1,600 120 -92%
cargo test / npm test 5次 25,000 2,500 -90%
ruff check 3次 3,000 600 -80%
pytest 4次 8,000 800 -90%
go test 3次 6,000 600 -90%
docker ps 3次 900 180 -80%
总计 ~118,000 ~23,900 -80%

基于中型 TypeScript/Rust 项目的估算。实际节省取决于项目大小。

安装

Homebrew(推荐)

brew install rtk

快速安装(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

Cargo

cargo install --git https://github.com/rtk-ai/rtk

预构建二进制文件

从 releases 下载:

  • macOS:rtk-x86_64-apple-darwin.tar.gz / rtk-aarch64-apple-darwin.tar.gz
  • Linux:rtk-x86_64-unknown-linux-musl.tar.gz / rtk-aarch64-unknown-linux-gnu.tar.gz
  • Windows:rtk-x86_64-pc-windows-msvc.zip

Windows 用户:解压 zip 并将 rtk.exe 放入 PATH 中的某个位置(例如 C:\Users\<你>\.local\bin)。通过命令提示符、PowerShell 或 Windows 终端运行 RTK — 不要双击 .exe(它会一闪而过)。为了获得最佳体验,请使用 WSL,那里完整的 hook 系统可原生工作。详见下面的 Windows 设置。

验证安装

rtk --version   # 应显示 "rtk 0.28.2"
rtk gain        # 应显示 token 节省统计

名称冲突警告:另一个名为 "rtk"(Rust Type Kit)的项目存在于 crates.io 上。如果 rtk gain 失败,说明你安装了错误的包。请改用上面的 cargo install --git。

快速开始

# 1. 为你的 AI 工具安装
rtk init -g                     # Claude Code / Copilot(默认)
rtk init -g --gemini            # Gemini CLI
rtk init -g --codex             # Codex (OpenAI)
rtk init -g --agent cursor      # Cursor
rtk init --agent windsurf       # Windsurf
rtk init --agent cline          # Cline / Roo Code
rtk init --agent kilocode       # Kilo Code
rtk init --agent antigravity    # Google Antigravity
rtk init --agent hermes         # Hermes

# 2. 重启 AI 工具,然后测试
git status  # 自动重写为 rtk git status

基于 hook 的 agent 会在执行前重写 Bash 命令(例如 git status -> rtk git status)。基于插件的 agent(包括 Hermes)使用其插件 API 在执行前重写命令。agent 会收到紧凑的输出,无需显式调用 rtk。

重要提示:hook 仅对 Bash 工具调用生效。Claude Code 的内置工具如 Read、Grep 和 Glob 不会经过 Bash hook,因此不会自动重写。若要为这些工作流获得 RTK 的紧凑输出,请使用 shell 命令(cat/head/tail、rg/grep、find)或直接调用 rtk read、rtk grep、rtk find。

工作原理

  无 rtk:                                    有 rtk:

  Claude  --git status-->  shell  -->  git         Claude  --git status-->  RTK  -->  git
    ^                                   |            ^                      |          |
    |        ~2,000 tokens (原始)       |            |   ~200 tokens        | 过滤     |
    +-----------------------------------+            +------- (过滤后) -----+----------+

每种命令类型应用四种策略:

  1. 智能过滤(Smart Filtering) - 移除噪声(注释、空白、样板代码)
  2. 分组(Grouping) - 聚合相似项(按目录的文件、按类型的错误)
  3. 截断(Truncation) - 保留相关上下文,削减冗余
  4. 去重(Deduplication) - 用计数折叠重复的日志行

命令

文件

rtk ls .                        # 优化 token 的目录树
rtk read file.rs                # 智能文件读取
rtk read file.rs -l aggressive  # 仅签名(剥离函数体)
rtk smart file.rs               # 2 行启发式代码摘要
rtk find "*.rs" .               # 紧凑的查找结果
rtk grep "pattern" .            # 分组的搜索结果
rtk diff file1 file2            # 精简的 diff

Git

rtk git status                  # 紧凑状态
rtk git log -n 10               # 单行提交
rtk git diff                    # 精简的 diff
rtk git add                     # -> "ok"
rtk git commit -m "msg"         # -> "ok abc1234"
rtk git push                    # -> "ok main"
rtk git pull                    # -> "ok 3 files +10 -2"

GitHub CLI

rtk gh pr list                  # 紧凑的 PR 列表
rtk gh pr view 42               # PR 详情 + 检查
rtk gh issue list               # 紧凑的 issue 列表
rtk gh run list                 # 工作流运行状态

测试运行器

rtk jest                        # Jest 紧凑(仅失败)
rtk vitest                      # Vitest 紧凑(仅失败)
rtk playwright test             # E2E 结果(仅失败)
rtk pytest                      # Python 测试(-90%)
rtk go test                     # Go 测试(NDJSON,-90%)
rtk cargo test                  # Cargo 测试(-90%)
rtk rake test                   # Ruby minitest(-90%)
rtk rspec                       # RSpec 测试(JSON,-60%+)
rtk err <cmd>                   # 从任何命令中仅过滤错误
rtk test <cmd>                  # 通用测试包装器 - 仅失败(-90%)

构建与 Lint

rtk lint                        # ESLint 按规则/文件分组
rtk lint biome                  # 支持其他 linter
rtk tsc                         # TypeScript 错误按文件分组
rtk next build                  # Next.js 构建紧凑输出
rtk prettier --check .          # 需要格式化的文件
rtk cargo build                 # Cargo 构建(-80%)
rtk cargo clippy                # Cargo clippy(-80%)
rtk ruff check                  # Python lint(JSON,-80%)
rtk golangci-lint run           # Go lint(JSON,-85%)
rtk rubocop                     # Ruby lint(JSON,-60%+)

包管理器

rtk pnpm list                   # 紧凑的依赖树
rtk pip list                    # Python 包(自动检测 uv)
rtk pip outdated                # 过时的包
rtk bundle install              # Ruby gems(剥离 Using 行)
rtk prisma generate             # 模式生成(无 ASCII 艺术)

AWS

rtk aws sts get-caller-identity # 单行身份
rtk aws ec2 describe-instances  # 紧凑的实例列表
rtk aws lambda list-functions   # 名称/运行时/内存(剥离密钥)
rtk aws logs get-log-events     # 仅时间戳消息
rtk aws cloudformation describe-stack-events  # 失败优先
rtk aws dynamodb scan           # 展开类型注解
rtk aws iam list-roles          # 剥离策略文档
rtk aws s3 ls                   # 截断 + tee 恢复

容器

rtk docker ps                   # 紧凑的容器列表
rtk docker images               # 紧凑的镜像列表
rtk docker logs <container>     # 去重日志
rtk docker compose ps           # Compose 服务
rtk kubectl pods                # 紧凑的 pod 列表
rtk kubectl logs <pod>          # 去重日志
rtk kubectl services            # 紧凑的服务列表

数据与分析

rtk json config.json            # 结构无值
rtk deps                        # 依赖摘要
rtk env -f AWS                  # 过滤的环境变量
rtk log app.log                 # 去重日志
rtk curl <url>                  # 截断 + 保存完整输出
rtk wget <url>                  # 下载,剥离进度条
rtk summary <long command>      # 启发式摘要
rtk proxy <command>             # 原始透传 + 追踪

Token 节省分析

rtk gain                        # 摘要统计
rtk gain --graph                # ASCII 图(最近 30 天)
rtk gain --history              # 最近的命令历史
rtk gain --daily                # 逐日分解
rtk gain --all --format json    # JSON 导出用于仪表盘

rtk discover                    # 查找未利用的节省机会
rtk discover --all --since 7    # 所有项目,最近 7 天

rtk session                     # 显示最近会话中的 RTK 采用情况

全局标志

-u, --ultra-compact    # ASCII 图标,内联格式(额外 token 节省)
-v, --verbose          # 增加详细程度(-v, -vv, -vvv)

示例

目录列表:

# ls -la(45 行,约 800 个 token)       # rtk ls(12 行,约 150 个 token)
drwxr-xr-x  15 user staff 480 ...       my-project/
-rw-r--r--   1 user staff 1234 ...       +-- src/(8 个文件)
...                                      |   +-- main.rs
                                         +-- Cargo.toml

Git 操作:

# git push(15 行,约 200 个 token)     # rtk git push(1 行,约 10 个 token)
Enumerating objects: 5, done.             ok main
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
...

测试输出:

# cargo test(失败时 200+ 行)          # rtk test cargo test(约 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
...

自动重写 Hook

这是使用 rtk 最有效的方式。Hook 透明地拦截 Bash 命令,在执行前将其重写为 rtk 等效命令。

结果:在所有对话和子 agent 中实现 100% rtk 采用率,零 token 开销。

范围说明:仅适用于 Bash 工具调用。Claude Code 的内置工具如 Read、Grep 和 Glob 会绕过 hook,因此当需要 RTK 过滤时,请使用 shell 命令或显式的 rtk 命令。

设置

rtk init -g                 # 安装 hook + RTK.md(推荐)
rtk init -g --opencode      # OpenCode 插件(代替 Claude Code)
rtk init -g --auto-patch    # 非交互式(CI/CD)
rtk init -g --hook-only     # 仅 hook,无 RTK.md
rtk init --show             # 验证安装

安装后,重启 Claude Code。

Windows

RTK 可在 Windows 上使用,但有一些限制。自动重写 hook(rtk-rewrite.sh)需要 Unix shell,因此在原生 Windows 上 RTK 回退到 CLAUDE.md 注入模式 — 你的 AI 助手会收到 RTK 指令,但命令不会自动重写。

推荐:WSL(完整支持)

为获得最佳体验,请使用 WSL(Windows Subsystem for Linux)。在 WSL 内部,RTK 的工作方式与 Linux 完全相同 — 完整的 hook 支持、自动重写,一切正常:

# 在 WSL 内部
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
rtk init -g

原生 Windows(有限支持)

在原生 Windows(cmd.exe / PowerShell)上,RTK 过滤功能可用,但 hook 不会自动重写命令:

# 1. 从 releases 下载并解压 rtk-x86_64-pc-windows-msvc.zip
# 2. 将 rtk.exe 添加到 PATH
# 3. 初始化(回退到 CLAUDE.md 注入)
rtk init -g
# 4. 显式使用 rtk
rtk cargo test
rtk git status

重要提示:不要双击 rtk.exe — 它是一个 CLI 工具,会打印使用信息并立即退出。请始终在终端(命令提示符、PowerShell 或 Windows 终端)中运行它。

特性 WSL 原生 Windows
过滤(cargo、git 等) 完整 完整
自动重写 hook 是 否(回退到 CLAUDE.md)
rtk init -g Hook 模式 CLAUDE.md 模式
rtk gain / 分析 完整 完整

支持的 AI 工具

RTK 支持 13 种 AI 编码工具。每种集成都将 shell 命令重写为 rtk 等效命令,在 agent 支持命令拦截的情况下实现 60-90% 的 token 节省。

工具 安装 方法
Claude Code rtk init -g PreToolUse hook (bash)
GitHub Copilot (VS Code) rtk init -g --copilot PreToolUse hook — 透明重写
GitHub Copilot CLI rtk init -g --copilot PreToolUse deny-with-suggestion (CLI 限制)
Cursor rtk init -g --agent cursor preToolUse hook (hooks.json)
Gemini CLI rtk init -g --gemini BeforeTool hook
Codex rtk init -g --codex AGENTS.md + RTK.md 指令
Windsurf rtk init --agent windsurf .windsurfrules (项目范围)
Cline / Roo Code rtk init --agent cline .clinerules (项目范围)
OpenCode rtk init -g --opencode 插件 TS (tool.execute.before)
OpenClaw openclaw plugins install ./openclaw 插件 TS (before_tool_call)
Hermes rtk init --agent hermes Python 插件适配器 (通过 rtk rewrite 实现终端命令突变)
Mistral Vibe 计划中 (#800) 等待上游支持
Kilo Code rtk init --agent kilocode .kilocode/rules/rtk-rules.md (项目范围)
Google Antigravity rtk init --agent antigravity .agents/rules/antigravity-rtk-rules.md (项目范围)

有关每个 agent 的设置详情、覆盖控制和优雅降级,请参阅 支持的 Agent 指南。Hermes 插件源代码和测试位于 hooks/hermes/;已安装的 Hermes 运行时文件仍位于 ~/.hermes/plugins/rtk-rewrite/。

配置

~/.config/rtk/config.toml(macOS:~/Library/Application Support/rtk/config.toml):

[hooks]
exclude_commands = ["curl", "playwright"]  # 跳过这些命令的重写

[tee]
enabled = true          # 失败时保存原始输出(默认:true)
mode = "failures"       # "failures"、"always" 或 "never"

当命令失败时,RTK 会保存完整的未过滤输出,以便 LLM 无需重新执行即可读取:

FAILED: 2/15 tests
[full output: ~/.local/share/rtk/tee/1707753600_cargo_test.log]

有关完整的配置参考(所有章节、环境变量、按项目过滤),请参阅 配置指南。

卸载

rtk init -g --uninstall     # 移除 hook、RTK.md、settings.json 条目
cargo uninstall rtk          # 移除二进制文件
brew uninstall rtk           # 如果通过 Homebrew 安装

文档

隐私与遥测

RTK 可以每天收集一次匿名的、汇总的使用统计。遥测默认禁用,需要在 rtk init 期间或通过 rtk telemetry enable 显式同意(GDPR 第 6、7 条)。这些数据帮助我们构建更好的产品:识别哪些命令需要过滤器、哪些过滤器需要改进,以及 RTK 提供了多少价值。有关字段的完整列表、数据处理和贡献者指南,请参阅 docs/TELEMETRY.md。

收集了哪些数据及其原因:

类别 数据 原因
身份 加盐设备哈希(SHA-256,不可逆) 统计唯一安装量,不追踪个人
环境 RTK 版本、操作系统、架构、安装方式 了解哪些平台需要支持和测试
使用量 命令计数(24h)、总命令数、节省的 token(24h/30d/总计) 衡量采用率和交付价值
质量 前 5 个透传命令(0% 节省)、解析失败次数、节省 <30% 的命令 识别缺失的过滤器和需要改进的弱过滤器
生态系统 命令类别分布(例如 git 45%、cargo 20%、js 15%) 优先为流行生态系统开发过滤器
留存 首次使用以来天数、最近 30 天活跃天数 了解参与度并检测流失
采用率 AI agent hook 类型(claude/gemini/codex)、自定义 TOML 过滤器数量 追踪集成覆盖率和 DSL 采用情况
配置 config.toml 是否存在、排除的命令数量、项目数量 了解用户成熟度和自定义模式
特性 元命令(gain、discover、proxy、verify)的使用次数 了解哪些 RTK 功能被重视或未被使用
经济性 估计的美元节省(基于 API token 定价) 量化 RTK 为用户提供的价值

所有数据均为聚合计数或匿名命令名称(前 3 个单词,无参数)。顶部命令仅报告工具名称(例如“git”、“cargo”),从不报告完整的命令行。

不收集的内容: 源代码、文件路径、命令参数、密钥、环境变量、个人数据或仓库内容。

管理遥测:

rtk telemetry status     # 检查当前同意状态
rtk telemetry enable     # 给予同意(交互式提示)
rtk telemetry disable    # 撤回同意 — 立即停止所有收集
rtk telemetry forget     # 撤回同意 + 删除所有本地数据 + 请求服务器端擦除

通过环境变量覆盖:

export RTK_TELEMETRY_DISABLED=1   # 无论同意状态如何,阻止遥测

Star 历史

Star History Chart

StarMapper

StarMapper

核心团队

贡献

欢迎贡献!请在 GitHub 上开启 issue 或 PR。

加入 Discord 社区。

许可证

MIT 许可证 — 详见 LICENSE。

免责声明

详见 DISCLAIMER.md。

开源项目rtk-ai2026-05-19原文

相关内容