github 4w星工具 rtk:节约AI工具消耗token的原理及使用教程,能节约80%token
当你让AI帮你debug时,它先花了800个token读了一堆你根本不会看的垃圾输出。
用AI写代码的时候,你应该遇到过这种场景。
修一个简单bug,改着改着,AI开始胡言乱语。十分钟前你刚跟它说过的架构约束,它失忆了一样全忘了。只能耐着性子重新解释一遍,它才恢复正常。
AI没变蠢,模型也没降级,更不是什么”AI变懒了”的都市传说。原因一句话就能说清楚:上下文窗口被垃圾数据塞满了。
你在终端敲 git status。屏幕刷出十几行,扫一眼就知道:改了3个文件,1个没track。
AI不吃这一套。
它读到的是完整的原始输出,空行、提示文字、颜色转义码、中文翻译的冗余措辞,一个不落。同一个信息,你20个字能理解,它要吞2000个token。
再跑个测试。200行输出,190行绿油油的 passed。你只关心那10行红的,AI把200行全吃了,又干掉25000个token。
翻了一下实际数据。一次30分钟的中等规模编码会话,大概执行80多次shell命令:
|
|
|
|
|
|---|---|---|---|
git status |
|
|
|
cat/read
|
|
|
|
grep/rg
|
|
|
|
git diff |
|
|
|
npm test |
|
|
|
ls/tree |
|
|
|
|
|
|
|
|
| 合计 | 86次 | 118,000 | 23,900 |
一次对话,11.8万token。将近10万是垃圾。
按Claude Opus的API价格,光垃圾输出一次会话就烧1.5美元。重度使用,一个月多花几百块。但钱还不是最疼的。
最疼的是上下文污染。垃圾塞满窗口后,AI开始”遗忘”。你以为它在推敲你的架构,实际上它正逐字阅读 node_modules 里第47层调用栈,那些你一辈子不会点开看的东西。
这不是bug,是设计盲区
所有AI编程工具,Claude Code、Cursor、Copilot、Codex,套路一样:shell命令的原始输出原封不动丢进LLM上下文。
出发点没毛病,宁多勿少,万一漏了重要信息呢。但副作用极大。命令输出是给人看的,塞满了人类大脑自动过滤、AI照单全收的结构性噪音:
-
• 每次 npm install吐出几百行依赖树,有用信息在最后三行 -
• ASCII表格、分割线、装饰性空行,你扫一眼跳过,AI逐token读 -
• 测试框架把同一类错误打几十遍,AI老老实实看几十遍 -
• git push那串 “Enumerating objects… Counting objects… Compressing objects…” 你从来没读过,AI每次读完
打个比方:新来的实习生,你让他看看项目怎么样了,他把整个 /var/log 打印出来给你朗读。你只想知道服务还活着吗。
RTK:一个夹在中间干脏活的东西
RTK[1],全称 Rust Token Killer,就是来解决这件事的。
Rust写的CLI代理,单二进制文件,零外部依赖。工作方式粗暴:
没有RTK:Claude → 执行 git status → shell吐2000行 → Claude全吞有了RTK:Claude → 执行 rtk git status → RTK拦截 → 过滤压缩 → 吐200行 → Claude只吃200token
它不懂你的代码。它只认一条:不同命令有不同类型的噪音,按类型过滤。
-
• git status→ 砍掉空行和啰嗦提示,只留文件路径和状态 -
• npm test→ passed 全部折叠,只保留失败用例和错误摘要 -
• git push→ 15行压成三个单词:”ok main” -
• cargo build→ 去掉进度条和中间产物,只剩报错和警告 -
• ls -la→ 45行800token压到12行150token,树状呈现
举三个实际例子,差距一目了然。
git status,过滤前(~35行,约500 token):
On branch mainYour branch is up to date with 'origin/main'.Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: src/components/Header.tsx modified: src/pages/dashboard/index.tsx new file: src/utils/formatDate.tsChanges not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: src/api/client.ts modified: package.jsonUntracked files: (use "git add <file>..." to include in what will be committed) src/hooks/useAuth.ts src/types/user.ts
过滤后(~5行,约60 token):
Staged: M src/components/Header.tsx M src/pages/dashboard/index.tsx A src/utils/formatDate.tsUnstaged: M src/api/client.ts M package.jsonUntracked: src/hooks/useAuth.ts src/types/user.ts
npm test,过滤前(200+行,约25,000 token):
PASS src/components/Button.test.tsx ✓ renders correctly (12ms) ✓ handles click events (8ms) ✓ applies variant classes (5ms) ✓ shows loading state (3ms) ... (180行 passed)FAIL src/utils/validation.test.ts ✕ email validation rejects invalid format (15ms) Expected: false Received: true ✕ empty string should fail (2ms) Expected: ValidationError Received: undefinedTest Suites: 1 failed, 12 passed, 13 totalTests: 2 failed, 47 passed, 49 total
过滤后(~15行,约600 token):
FAIL src/utils/validation.test.ts ✕ email validation rejects invalid format Expected: false, Received: true ✕ empty string should fail Expected: ValidationError, Received: undefinedSummary: 2 failed, 47 passed (13 suites)
git push,过滤前(约200 token):
Enumerating objects: 14, done.Counting objects: 100% (14/14), done.Delta compression using up to 8 threadsCompressing objects: 100% (8/8), done.Writing objects: 100% (8/8), 1.23 KiB | 1.23 MiB/s, done.Total 8 (delta 6), reused 0 (delta 0), pack-reused 0remote: Resolving deltas: 100% (6/6), completed with 6 local objects.To github.com:user/repo.git abc1234..def5678 main -> main
过滤后(~5 token):
ok main
80%的节省就是这么来的。没魔法,就一条:去噪,保信号。
集成方式更舒服。RTK通过Bash hook自动工作,你该怎么敲命令还怎么敲,hook在背后静默把 git status 重写成 rtk git status。AI工具完全无感,它拿到的就是压缩后的干净版本。不用改任何习惯,装好就生效。
压缩输出,AI会不会变蠢?
压缩了输出,会不会把关键信息也压没了?AI判断出错谁负责?
不会。RTK去掉的是噪音,不是信号。
你让同事看服务器状态,他要回你”CPU 70%,内存正常,三个服务都在跑”,还是甩你一份200行的 top 完整输出?你要前者。RTK就是把后者翻译成前者。人类靠这些就够了,AI一样可以。
RTK还留了保底。Tee模式,命令执行失败时,完整原始输出自动存到日志,AI随时能读。日常极致压缩,关键时刻不丢信息。
41.9k Star不是刷出来的。大量实际反馈指向同一个结论:RTK不会降低AI编程质量,反而因为上下文干净了,AI推理更聚焦,遗忘更少。你想想,看会议纪要和看逐字稿,哪个更容易抓住重点。
装一下,然后忘掉它
支持 macOS、Linux、WSL。一行搞定:
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh# 或者 brew install rtk
根据你用的AI工具,选一条:
rtk init -g # Claude Codertk init -g --agent cursor # Cursorrtk init -g --copilot # GitHub Copilot
装完就忘掉。想看省了多少,敲 rtk gain,累计节省的token和钱列得明明白白。
收尾
AI编程工具越来越强,反而容易忽略最基础的事:效率不光看算得多快,还看读得够不够精准。
RTK不做什么惊天动地的事。在shell和AI中间加了一个过滤层,让AI只读它需要读的。0成本,延迟不到10ms,100多种命令支持。
上下文窗口就那么点。别浪费在读垃圾上。
项目地址:github.com/rtk-ai/rtk[1]
官方指南:rtk-ai.app/guide[2]
装完回来告诉我省了多少。
引用链接
[1] RTK: https://github.com/rtk-ai/rtk[2] rtk-ai.app/guide: https://www.rtk-ai.app/guide
夜雨聆风