ARTICLE · 1024704
8万星的Rust小工具,专治AI被bash输出灌满上下文

我翻到一个项目,叫 rtk,是 Rust Token Killer 的缩写。
8万星的Rust小工具,专治AI被bash输出灌满上下文
它在 GitHub 上有 8.07 万星,单 Rust 二进制。
它只做一件事:插在 agent 和 shell 中间,把命令输出压一遍,再交给模型读。
管的是哪一段输出
先说说它管不了什么。
账单的事它管不了。上下文里除了命令输出,还有你的提问、系统提示、历史对话。这些它一个字都碰不到。
它只碰命令回给模型的那一段字节。
策略一共四条:滤掉噪音,把同类结果合并,截断冗余,把重复的行折叠成计数。
改道命令
这是我最想先讲的一步。
你不用改自己的习惯,也不用让 agent 记得加前缀。装完 hook,agent 发出去的 git status 会在执行前被改写成 rtk git status。

模型拿到的就是压过的结果。它自己都不知道中间过了这一道手。
接入的 agent 一共 17 个。Claude Code、Copilot、Cursor、Gemini CLI、Codex、Windsurf、Cline、OpenCode、OpenClaw、Pi、Hermes、Kimi、Factory Droid 都可以使用。
命令挂了的时候,完整输出还在
过滤器最怕什么?把关键线索压掉。
比如一条命令报错,堆栈里的那一行恰好在被截断的部分。这时候你不光没省事,还多了一个猜谜游戏。
它的解法是双保险。命令失败时,完整输出会被存下来,末尾附一个召回编号。
FAILED: 2/15 tests[full output: rtk recall 3f9c2a81d4e7]
模型看到这个编号,需要细节的时候,自己去 rtk recall 3f9c2a81d4e7 捞就行。
不用重新执行一遍命令。触发这轮失败的前置状态可能已经变了,重跑未必复现。
存哪里可以配。默认 sqlite,也可以退回文件模式,或者干脆关掉。
这个设计我很喜欢。省的前提是不丢——不然省下来的那点 token,迟早要在 debug 上连本带利还回去。
它反过来告诉你,哪里还能省
还有个命令叫 rtk discover。
它会扫你本地的命令历史,找出那些本来可以走 rtk、却还在裸跑的命令。
rtk discover --all --since 7 # 所有项目,最近 7 天输出会告诉你,哪几条命令漏掉了多少。看完你就知道该去配哪一类过滤器了。
如何安装
# macOS / Linuxcurl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/master/install.sh | sh# Windowswinget install rtk-ai.rtk# 从源码装cargo install --git https://github.com/rtk-ai/rtk
装完跑 rtk init -g,重启你的 AI 工具,然后该干嘛干嘛。
写在最后
项目地址在这:github.com/rtk-ai/rtk。官网 rtk-ai.app
Jim GadgetsJim 发掘好用工具,探索有趣项目