Py学习  »  Git

GitHub 40k Star!这个开源神器,让 AI 调用直接省下一半 Token

极客之家 • 1 月前 • 181 次点击  

 

用 AI 写代码,钱都去哪了?

用过 Claude Code 或 Cursor 做项目的人,多半都有这个感受:跑一个下午,API 账单上的数字就蹭蹭往上涨。费用大头不是让 AI 写代码,而是那些反复执行的命令。

git statuscargo testlsgrep……这些命令 AI 每执行一次,输出结果就会完整塞进上下文窗口。原始的 git status 输出可能有两千个 token,cargo test 失败时能泻出几百行日志。AI 代理一次会话里会跑几十次这样的命令。乘一下就知道,单是命令输出这一项,就能吃掉大量 token 配额。

rtk 就是专门来处理这个问题的。


rtk 是什么

rtk 全名 Rust Token Killer,是一个用 Rust 写的命令行代理工具,MIT 开源,托管在 GitHub 上。

它的定位很简单:在 AI 代理执行 shell 命令时,拦截命令输出,把里面的冗余内容去掉,再把压缩后的结果交给 AI。整个过程对 AI 完全透明,AI 不知道中间有人动过手脚,只是收到了更精简的信息。

项目官方给出的数据是:在一次 30 分钟的 Claude Code 会话里,rtk 能把 token 用量从约 11.8 万压到约 2.4 万,整体降幅接近 80%

命令
原始 token
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%
cargo test
 / npm test × 5
25,000
2,500
-90%
合计~118,000~23,900-80%

以上数据基于中等规模的 TypeScript/Rust 项目估算,实际节省因项目而异。

正是因为rtk能给我们实际生产中节约大量token,达到省钱的效果,它开源后迅速在GitHub爆火,目前有近40k star。


它怎么工作

rtk 的处理逻辑可以用这张图来说明:

具体来说,rtk 对每类命令分别用四种策略处理:

  • • 智能过滤:去掉注释、空行、样板输出。git push 原本会打出十几行 "Enumerating objects" 之类的进度信息,rtk 过滤后只留一行 ok main
  • • 分组:把同类信息聚在一起。比如 ls 的输出,按目录层级重新整理成树状,而不是一行行列出来。
  • • 截断:只保留有用的部分,去掉重复内容。测试通过的用例不需要逐条列出,失败的才需要关注。
  • • 去重:如果日志里同一条错误反复出现五十次,rtk 会合并成一行加一个计数,而不是让 AI 读五十遍一样的内容。

效果非常直观,比如跑 cargo test:

# 原始输出(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
...(省略大量通过的用例)

AI 只需要看失败的,根本不需要知道哪些通过了。

还有一个细节值得一提:tee 机制。当命令执行失败时,rtk 会把完整的原始输出保存到本地文件,同时在压缩结果里附上路径。如果 AI 觉得精简版信息不够用,可以直接去读完整日志,不需要重新执行命令。


支持哪些命令

rtk 目前支持 100+ 条命令,覆盖日常开发最常用的工具链。

文件操作

rtk ls .                        # 优化后的目录树
rtk read file.rs                # 智能读文件
rtk read file.rs -l aggressive  # 只保留函数签名,去掉函数体
rtk grep "pattern" .            # 按文件分组的搜索结果
rtk find "*.rs" .               # 精简的 find 输出

Git 全家桶

rtk git status    # 紧凑状态
rtk git log -n 10 # 每条提交一行
rtk git diff      # 精简 diff
rtk git push      # 只输出 "ok main"
rtk git pull      # 只输出 "ok 3 files +10 -2"

测试框架

rtk jest          # 只看失败
rtk vitest        # 只看失败
rtk pytest        # -90% token
rtk go test       # -90% token
rtk cargo test    # -90% token
rtk rspec         # -60%+ token

构建与 lint

rtk tsc           # TypeScript 错误按文件分组
rtk cargo build   # -80%
rtk ruff check    # Python lint,-80%
rtk golangci-lint run  # Go lint,-85%

容器与云

rtk docker ps               # 紧凑容器列表
rtk docker logs  # 去重日志
rtk kubectl pods            # 紧凑 Pod 列表
rtk aws ec2 describe-instances  # 精简实例列表

其他实用命令

rtk json config.json  # 只显示结构,不显示值
rtk env -f AWS        # 过滤指定前缀的环境变量
rtk log app.log       # 去重日志
rtk err          # 只输出错误

支持哪些 AI 工具

目前 rtk 官方支持 12 款 AI 编程工具:

工具
安装命令
集成方式
Claude Code
rtk init -g
PreToolUse hook
GitHub Copilot (VS Code)
rtk init -g --copilot
PreToolUse hook
Cursor
rtk init -g --agent cursor
hooks.json
Gemini CLI
rtk init -g --gemini
BeforeTool hook
Codex
rtk init -g --codex
AGENTS.md 注入
Windsurf
rtk init --agent windsurf
.windsurfrules
Cline / Roo Code
rtk init --agent cline
.clinerules
OpenCode
rtk init -g --opencode
Plugin TS
Kilo Code
rtk init --agent kilocode
规则文件

其中 Claude Code 的集成最深。rtk 通过 PreToolUse hook 拦截所有 bash 调用,把 git status 自动重写成 rtk git status ,完全不需要手动加前缀,对 AI 来说也是无感知的。

需要注意一点:这个 hook 只对 bash 工具调用生效。Claude Code 内置的 ReadGrepGlob 工具不走 bash,所以不会被自动拦截。如果想对这些场景也用上 rtk,需要在提示词里用 catrgfind 这类 shell 命令,或者直接调用 rtk readrtk grep


安装与上手

安装非常简单,三种方式任选:

Homebrew(推荐)

brew install rtk

快速安装脚本(Linux / macOS)

curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh

安装完之后需要把 ~/.local/bin 加到 PATH,脚本会提示。

Cargo 源码安装

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

注意:crates.io 上有个同名的包叫 "Rust Type Kit",不是这个项目。用 Cargo 安装时一定要加 --git,直接 cargo install rtk 会装错。

验证安装

rtk --version   # 显示版本号
rtk gain        # 查看 token 节省统计

接入 Claude Code

rtk init -g     # 安装 hook 并写入 RTK.md

执行完之后重启 Claude Code,hook 就生效了。之后运行 git status 会自动被重写成  rtk git status,Claude 收到的是压缩后的输出。

Windows 上需要单独说一下。原生 Windows 环境下,bash hook 不能用,rtk 会退回到 CLAUDE.md 注入模式,也就是在提示词里给 AI 写明该怎么用 rtk。过滤功能本身正常,但命令不会自动重写。想要完整体验,建议用 WSL。


Token 分析功能

除了过滤命令输出,rtk 还内置了一套分析工具,可以追踪节省了多少 token。

rtk gain                    # 汇总统计
rtk gain --graph            # ASCII 折线图(最近 30 天)
rtk gain --history          # 最近命令历史
rtk gain --daily            # 按天分解
rtk gain --all --format json  # 导出 JSON,适合接自己的仪表盘

还有一个 rtk discover 命令,可以扫描最近的 shell 历史,找出哪些命令还没有被 rtk 过滤,提示你可以补充配置。

rtk discover            # 当前项目
rtk discover --all --since 7  # 所有项目,最近 7 天

如果你想知道整体 AI 会话里 rtk 的覆盖率,可以用:

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

从 Star 增长曲线来看,这个项目最近涨势不错,说明确实有开发者觉得有用。


关于隐私和遥测

rtk 有一个可选的匿名遥测功能,默认关闭,需要在 rtk init 时主动开启才会收集。

收集的内容很有限:版本号、系统信息、命令数量、节省的 token 数,以及命令类别分布(比如 git 占 45%、cargo 占 20%)。不会收集源代码、文件路径、命令参数、环境变量,也不会收集任何个人信息。

管理遥测的命令:

rtk telemetry status   # 查看当前状态
rtk telemetry enable   # 开启
rtk telemetry disable  # 关闭
rtk telemetry forget   # 关闭并删除所有本地数据

也可以用环境变量强制关闭:




    
export RTK_TELEMETRY_DISABLED=1

总结

rtk 解决的是一个很实际的问题:AI 编程代理在执行 shell 命令时,原始输出里有大量 AI 根本用不上的内容,这些内容白白占用了 token 配额。

rtk 做的事情就是在命令输出进入上下文之前,把冗余的部分过滤掉。不修改 AI 的行为,不改变你的工作流,只是在中间加了一层过滤。

它用 Rust 写,单个二进制文件,零依赖,延迟不到 10ms,几乎感觉不到它的存在。如果你每天都在用 Claude Code 或 Cursor 写代码,不妨试一试,说不定账单能少一截。

GitHub:https://github.com/rtk-ai/rtk

 

这个公众号曾分享过许多有趣的开源项目。如果你不想逐篇翻阅历史文章,也可以直接关注微信公众号“极客之家”,通过后台留言与我们互动交流

图片

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/195818