2026-07-22
AI
0

目录

RTK 使用指南:如何把 Hermes 的 Token 消耗砍掉八成
起因:月初看了一眼账单
Token 到底花在哪了
RTK 是什么
实测效果
安装配置
安装
配置到 Hermes
重启生效
怎么验证它在工作
深度使用技巧
配合 codebase-memory-mcp 效果翻倍
不同场景的压缩策略
如果输出乱码了怎么办
RTK 和传统压缩方案的区别
关于 Token 费用的一点碎碎念
总结

RTK 使用指南:如何把 Hermes 的 Token 消耗砍掉八成

起因:月初看了一眼账单

上个月月初,我习惯性地查了一下 API 账单,一看数字差点没把早饭喷出来——光 Token 费用就干了大几百。

我寻思我也没干啥啊,不就是每天跟 Hermes 聊聊天、改改代码、跑跑测试吗?怎么 Token 就跑得跟流水一样?

后来仔细琢磨了一下,发现问题出在终端输出上。

Token 到底花在哪了

我跟 Hermes 的交互模式大概是这样的:

我让它改个代码 → 它执行 mvn compile 看编译结果 → 编译输出刷刷刷几百行 → 这几百行全算 Token → 它看完之后再回我一句话 → 这句话也算 Token。

一来一回,一个编译命令就能烧掉两三千 Token。一天下来几十次终端操作,Token 就这么悄无声息地流走了。

更坑的是,很多时候 AI 根本不需要看完整的编译输出来判断"编译是否成功"。它只需要知道"BUILD SUCCESS"还是"BUILD FAILED"就够了。但工具不管这些,原封不动把几百行输出全塞给 AI。

这就像你去饭店点菜,服务员把整个厨房的菜单、食材清单、厨师排班表全给你端上来了,就为了让你说一句"我要一份鱼香肉丝"。浪费,太浪费了。

RTK 是什么

RTK 全称 Rust Token Killer,是一个用 Rust 写的开源工具,GitHub 地址是 https://github.com/rtk-ai/rtk。

它的核心功能就一个:在终端输出到达 AI 之前,先把输出压缩一遍。

怎么压缩呢?不是简单粗暴地砍掉一半字符,而是智能识别输出类型,用最精简的方式呈现同样的信息。

比如 ls -la 的输出,原本是:

-rw-r--r-- 1 weizhenwang staff 776 Jul 22 03:01 AbnormalService.java -rw-r--r-- 1 weizhenwang staff 878 Jul 22 03:01 AdsInfoService.java

RTK 压缩后变成:

644 AbnormalService.java 776B 644 AdsInfoService.java 878B

owner、group、日期这些信息在绝大多数场景下 AI 根本用不着,砍掉完全不影响理解。文件权限(644)保留是因为有时候排查问题确实需要看权限。

类似地,git diff 的输出会被压缩成只有变更行摘要;编译日志会被去掉时间戳和重复的 warning;docker ps 的输出会被精简到只剩关键字段。

实测效果

我用了一个星期后统计了一下数据:

场景压缩前压缩后节省比例
ls -la 大目录~500 tokens~80 tokens84%
git status~300 tokens~50 tokens83%
mvn compile 完整输出~3500 tokens~400 tokens89%
docker ps -a~400 tokens~60 tokens85%
PostgreSQL 查询结果(20行)~2000 tokens~300 tokens85%
git diff~1500 tokens~200 tokens87%

日均 Token 消耗直接从50万降到了10万左右。换算成人民币,每个月省下来的钱够吃好几顿火锅了。

安装配置

RTK 的安装简单到离谱,就两条命令。

安装

Mac用户:

sh
brew install rtk

Linux用户可以去 GitHub Releases 下载对应的二进制。

配置到 Hermes

sh
rtk init --agent hermes

这条命令会在 ~/.hermes/plugins/rtk-rewrite/ 下创建一个插件,以后所有终端命令都会先经过 RTK 再返回给 AI。

重启生效

sh
/reset

怎么验证它在工作

重启后随便执行一个长输出的命令,看输出格式就知道了。

正常 ps aux 的输出长这样:

USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND weizhenwang 44053 34.9 2.7 1890953888 457824 ?? S 3:03AM 0:37.98 /Users/weizhenwang/...

RTK 压缩后的输出长这样:

weizhenwang 44053 34.9 2.7 ?? S 3:03AM /Users/weizhenwang/...

看到区别了吗?VSZ、RSS、TIME 这些不太常用的列被去掉了,但 PID、CPU、MEM、COMMAND 这些关键信息都保留了。

如果哪天你觉得某个命令的输出被压缩得太厉害,可以在命令前面加环境变量跳过 RTK:

sh
RTK_OFF=1 你的命令

深度使用技巧

配合 codebase-memory-mcp 效果翻倍

RTK 压缩的是终端输出,codebase-memory-mcp 压缩的是代码查询。两个一起用,Token 消耗能降到原来的十分之一以下。

不同场景的压缩策略

RTK 对不同类型的输出有不同的压缩策略:

  • 文件列表类:保留权限、大小、文件名,去掉时间、owner
  • Git 类:保留变更摘要,去掉上下文
  • 编译类:保留错误和警告摘要,去掉成功行
  • 日志类:保留关键信息,去掉时间戳和重复行
  • 进程列表类:保留 PID、CPU、内存、命令,去掉次要列

如果输出乱码了怎么办

极少数情况下 RTK 的压缩可能会导致输出格式异常。这时候可以:

  1. RTK_OFF=1 临时跳过
  2. 去 GitHub 给 RTK 提 issue,作者回复挺快的

RTK 和传统压缩方案的区别

之前也有人用脚本压缩终端输出,但基本都是简单的行数截断或者关键词过滤。RTK 不一样:

  1. 智能识别输出类型 — 它能识别出这是 lsgitdocker 还是 ps 的输出,针对不同类型用不同的压缩策略
  2. 保持信息完整性 — 该留的信息一个不少,不该留的果断砍掉
  3. 零配置零维护 — 装上就能用,不用写规则不用调参数
  4. Rust 写的 — 速度快,内存占用低,不用担心影响 Hermes 性能

关于 Token 费用的一点碎碎念

现在 AI 模型的 API 价格虽然一直在降,但对于重度用户来说,Token 费用依然是一笔不容忽视的开支。

我之前看到一个群友的做法很有意思——他把每个月 Token 省下来的钱单独记一笔账,年底一看,省出来的钱够买一台新 MacBook 了。

我虽然没有他那么夸张,但 RTK 省下来的钱确实让我每个月少了一笔"看起来不多但加起来挺吓人"的开支。

总结

  • RTK 是给 Hermes 省 Token 的神器
  • 安装只要两行命令,零配置
  • 实测能省 60-90% 的终端输出 Token
  • 配合其他优化手段效果更佳
  • Rust 写的,稳定高效

搞 AI 写代码的兄弟,这玩意儿建议人手一个。省下来的都是真金白银。

本文作者:JACK WEI

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!