Claude Code终端日志Token占用实测:一个过滤器砍掉60%-90%

用 Claude Code 这类 AI 编程助手,有个问题容易被低估------终端输出太吃 Token 了

你让它查个编译错误,它先跑 git status,再跑 ./gradlew build,单元测试再转一圈。构建工具的输出动辄几百行,进度条、警告、调试信息、重复堆栈,全被原样塞进上下文。Token 跑得快不说,模型还容易被无关信息干扰,关键报错反而淹没在日志海里。

最近试了个开源小工具 RTK(Rust Token Killer) ,专门解决这个场景。跑了快一周,说说实测情况。


核心机制:终端输出过滤,而非压缩

RTK 的定位很窄:只处理 AI 执行终端命令时的 stdout/stderr

github上的 star数 74.2K

它在 shell 层挂一个钩子,拦截命令输出后做一轮过滤,把冗余内容砍掉再把精简结果交给 Claude Code。过滤策略是规则驱动的,不是用模型做摘要------所以没有额外 Token 开销,延迟也可以忽略不计。

具体砍掉的内容包括:

  • 进度条([====>...] 这类动态刷新行)
  • 连续空行和重复分隔线
  • 构建工具的无信息量日志(比如 Maven 的下载进度、Gradle 的 task 列表)
  • 成功路径上的冗余堆栈帧

保留的是:报错信息、测试失败用例、关键 diff、exit code 非 0 的完整上下文。

换句话说,RTK 不改变信息语义,只去掉视觉噪音


实测数据:Token 省 60%~90%

我拿手头一个中型 Spring Boot 项目做了几组对比,场景是:

让 Claude Code 排查一个单元测试失败,执行 ./gradlew test --tests *FooTest

指标 不开 RTK 开 RTK
终端输出行数 847 行 112 行
终端输出 Token 数(估算) ~3800 ~520
单次请求总 Token ~5900 ~2600
终端输出占比 64% 20%

这个场景下,终端相关 Token 减少了 86% ,总 Token 消耗降了 56%

其他场景也有不错表现:

  • git diff 查看改动 → 省约 70%
  • grep -r 搜索代码 → 省约 65%(主要砍掉权限警告和二进制文件提示)
  • ./gradlew build 全量构建 → 省 80% 以上(构建日志的冗余度最高)

不过要说明:省多少完全取决于你的命令输出有多"脏" 。如果本身输出就很精炼(比如 git status --short),RTK 的收益有限。反之,构建和测试命令是重灾区,收益最明显。


安装和使用

RTK 是 Rust 写的单二进制,Windows 下解压到任意目录,加进 PATH 就行。

绑定 Claude Code 只一条命令:

bash

csharp 复制代码
rtk init --global --hook-only

这会在 shell 配置文件里挂一个钩子,之后 Claude Code 调用的所有命令输出都会被自动过滤。重启 IDE 即生效,不需要改 Claude Code 的任何配置。

卸载同样干净:

bash

csharp 复制代码
rtk init --uninstall

日常用得上的命令:

bash

bash 复制代码
# 看省了多少 Token(统计过滤前后的字符数对比)
rtk gain

# 关掉数据上报(默认会发匿名统计数据)
rtk telemetry disable

# 临时关闭过滤,只跑这一次
RTK_DISABLED=1 ./gradlew test

优点

轻量:Rust 单二进制,启动和过滤都是毫秒级,对终端响应速度没有可感知的影响。

侵入性极低:不改 IDE 配置,不改 AI 使用方式,绑上就生效,拆了就恢复。

过滤策略克制:我测了大概四五十个命令,没有出现误删关键报错的情况。开发者刻意只做"保守过滤",拿不准的内容会放行而不是截断。

省 Token 效果直接:对于构建、测试、git 这类输出密集的操作,收益非常稳定。


局限性(必须说清楚)

只管终端输出,不管文件读取

Claude Code 的 read_fileglob 搜索、项目目录扫描等操作不走终端,RTK 碰不到。这部分日志消耗得靠 .claudeignore 自己控制。

深度调试时可能需要关掉

极少数情况------比如排查 Gradle 插件本身的 Bug,或者分析构建性能------精简后的输出可能丢失时序细节。这时候 RTK_DISABLED=1 临时绕过即可,不算大问题。

不是通用的 Token 节约方案

RTK 只解决"终端输出"这一个点。如果你主要的 Token 消耗在代码上下文、对话历史、文件读取上,它帮不了你。但它解决的问题恰恰是很多用户容易忽视的一块。


适合什么场景

如果你符合以下几条,RTK 值得一试:

  • 重度使用 Claude Code、Cursor 或类似 AI IDE
  • 经常让 AI 跑构建、测试、Git 操作
  • 注意到终端日志经常出现在对话上下文中,占用比例不低
  • 不想改变现有工作流,希望"装上就见效"

反之,如果平时只让 AI 做代码补全和文件读写,很少执行终端命令,这工具对你意义不大。


总结

RTK 是一个定位极其明确的小工具:只干一件事,把终端输出的水分挤掉

它没有野心去解决所有 Token 浪费问题,也不试图用 AI 做日志摘要(那反而增加开销)。就是一套规则过滤,简单直接。

实测下来效果扎实,接入成本几乎为零,也没有引入新的问题。对于被 Claude Code 终端日志吃掉大量 Token 的用户,装上就能看到账单变化------或者说,额度更耐用了。

项目地址:github.com/rust-token-...

相关推荐
weixin_4316004430 分钟前
NestJS 入门(3):Guard 如何挡住未登录请求?
前端·后端·学习·nest.js
kyriewen1 小时前
我用Claude Code两天干完了团队两周的排期——周报发出去那一刻我就后悔了
前端·javascript·ai编程
IT_陈寒1 小时前
JavaScript类型转换把我坑惨了,这破玩意真该早点搞明白
前端·人工智能·后端
用户938515635071 小时前
Type vs Interface:读完这篇就没有面试官能难倒你了
前端·面试·typescript
用户938515635072 小时前
手写一个 LLM Harness 框架:用工程化手段把大模型幻觉踩在脚下
javascript·人工智能·后端
油丶酸萝卜别吃2 小时前
jquery-ajax.js 说明文档
前端·javascript·jquery
windliang2 小时前
Claude Code 源码分析(九):子 Agent 如何分叉、继续与回到父会话
前端·javascript·面试
wei_shuo2 小时前
KES 云原生部署与弹性扩展:容器化、Kubernetes编排与自动伸缩
后端
一木之林3 小时前
Python.五.(一)--1. 并发编程、异步IO与多进程
后端
feng尘3 小时前
# 彻底搞懂 ReentrantLock 与 tryLock:从秒杀实战到 AQS 独占模式源码剖析
后端