Bash 输出才是烧 Token 的元凶?给 Claude Code / Codex / OpenCode 装上 RTK 过滤器
说明:微信源页触发「环境异常 / 验证码」,无法直读原文。本文按题意(Claude Code / Codex / OpenCode 场景下把 Token 砍掉大约八成),并基于开源仓库
rtk-ai/rtk官方 README、中文说明与 rtk-ai.app 文档做工程向改写;版本口径以撰写时为准(本机实测rtk 0.49.0)。这不是 Sub2API 一类的订阅分发网关——本地已有claude-sub2api;也不是 Headroom 那种「上下文压缩代理」——RTK 专砍 Bash/工具命令输出 这一层噪音。
写 Agent 写多了你会发现:账单里最贵的往往不是你那句「帮我改这个 bug」,而是 Agent 随手跑的 git status、pytest、ls -R 吐回来的几千行原文。模型还没开始推理,输入侧已经被控制台灌满了。
RTK(Rust Token Killer)的定位很窄也很硬:单个 Rust 二进制,在命令输出进入 LLM 上下文之前做过滤与压缩;官方自称常见开发命令上可砍掉约 60%~90% 的 bash 输出,整段 demo 会话合计大约 -80%——注意这是 输出体积,不是整张 API 账单直接打八折。

一、它到底解决什么:砍输出,不是换网关
本地知识库里已经有几类「省 Token」方案,先把坐标钉死,避免踩坑:
| 方案 | 典型产品 | 砍的是什么 | 不是什么 |
|---|---|---|---|
| 订阅/账号池分发 | Sub2API、CliRelay 等 | 计费入口与配额 | 不压缩命令 stdout |
| 上下文压缩代理 | Headroom | 发给模型的长上下文 | 不专门做 Bash filter |
| 命令输出过滤器 | RTK | Shell 工具回传的噪音 | 不替代 API Key / 中转 |
RTK 拦截的是「Agent → Shell」这一跳:你以为发了 git status,Hook 会改写成 rtk git status,模型实际读到的是压缩后的短文本。开销官方宣称通常 <10ms,单二进制、零运行时依赖(Apache-2.0)。
诚实边界(官方原文精神):RTK 削减的是 bash 输出;提示词、系统指令、对话历史、模型自己的长回复都不在它的尺子里。
rtk gain用字节数 / 4估 Token,百分比可信,绝对数值是近似值。JetBrains 等第三方在真实 Agent 任务上复测过:宣传的「账单 -80%」未必复现——工程上应把他当成「少喂噪音」的工具,而不是「无限额度开关」。
二、工作原理:四种压缩策略 + PreToolUse Hook
粗粒度数据流可以画成:
Agent 发 Bash → RTK 改写并过滤 → 真实命令执行 → 紧凑输出回流上下文(见下图)。

对每类命令,RTK 叠用四类策略:
1. 智能过滤:去掉注释、空白与样板噪音
2. 分组:按目录聚合文件、按规则聚合 lint 错误
3. 截断:保留关键上下文,丢掉冗余 diff/日志
4. 去重:重复日志行折叠成计数
官方 README 给出的「常见命令 → 压缩动作」对照(节选):
| 操作 | RTK 对输出做什么 |
|---|---|
ls / tree |
树形 + 计数,而不是一行一个文件 |
cat / read |
偏签名与结构,而不是整文件灌入 |
grep / rg |
截断长行,按文件分组 |
git status / diff / log |
紧凑 stat、缩 diff、一行提交 |
pytest / go test / cargo test / npm test |
失败优先,通过用例折叠为计数 |
docker ps |
只留关键字段 |
对 Claude Code,默认走 PreToolUse Bash Hook:透明改写,Agent 不必主动记得敲 rtk。对 Codex 走 AGENTS.md + RTK.md 指令;对 OpenCode 走插件(tool.execute.before)。官网还列了 Cursor、Gemini CLI、Copilot、Windsurf、Hermes 等十余种宿主。
关键坑:Claude Code 内置的
Read/Grep/Glob不经过 Bash Hook,不会被自动改写。想吃到压缩,请改走 shell(cat/rg/find)或显式调用rtk read/rtk grep/rtk find。
三、安装与三端接入:Claude Code / Codex / OpenCode
安装
# Homebrew
brew install rtk
# 或 Linux/macOS 一键脚本(装到 ~/.local/bin)
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
# 校验
rtk --version # 本机实测:rtk 0.49.0
rtk gain # 尚无数据时会提示先跑命令
同名陷阱:crates.io 上另有一个叫
rtk的「Rust Type Kit」。若rtk gain行为不对,请用cargo install --git https://github.com/rtk-ai/rtk,别装错包。
接到三个主流 Coding Agent
rtk init -g # Claude Code / Copilot(默认 PreToolUse)
rtk init -g --codex # OpenAI Codex
rtk init -g --opencode # OpenCode 插件
# 可选
rtk init -g --agent cursor
rtk init -g --gemini
rtk init --show # 核对已装什么
装完后 重启对应 Agent,再跑一次 git status:若 hook 生效,实际执行的是 rtk git status,模型侧看到的已是压缩稿。
常用手动命令(Agent 不会自动拦截时):
rtk ls .
rtk read src/main.rs -l aggressive # 只要签名
rtk git status
rtk git diff
rtk pytest
rtk go test
rtk gain # 累计节省看板
rtk gain --history # 最近命令
rtk gain --quota -t pro # 相对订阅额度的粗估(仍是近似)
四、本机最小实测:ls 体积立刻掉一截
在临时目录塞 30 个杂文件后对比(CST 2026-09-22):
| 命令 | 原始 stdout 约 | RTK 输出约 | 观察 |
|---|---|---|---|
ls -la vs rtk ls . |
~1700 B | ~400 B | 目录列举压缩明显(本例约 -76% 字节) |
git status vs rtk git status |
~470 B | ~370 B | 仓库很干净时收益有限 |
rtk gain |
— | 累计约 59%(两命令样本) | 样本小,只作机制验证 |
rtk gain 看板会按命令汇总 Saved / Avg% / Impact。官方营销页有「数千次会话平均去掉约 89% 噪音」的说法;你自己的数字以本机 rtk gain 为准,不要直接拿营销百分比去乘月账单。
账单构成可以直觉理解成三层——RTK 只动最底下那一层:

五、和 Headroom / Sub2API 怎么组合,以及不该期待什么
- 只装 RTK:重度 Bash 探索(测、搜、git)时,输入侧噪音下降最明显。
- RTK + Headroom:一个砍工具输出,一个砍长上下文——正交,可叠加,但要各自看监控,别双重「自我安慰」。
- RTK + Sub2API:网关解决「用谁的订阅额度」,RTK 解决「每次请求塞多少垃圾」——仍然正交。
- 不要期待:内置
Read大文件、超长对话历史、模型啰嗦输出,会 magically 一起变便宜;也不要把rtk gain的 -80% 当成 Cloudflare 账单截图。
排坑清单:
1. Hook 装了但 Agent 没重启 → 仍读原文
2. 错装 crates.io 的另一个 rtk → gain 语义全错
3. 只用内置 Read/Grep → Hook 旁路,等于没装
4. Windows:不要双击 rtk.exe,放进 PATH 后在终端跑;完整 Hook 在原生 Windows / WSL 均可
5. 第三方基准(如 JetBrains SkillsBench)显示「账单未必下降」→ 用自己的用量面板交叉验证

六、小结
RTK(rtk-ai/rtk)是给 Coding Agent 用的 Bash 输出过滤器:Rust 单文件、Hook/插件接入 Claude Code、Codex、OpenCode 等,把 git/test/ls/grep 一类回传压成短文本。题面上的「省 80%」对应的是 命令输出体积 的 demo 合计,不是 Sub2API,也不是整张 Token 发票的保证函。
落地顺序建议:装二进制 → rtk init -g(再按需 --codex / --opencode)→ 重启 Agent → 跑一周 rtk gain,再决定要不要叠 Headroom 或换订阅网关。
仓库:https://github.com/rtk-ai/rtk
文档:https://www.rtk-ai.app
💻 配套实训环境与动手练习
本文涉及的相关技术指令、开发环境与工具链已内置在边学边练在线实验室中,无需繁琐安装配置,随时在浏览器中实践体验: