Token Killer: RTK,给你的 AI 编程代理瘦个身

rtk.jpg

RTK (Rust Token Killer) 是一个 CLI 代理工具,它的核心思路是在命令输出到达 AI 之前把噪音过滤压缩掉,从而实现平均省 60-90% 的 token 的效果。

你有没有算过,Claude Code 一个小时的会话,光 git statuscargo test 这些命令的输出就吃掉多少 token?

原因在于大多数 CLI 命令的输出是给人看的——带进度条、带彩色、带提示语、带格式化。但对 AI 来说,git push 输出的 15 行 “Enumerating objects…” 毫无意义,它只需要知道 “ok main”。

快速上手

安装

1
2
3
4
5
# Homebrew(推荐)
brew install rtk

# 或脚本安装
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh

验证一下:

1
2
rtk --version   # 应该显示 rtk 0.39.x
rtk gain        # 应该显示 token 节省统计

配置

一条命令搞定——给你的 AI 工具装上 Hook:

1
2
3
4
5
6
7
# 对于 Claude Code(默认)
rtk init -g          
# 对于 Cursor           
rtk init -g --agent cursor      
# 对于 Windsurf
rtk init -g --agent windsurf       
# 更多工具使用 rtk init --help 查看

使用

配置完 RTK 之后重启 AI 工具就行。

之后你在 AI 会话里执行 git status,它会被自动重写成 rtk git status——AI 收到的是压缩后的输出,但你完全无感。

效果对比:

1
2
3
4
5
6
7
8
# 普通 git push (~200 tokens)          # rtk git push (~10 tokens)
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.
Writing objects: 100% (3/3), done.
To github.com:user/repo.git
   abc123..def456  main -> main
1
2
3
4
5
6
# 普通 cargo test (200+ 行)            # rtk 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
test utils::test_edge_case ... FAILED
...150 行 backtrace...

30 分钟典型会话的估算节省:

命令频次原始 tokenrtk 后节省
git status10x3,000600-80%
cargo test5x25,0002,500-90%
git diff5x10,0002,500-75%
cat/read20x40,00012,000-70%
合计~118,000~23,900-80%

rtk-gain.png

它是怎么工作的

核心思路

RTK 是一个 CLI 代理,拦截命令输出并压缩后再交给 AI

1
2
3
4
5
AI Agent ──"git status"──> RTK ──> git ──> 原始输出
                              过滤压缩
AI Agent <──────────────── RTK <──┘

对不同类型的命令,RTK 用不同策略压缩:

  • git 操作(add/commit/push):成功时只输出 ok,省 92%
  • 测试命令(cargo test/pytest):只显示失败的测试,省 90%+
  • lint/tsc:按规则分组错误,省 80%+
  • 文件列表(ls/tree):压缩为带计数的树状结构,省 80%
  • 代码阅读(read/smart):可选去除注释、折叠函数体,省 30-90%

RTK 不认识的命令会原样执行,不做压缩——永远不会因为 RTK 导致命令失败

Hook 自动重写

rtk init -g 会在你的 AI 工具配置里加一个 Hook,让每次 Bash 命令执行前自动走 RTK。以 Claude Code 为例,它在 ~/.claude/settings.json 里加了一个 PreToolUse Hook:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "rtk hook claude"
          }
        ]
      }
    ]
  }
}

每次 Claude Code 执行 Bash 命令前,这个 Hook 会先触发 rtk hook claude,由 RTK 接管命令的执行和输出压缩。

1
2
3
4
Claude Code 执行 "git status"
  → Hook 拦截,改写为 "rtk git status"
  → RTK 执行并压缩输出
  → Claude 收到精简结果

两套过滤体系

RTK 支持两种方式添加命令过滤:

  • Rust 模块src/cmds/):适合需要复杂解析的命令,比如 pytest 用状态机追踪测试状态、go test 用 NDJSON 流式解析
  • TOML DSLsrc/filters/*.toml):声明式规则,适合简单的行过滤/替换,比如 helmshellcheck

内置了 100+ 命令支持,你也可以在 .rtk/filters.toml 里写自定义规则。

实用命令速查

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# 文件操作
rtk ls .                        # 压缩目录树
rtk read file.rs                # 智能读取
rtk read file.rs -l aggressive  # 只保留函数签名
rtk grep "pattern" .            # 按文件分组搜索

# Git
rtk git status / diff / log     # 压缩输出
rtk git add / commit / push     # 极简输出

# 测试
rtk cargo test / pytest / go test   # 只显示失败

# 包管理
rtk pnpm list / pip list        # 压缩依赖树

# 查看节省
rtk gain                        # 总览
rtk gain --graph                # 30 天趋势图
rtk gain --quota -t pro         # 按订阅估算省钱
rtk discover                    # 发现未优化的命令

全局标志:-u 开启超压缩模式(ASCII 图标 + 内联格式),-v/-vv/-vvv 逐级调试。

小结

RTK 是一个 CLI 代理工具——Token Killer 名字很贴切,在命令输出到达 AI 之前把噪音过滤掉。它解决了一个很实际问题:AI 编程代理执行命令时大量无意义输出导致的 token 浪费。 用起来没什么感知,看账单才知道省了多少,时不时跑下 rtk gain 看看又省了多少 Token 哈哈。

0%