Bash 输出才是烧 Token 的元凶?给 Claude Code / Codex / OpenCode 装上 RTK 过滤器

Bash 输出才是烧 Token 的元凶?给 Claude Code / Codex / OpenCode 装上 RTK 过滤器

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 账单直接打八折。

封面:RTK 命令输出过滤器

一、它到底解决什么:砍输出,不是换网关

本地知识库里已经有几类「省 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 改写并过滤 → 真实命令执行 → 紧凑输出回流上下文(见下图)。

插图:Hook 流水线

对每类命令,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 只动最底下那一层:

插图:账单构成与 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)显示「账单未必下降」→ 用自己的用量面板交叉验证

Bash 输出才是烧 Token 的元凶?给 Claude Code / Codex / OpenCode 装上 RTK 过滤器

六、小结

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

💻 配套实训环境与动手练习

本文涉及的相关技术指令、开发环境与工具链已内置在边学边练在线实验室中,无需繁琐安装配置,随时在浏览器中实践体验:

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

最新文章

热门文章

本栏目文章