Hacker News 中文摘要

RSS订阅

RTK 称可节省 token,但我们的成本基准测试并不认同 -- RTK reports token savings, but our cost benchmarks disagree

RTK(Rust Token Killer)在AI代理读取前过滤并压缩终端输出,如今拥有超过79k GitHub星标,是最流行的降低AI编程成本工具之一。一个X帖子称其能削减Claude Code(Claude Code)令牌最多60%,获得313K浏览。然而JetBrains(JetBrains)的SkillsBench测试发现并无节省,其README免责声明称可削减代理读取的bash输出最多90%。

正文

RTK(Rust Token Killer)会在 AI agent 读取之前过滤并压缩终端输出。它如今在 GitHub 上有超过 7.9 万 star,是最流行的 AI 编程降本工具之一。一条 X 帖子称 RTK 最多能把 Claude Code 的 token 削减 60%,浏览量达 31.3 万。

FuturMinds 的视频标题为《Claude Code 加 RTK:节省 90% Token》,31,000 次观看

Soba Labs 的文章《我们如何用 RTK AI 把 Claude Code 的 token 用量减半》

ComputeLeap 的指南《用 rtk 把 Claude Code 的 token 成本削减 60–90%》

Image 2: Soba Labs article titled How we halved Claude Code token usage with RTK AI

但 JetBrains 的 SkillsBench 测试没有发现任何节省。README 里也有一条免责声明:

Image 3: ComputeLeap guide titled Cut Claude Code Token Costs 60–90% With rtk

RTK 最多能砍掉你的 agent 读取的 90% bash 输出。……这不等同于把你的账单砍掉 90%。

所以“更少的终端输出”不等于“更便宜的 AI 编程”。它可能有用,可能是无用功,也可能帮倒忙(更多轮次或更差质量)。我们花了好几天、烧掉超过 1500 美元的 token,得到下面这些结果。

RTK 怎么工作

RTK 能改写 agent 通过 shell 工具(Claude Code 里的 Bash、OpenCode 里的 bash)执行的 Git、测试、包管理和文件命令,每次改写都返回同一输出的更精简版本。

例如,RTK 保留文件名、大小和权限(644 就是 rw-r—r—),但丢掉所有者和日期:

$ ls -la /app/warriors -rw-r--r-- 1 root root 824 Sep 13 2025 g2-clear.red -rw-r--r-- 1 root root 487 Sep 13 2025 paper.red

$ rtk ls -la warriors/ 644 g2-clear.red 824B 644 paper.red 487B

在 Terminal-Bench 2.1 上测试 RTK

RTK 压缩的是终端输出,所以我们选了终端交互密集的 Terminal-Bench 2.1 来测。之所以停在 2.1 而不用更新的 3.0 和 4.0:agent 能通过 2.1 的大部分任务,而 3.0 和 4.0 仍是难题,成本只有在通过的任务上才有意义。

我们用 Claude Code 配 Fable 5.0,用 OpenCode 配经 OpenRouter 调用的 DeepSeek V4 Pro 0813。每个任务在同一模型路线、平台和任务超时下,无 RTK 跑 5 次、有 RTK 跑 5 次。

剔除 4 个出现拒绝回答的 Fable 安全任务后,最终比较覆盖 85 个 Fable 任务和 89 个 DeepSeek 任务,共 1740 次尝试。

第一张图看起来有戏

用 RTK 后,Fable 成本降了 5%,DeepSeek 反而涨了 5%。

Claude Code · Fable 5.0:基线 731 美元(通过率 84%),RTK 698 美元(通过率 83%)。 OpenCode · DeepSeek V4 Pro 0813:基线 51 美元(通过率 71%),RTK 54 美元(通过率 69%)。

通过率都略降:Fable 降 1%,DeepSeek 降 2%,差距都很小。

把所有支出(含失败尝试)除以通过数,Fable 用 RTK 便宜 3%,DeepSeek 贵 7%。

换一种算法,给每个任务同等权重,避免一个贵任务压过许多便宜任务:比较每个任务基线与 RTK 尝试的均值,再把这些变化平均。按这个任务级指标,Fable 贵了 1%,与零没有明显差异;DeepSeek 的任务成本平均上升 17%。把失败算进去也不改变趋势:在 10 次尝试全部通过的 36 个 DeepSeek 任务里,涨幅仍有 18%。

一个任务决定了整个基准的结果

Fable 用 RTK 省下的钱几乎全来自一个任务:winning-avg-corewars。两种设置每次尝试都通过,但带 RTK 时轮数大约减半。其余任务的节省不到 1%。

DeepSeek 在同一个任务上结果相反:两边每次都通过,但 RTK 用了更多轮、花得更多。即便去掉这个任务,RTK 的成本依然更高。

rtk gain 不能当成本指标

RTK 官方把 rtk gain 定义为“原始命令输出字节数减去过滤后字节数,再除以 4”,不是计费 token 数。

在 445 次 DeepSeek 的 RTK 尝试中,RTK 报告节省了 3.492 亿 token,降幅 89%。

但报告里的大幅 token 节省并不意味着任务更便宜。

在 train-fasttext 中,模型两次请求 head -1 train.txt。RTK 把这种受限读取与整个文件相比,每次记下 1.205 亿 token 的节省。这两次调用占了该比较节省计数器的 69%,可实际请求的命令根本不会返回整个文件。

把 rtk gain 当作省下的钱,前提是这次尝试的其余部分保持不变。而 RTK 会改变 agent 接下来的轮次,rtk gain 并不计算这些轮次的成本。

社交帖子错就错在这里:rtk gain 数的是被删掉的输出,不是省下的钱,它能让一次更贵的尝试看起来像被优化过。

RTK 的 bug 也会咬人

DeepSeek 的一次 git-multibranch 尝试陷入了循环。agent 运行的 find 带了一个 rtk find 0.45.0 不支持的标志,插件把它改写成 rtk find,后者报错“请直接使用 find”。每次重试都被再次改写。RTK 在我们的测试之后于 0.46.0 修复了这个问题。

agent 累计了 339 次连续错误,直到超时,耗时约 12 分钟。任务最终仍然通过,但成本约为同样通过任务的基线尝试的 9 倍。这是一个离群样本,去掉它趋势依旧。

没有 RTK 时,工具输出约占 Fable 输入 token 的 11%、DeepSeek 的 40%。

在用 RTK 的尝试中,31% 的 Claude Code 终端调用和 51% 的 OpenCode 终端调用走了 RTK。

RTK 只改写 shell 命令:它的 Claude Code hook 匹配 Bash 工具,OpenCode 插件只作用于 bash 调用。两个平台都把文件读取和搜索暴露为独立的 Read、Grep、Glob 工具,这些都会绕过 RTK。Claude Code 约一半的 Bash 调用本来就自己用 head、tail 或 wc 限制了输出。

在 agentic 编程中,上下文在每一轮之后被缓存,所以后续读取终端输出大多表现为缓存读取。Fable 的缓存读取成本是普通输入 token 的 1/10,DeepSeek 是 1/30。

在 DeepSeek 上,RTK 把终端输出字符减少了 9%,prompt token 却上升了 9%。未缓存输入降了 1%,缓存输入升了 9%。模型输出(含推理)在有 RTK 时占成本 56%,没有时占 57%。

agent 轮数变多时,任务成本通常随之上升。

DeepSeek 的 RTK 尝试在 58 个任务上轮数更多,其中 44 个更贵;在 28 个任务上轮数更少,其中 23 个更便宜。

DeepSeek 平均每一轮的输入少了 7%,但总轮数多了 18%。更小的轮次并没有加总成更少的总输入。

多一轮 agent 的成本可能超过压缩省下的钱。这是同一类 tokenflation 问题的另一种形式。JetBrains 在 SkillsBench 上看到同样的模式:RTK 在低 effort 下增加了轮数,在高 effort 下也没有降低成本。

RTK 并不会让 AI 编程更便宜

在 Terminal-Bench 2.1 上,Fable 的节省依赖一个任务,无法跨任务成立。我们不推荐把 RTK 当作通用的省钱工具。

单条轨迹显示,当前的前沿模型已经在高效使用终端(Fable 的上下文中只有约 7% 是终端输出),模型自己就会用 head -n、tail -n 之类的技巧。RTK 对更老的模型可能帮助更大,如今它只是一种小众优化,不是普遍节省的来源。

测试环境为 RTK 0.45.0、Claude Code 2.1.220、OpenCode 1.18.25 和 Harbor 0.20。轨迹可应索取用于后续研究。

评论

社区普遍质疑 RTK 等命令行 token 压缩工具及各类“魔法技能包”是无效甚至有害的蛇油,少数人分享了基于语义索引、子模型总结等真正有效的工程化降本方案。

认为 RTK 等 token 节省工具是无效且有害的蛇油

  • 多数评论指出这类工具(RTK、Caveman、Headroom 及各种技能包)缺乏独立基准,实测节省微乎其微甚至反向增加开销(如 Claude 仅省 5% 且靠单一任务,DeepSeek 更贵)。它们篡改模型训练时熟悉的 shell 输出格式,导致模型误判工具损坏而发出更多调用,或得出错误结果拖垮整体表现(较多人) > 这些所谓的技巧全是蛇油,我想我们内心深处都知道。(@aeneas_ory)
  • 另有评论补充 RTK 收益统计具欺骗性,例如配合 tail 使用时虚报巨量节省,且可能破坏沙箱隔离并引发随机拦截;直接移除 ls 等命令的预期字段会让模型困惑失败(较多人)

认为简单提示和模型自身能力已足够,无需额外包装

  • 大语言模型本身懂得利用 grep、tail 等 shell 原语精简输出,随着模型进化会更擅长防御性适配;直接在 agent 规则里限制输出长度(如 head -c 4000)或开启构建工具静默模式,比引入 RTK 更高效且不易混淆(较多人) > 模型本身就知道如何通过 shell 原语来巧妙节省 token,随着模型变聪明会更擅长预期大输出并防御性调整。(@semiquaver)

认为真正有效的 token 优化需要扎实工程而非噱头

  • 部分开发者通过本地代码嵌入模型做语义检索、使用语言专用 MCP(如 Roslyn)、或派发廉价子模型总结输出,在基准中取得可信降本;共识是减少 token 可行但远难于基础脚本,必须有可靠基准背书(少数人) > 有可能减少 token 使用,但这比那些基础方法要难得多。(@psadri)

有价值的补充

  • RTK 的收益机制被过度简化,在标准编码 agent 上下文里 1 token 并不等于 4 字节,其节省计算本身有误导性(@santiago-pl)
  • RTK 并非毫无用处,用于压缩重复测试运行输出时有一定价值,但只应作用于白名单命令,而非按官方建议全量包装所有命令(@oefrha)
  • 不要试图“克扣”智能体,正如经理不该克扣员工,过度限制输出反而让编排器耗时更长(@fwlr)