Codex Token 消耗太快?使用 RTK 压缩终端输出,减少无效 Token

最近在使用 Codex、Claude Code 这类 AI 编程工具时,发现一个比较明显的问题:

AI 在执行 Git、Docker、测试、日志查询等命令时,经常会产生大量终端输出,而这些输出最终也会进入模型上下文,占用大量 Token。

例如:

git status
git diff
pytest
docker logs xxx
kubectl get pods

这些命令产生的内容里,很多其实都是重复信息或者对 AI 没有太大价值的信息。

RTK(Rust Token Killer)就是专门解决这个问题的。


一、RTK 是什么?

RTK 全称:

Rust Token Killer

它是一个使用 Rust 开发的命令行工具,可以理解为:

在 AI 编程工具和 Shell 命令之间增加一个“过滤器”,把大量无意义的终端输出压缩以后,再交给大模型。

正常情况下:

Codex
  ↓
执行 git status
  ↓
Shell
  ↓
返回完整输出
  ↓
Codex

使用 RTK 后:

Codex
  ↓
执行命令
  ↓
RTK
  ↓
执行真正的 Shell 命令
  ↓
过滤、合并、去重
  ↓
将精简后的内容返回 Codex

所以 RTK 并不是去压缩我们的 Prompt,也不是去修改大模型,而是:

压缩 AI 执行命令后产生的终端输出。

RTK 官方采用的主要处理方式包括:

  • 智能过滤无效信息

  • 将相似内容进行分组

  • 截断过长内容

  • 合并重复日志

官方说明,在一些高输出 Shell 命令中,可以减少最高约 90% 的 Bash 输出。

需要注意,这里的 90% 指的是:

终端输出减少

并不代表:

API 费用直接降低 90%

因为一次 Codex 对话消耗的 Token 还包括 System Prompt、用户 Prompt、代码上下文、历史对话以及模型回复等内容。


二、举个简单例子

例如运行测试:

pytest

假设有 1000 个测试用例:

test_001 PASSED
test_002 PASSED
test_003 PASSED
test_004 PASSED
......
test_999 PASSED
test_1000 FAILED

如果这些内容全部交给 Codex,大量 Token 都浪费在了:

PASSED
PASSED
PASSED
PASSED

这些重复信息上。

使用 RTK:

rtk pytest

RTK 会尽可能把成功测试进行折叠,把真正有价值的失败信息保留下来。

最终 AI 更关心的是:

999 passed
1 failed

失败用例:
test_1000

错误原因:
AssertionError ...

这样既能让 AI 知道测试结果,又不需要读取几百甚至几千行重复内容。


三、RTK 适合哪些场景?

RTK 比较适合 AI Coding 场景,尤其是经常使用:

Codex
Claude Code
Cursor
Gemini CLI
GitHub Copilot

等工具进行自动开发时。

比较典型的高 Token 消耗命令包括:

git status
git diff
git log

grep
rg
find

npm test
pytest
cargo test
go test

docker ps
docker logs

kubectl get pods
kubectl logs

这些命令有一个共同特点:

输出内容可能非常多,但 AI 真正需要的信息其实并没有那么多。


四、Mac 安装 RTK

我这里使用的是 macOS。

1. Homebrew 安装

推荐直接使用 Homebrew:

brew install rtk

安装完成后检查版本:

rtk --version

然后执行:

rtk gain

如果能够正常显示 Token Savings 统计信息,说明安装成功。


五、另外一种安装方式

如果不想使用 Homebrew,也可以执行官方安装脚本:

curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh

默认会安装到:

~/.local/bin

如果安装以后执行:

rtk --version

提示:

command not found

可以把目录加入 PATH。

Mac 默认一般使用 zsh:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc

然后执行:

source ~/.zshrc

再次检查:

rtk --version

六、注意 RTK 重名问题

这里有一个需要特别注意的问题。

目前存在另外一个同样叫 rtk 的项目:

Rust Type Kit

它和本文介绍的:

Rust Token Killer

不是一个东西。

安装完成后最好执行:

rtk gain

如果能够显示 Token 节省统计信息,基本可以确认安装的是正确的 Rust Token Killer。

也可以查看安装位置:

which rtk

七、Mac 上给 Codex 配置 RTK

如果平时主要使用 OpenAI Codex,可以直接执行:

rtk init -g --codex

然后检查配置:

rtk init --show

完成后重新启动 Codex。

需要说明一下,RTK 对不同 AI 编程工具的集成方式并不完全相同。

例如 Claude Code 可以通过 PreToolUse Hook 自动拦截 Shell 命令。

而当前 Codex 的 RTK 集成主要通过:

AGENTS.md
+
RTK.md

告诉 Codex在适合的场景优先使用 RTK。

因此 Codex 配置命令是:

rtk init -g --codex

而不是普通 Claude Code 使用的:

rtk init -g

八、Mac + Codex 完整安装流程

如果只想快速使用,可以直接按照下面几步操作。

第一步:安装

brew install rtk

第二步:检查版本

rtk --version

第三步:确认安装的是 Rust Token Killer

rtk gain

第四步:配置 Codex

rtk init -g --codex

第五步:检查配置

rtk init --show

然后重新启动 Codex 即可。


九、不接入 Codex,也可以手动使用

RTK 本身就是一个 CLI 工具,所以也可以手动调用。

例如原来的:

git status

改成:

rtk git status

查看 Git 日志:

rtk git log -n 10

查看代码修改:

rtk git diff

搜索代码:

rtk grep "keyword" .

查找文件:

rtk find "*.py" .

读取文件:

rtk read app.py

查看 Docker:

rtk docker ps

查看容器日志:

rtk docker logs 容器名称

运行 Python 测试:

rtk pytest

简单来说就是:

原命令:

git status

↓

RTK:

rtk git status

RTK 负责执行真实命令,然后把输出精简后再返回。


十、怎么看 RTK 到底省了多少 Token?

RTK 自带统计功能。

直接执行:

rtk gain

可以看到 Token Savings 信息。

还可以按天查看:

rtk gain --daily

按周查看:

rtk gain --weekly

如果使用一段时间以后再执行 rtk gain,会比较直观地看到 RTK 一共处理了多少命令,以及减少了多少终端输出。

不过这里再次提醒:

RTK 的 Token 数量属于估算值。

官方目前并没有内置具体大模型的 tokenizer,而是根据输出大小估算 Token,因此这个数字更适合用于观察“压缩比例”,不要直接当成实际 API 账单金额。


十一、RTK 会不会把重要信息也过滤掉?

这是我刚开始了解 RTK 时比较关心的问题。

RTK 的目标并不是简单粗暴地删除内容,而是根据不同命令采用不同的处理策略。

例如:

git status

会重点保留文件状态。

git diff

会精简 Diff 中的冗余内容。

pytest

会重点保留失败测试。

docker ps

会重点保留容器的关键字段。

也就是说,RTK 是针对不同命令分别做优化,而不是统一把输出截取前 100 行。

不过任何“压缩”都意味着部分信息可能不会直接展示。

所以在定位非常复杂的问题时,如果感觉某些关键日志没有看到,最简单的方法就是:

临时直接执行原始命令,查看完整输出。

例如:

docker logs xxx

而不是:

rtk docker logs xxx

这样就可以进行完整排查。


十二、RTK 值不值得用?

如果只是偶尔使用 AI 聊天,其实没有必要安装 RTK。

但是如果经常使用:

Codex
Claude Code
Cursor

让 AI 自动:

查看项目
搜索代码
执行 Git
运行测试
编译项目
分析 Docker
查看日志
排查错误

RTK 还是比较有价值的。

因为 AI Coding Agent 一个比较容易被忽略的 Token 消耗来源,就是:

Shell 命令输出。

有时候我们只让 Codex 修改几个文件,但是它可能在后台连续执行:

git status
git diff
rg
find
pytest
npm test
docker logs

真正修改代码可能只用了很少的上下文,反而大量 Token 消耗在终端日志上。

RTK 的思路其实很简单:

不让 AI 少干活,而是让 AI 少看没有价值的信息。

对于长时间使用 Codex、Claude Code 进行项目开发的场景,这种方式既可以降低上下文占用,也可以减少无意义信息对模型判断的干扰。


总结

最后简单总结一下。

RTK(Rust Token Killer)并不是传统意义上的 Prompt 压缩工具。

它主要解决的是:

AI Coding Agent
        ↓
执行 Shell 命令
        ↓
产生大量终端输出
        ↓
占用模型上下文

RTK 在中间增加了一层智能过滤:

AI Coding Agent
        ↓
RTK
        ↓
Shell 命令
        ↓
原始输出
        ↓
过滤 / 分组 / 截断 / 去重
        ↓
精简输出
        ↓
返回给大模型

如果平时使用 Codex 比较多,在 Mac 上只需要:

brew install rtk

然后配置 Codex:

rtk init -g --codex

最后:

rtk gain

就可以逐步观察实际使用过程中减少了多少无效终端输出。

对于经常使用 AI 编程工具的人来说,RTK 算是一个比较轻量、值得尝试的 Token 优化工具。

posted @ 2026-08-12 10:55  人艰不拆_zmc  阅读(76)  评论(0)    收藏  举报