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` 域名
简记。







