rtk Token压缩代理部署简记

发表于 1 天前  16 次阅读


文章目录

rtk Token压缩代理部署简记

一、背景

用 LLM coding agent 最大的隐形成本是 context 膨胀。一次 `ls` 给 65KB 输出,一次 `git diff` 几千行,这些全都算 token。rtk(Rust Token Killer)是个 Rust 写的 CLI 代理,在命令输出进入 LLM 上下文之前先过滤压缩,实测能省 60-90% token。

官网:https://github.com/rtk-ai/rtk

二、安装

macOS 直接 brew 装或者下载预编译二进制。brew 方式会拉一堆编译依赖(rust、llvm 等),太慢,直接下二进制:

curl -L -o /tmp/rtk.tar.gz \
  https://github.com/rtk-ai/rtk/releases/download/v0.43.0/rtk-x86_64-apple-darwin.tar.gz
mkdir -p ~/.local/bin
tar xzf /tmp/rtk.tar.gz -C ~/.local/bin/
chmod +x ~/.local/bin/rtk

国内网络拉 GitHub Releases 可能会超时,走代理:

curl -x http://localhost:18888 -L -o /tmp/rtk.tar.gz \
  https://github.com/rtk-ai/rtk/releases/download/v0.43.0/rtk-x86_64-apple-darwin.tar.gz

验证:

$ ~/.local/bin/rtk --version
rtk 0.43.0

三、原理

rtk 的核心思路是在 shell 命令和 LLM 之间加一层过滤器。对 Claude Code 这类工具,它通过 Bash hook 自动改写命令(`git status` → `rtk git status`),输出在进入 context 前就被压缩。

对 OpenClaw 这类使用 exec tool 的工具,需要在 agent 侧手动加 `rtk` 前缀。创建 OpenClaw skill 让 agent 自动识别该用 rtk 的场景。

rtk 内置了 40+ 命令的压缩策略,覆盖 git、docker、kubectl、npm/cargo test、tsc、eslint、grep、find 等日常高频操作。

四、OpenClaw Skill

OpenClaw 没有 shell hook,但可以通过 skill 机制让 agent 在 exec 调用时自动加 rtk 前缀。

Skill 结构:

skills/rtk-token-saver/
  SKILL.md

SKILL.md 核心内容:

  • 触发条件:exec 调用高输出命令(git、ls、docker、test 等)
  • 命令列表:40+ 个支持的 `rtk ` 映射
  • 反模式:`echo`、`pwd` 等零输出命令不加 rtk
  • 监控命令:`rtk gain` 查看节约统计

五、实测

同一台机器上对几个高频命令做了对比:

  • `ls -la /usr/local/bin`:65539 bytes → 35983 bytes,省 45%
  • `docker ps`:334 bytes → 130 bytes,省 61%
  • `ls` 工作目录:796 bytes → 253 bytes,省 68%

`rtk gain` 统计:

Total commands:    6
Input tokens:      17.5K
Output tokens:     9.5K
Tokens saved:      8.0K (45.6%)

一次普通操作就能省将近一半 token,对于频繁 exec 的 agent 工作流来说收益明显。

六、注意事项

  • rtk 对不认识的命令会透传,加 warn 但不会阻塞
  • 需要完整原始输出时不要用 rtk(比如要全文解析的场景)
  • `rtk proxy ` 可以跳过过滤,用于调试
  • 二进制位置 `~/.local/bin/rtk`,确认已在 PATH 中
  • 挂代理下载时注意 GitHub Releases 走的是 `objects.githubusercontent.com` 域名

简记。


scanz个人博客