夜雨聆风学习资料网

ARTICLE · 1234332

给 AI 编程助手"减负":RTK 怎么把 bash 输出省掉一半

给 AI 编程助手"减负":RTK 怎么把 bash 输出省掉一半

AI 编程 Agent 每次请求的输入 token 里,bash 输出占大头。RTK(Rust Token Killer)在源头截流:命令输出到达 LLM 前先过滤压缩,实测本机接入后 766 次命令省下 48.7% 输入 token。这篇讲它是什么、怎么装、怎么接 pi/Claude Code、以及诚实的节省边界。

上一篇文章讲了 Agent 每次请求大模型时在拼一份 prompt——其中一类输入 token 来源是 bash 输出(你让它跑 git status、ls、pytest,结果几百到几千 token 原样进了上下文)。这篇文章讲一个专门在源头截流的工具:RTK(Rust Token Killer)。

先给真实数字:它接入我的 AI 助手(pi)后,累计处理 766 次命令,输入 token 从 279K 降到 143K,省了 48.7%。

RTK 是什么

一个高性能 CLI 代理:在命令输出到达 LLM 上下文之前,把它过滤和压缩。单个 Rust 二进制、零依赖、每次开销 <10ms。

它干的活,本质是四种策略的组合:

  • 智能过滤:去掉注释、空白、样板代码
  • 分组:相似项聚合(文件按目录、错误按类型)
  • 截断:保留关键上下文,删除冗余
  • 去重:重复的日志行合并成一行 + 计数

效果看这张对比就懂:

没有 rtk:  Agent --git status--> shell --> git → ~2000 tokens 原样进上下文有 rtk:    Agent --git status--> RTK --> git → ~200 tokens(过滤后)

ls 变成带文件计数的树形格式,cat 只留签名和结构,git push 变成一行 ok main,pytest 只显示失败的用例。

怎么装、怎么接

macOS 直接:

brew install rtk

接 Agent 只一步——给对应的 AI 工具装 hook:

rtk init --global                  # 默认 Claude Codertk init --global --agent pi       # Pirtk init --global --agent hermes   # Hermesrtk init --global --agent codex    # Codex

RTK 支持 20 个 agent(Claude Code / Codex / Cursor / Trae / Gemini CLI / OpenCode / Kimi / pi…)。能力覆盖按 agent 的 hook API 而异:pi 和 Hermes 是满配——命令改写、拦截、压缩工具输出、加上下文、会话启动全支持(只有"代理路由"不支持)。装完重启 agent 生效。

以 pi 为例,rtk init 做的事是往 ~/.pi/agent/extensions/ 写一个 rtk.ts 扩展——和你可能已经装过的图片生成扩展是同一个机制:Agent 每次要执行 shell 命令前,先经过它改写/过滤。

日常怎么用

装好后你基本什么都不用改——git status、ls、cargo test 这些命令照常打,RTK 自动在中间改写。想主动看效果:

rtk gain              # 节省统计:命令数、token 节省、耗时rtk gain --graph      # 30 天 ASCII 趋势图rtk discover          # 找出还没被覆盖的节省机会

也可以直接手动调用优化版命令:rtk ls、rtk git status、rtk pytest、rtk tsc、rtk docker ps……

诚实的边界

RTK 报的 -90% 是 bash 输出的削减比例,不等于账单 -90%:bash 输出只是输入 token 的来源之一(还有你的提示词、系统提示、对话历史),而输入 token 也只是账单的一部分(还有输出 token)。它的 token 数是按 字节数/4 估算的——百分比可靠,绝对值是近似值。

另外它只对走 shell 的工具生效:MCP 工具、内置工具的某些路径不经过它的 hook,那部分输出它管不着。接入初期 rtk gain 里可能看到少量"oversized"输出被 Agent 自己的长度上限截断(我们这边 766 条里排除了 25 条)。

收尾

省 token 的最高境界不是事后压缩上下文,而是那些噪音压根不进上下文——在源头截流,让模型把注意力花在你真正关心的输出上。别让模型把钱花在 git status 上。

(机制参考 RTK 仓库 README 与 docs/agent-coverage、savings-explained;实测数据来自本机 pi 接入后的 rtk gain 统计。)

相关学习资料