发布时间:2026/9/5 16:26:02
RTK 技术实战指南:Rust 单二进制 CLI 代理如何把 LLM 读取的 Bash 输出压缩 60%–90% RTK 技术实战指南Rust 单二进制 CLI 代理如何把 LLM 读取的 Bash 输出压缩 60%–90%【免费下载链接】rtkCLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies项目地址: https://gitcode.com/GitHub_Trending/rtk4/rtkRTKRust Token Killer是一个高性能的 CLI 代理它拦截 AI 编码代理Claude Code、Copilot 等执行的 shell 命令在输出进入 LLM 上下文之前对其进行过滤与压缩据称可削减代理读取的 bash 输出达 60%–90%。整项目编译为单一 Rust 二进制零运行时依赖代理开销低于 10ms。读完本文你将掌握 RTK 的安装与 Hook 初始化流程、各命令类别的压缩行为、rtk gain节省统计的正确读法以及从源码层面确认其 token 估算与过滤机制的实现依据。一、RTK 解决什么问题在 AI 代理驱动的开发流程中代理执行的每条 shell 命令git status、cargo test、pytest等的原始输出都会被读入模型上下文成为输入 token 的一部分。这些输出中大量是噪声进度条、重复日志行、样板代码、冗长的 diff 头。RTK 的核心做法就一句话rtk 在命令输出到达你的 LLM 上下文之前对其进行过滤和压缩。单一 Rust 二进制、零依赖、开销低于 10ms。工作模式上RTK 位于代理与 shell 命令之间。代理执行命令时RTK 负责执行该命令、压缩其输出、再把压缩后的版本返回给代理无 rtk: 有 rtk: Claude --git status-- shell -- git Claude --git status-- RTK -- git ^ | ^ | | | ~2,000 tokens (原始) | | ~200 tokens | 过滤 | ----------------------------------- ------- (过滤后) ---------------同一份git status输出原始约 2,000 tokens经 RTK 过滤后约 200 tokens。二、各类命令的压缩行为对照RTK 针对不同类型的命令实现了专门的过滤器下表完整列出其压缩策略操作RTK 对输出的处理ls/tree目录树格式 文件计数而非每个条目一行cat/read智能读取优先输出签名与结构而非完整函数体grep/rg截断过长行按文件聚合匹配结果git status紧凑 stat 格式按状态分组git diff缩减上下文行数移除头部信息git log只保留 hash、作者与 commit 标题git add/commit/push一行确认信息替代完整的进度输出cargo test/npm test只保留失败项通过的测试折叠为一个计数ruff check按规则与文件分组pytest只保留失败项缩短 tracebackgo test解析 NDJSON只保留失败项docker ps只保留关键字段这些策略背后是四类通用压缩手段智能过滤——剔除噪声注释、空行、样板代码聚合——归并相似项文件按目录聚合、错误按类型聚合截断——保留相关上下文删除冗余去重——将重复的日志行折叠为带计数的单行。三、节省 90% 到底在度量什么RTK 声称削减最多 90% 的 bash 输出但必须明确一点这是 RTK 实际度量的对象并不等于账单降低 90%。bash 输出只是输入 token 的贡献者之一与你的 prompt、系统提示词、会话历史并列而输入 token 又只是账单的一部分账单同样计入输出 token。因此缩减在每一层都被稀释账单 (Cost) ├─ 输入 tokens │ ├─ Bash 输出 - RTK 唯一能过滤的部分 │ ├─ 你的 prompt │ ├─ 系统提示词 │ └─ 会话历史 └─ 输出 tokens - 模型生成的内容一条命令的输出字节减少 90%不会让整场会话便宜 90%。这正是 RTK 选择汇报bash 输出缩减率而非成本数字的原因bash 输出是 RTK 能控制的部分其余取决于你的 prompt、所用模型、代理写回的内容以及每次调用回放多少历史。完整推导见仓库内的 RTK 节省机制详解。另一个必须理解的细节RTK 报告的 token 数按bytes / 4估算。RTK 有意不内置任何 tokenizer因此百分比可靠但绝对 token 数是近似值。这一点可以直接在源码中得到证实——src/core/tracking.rs 中的估算实现就是(text.len() as f64 / 4.0).ceil() as usize其后果是由于原始输出与过滤后输出使用同一个估算器二者之比即节省百分比不受估算精度影响但rtk gain里显示的绝对 token 数只能当作量级参考不会与你的服务商账单完全对齐。如需精确值请用对应模型自己的 tokenizer 分别统计原始与过滤后的输出。rtk gain各列的真实含义列实际含义Input原始命令输出按bytes / 4估算的 token 数Output过滤后输出按bytes / 4估算的 token 数SavedInput 减 Output单位为估算 tokenSave%bash 输出字节的缩减率有意义的数字其中Save% 是有意义的指标——它本质是字节比值作为比例是准确的。此外RTK 不削减模型输出 token、不触及你的 prompt/系统提示/历史也没有匹配过滤器的命令会原样透传并以 0% 节省被记录可用rtk gain --history查看。四、安装Homebrew推荐brew install rtkHomebrew 配方可直接参考仓库中的 Formula/rtk.rb。快速安装Linux/macOScurl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh该脚本的仓库内源文件为 install.sh详细安装指南见 INSTALL.md。Cargocargo install --git https://github.com/rtk-ai/rtk验证rtk --version # 显示版本号 rtk gain # 显示节省统计注意原文档中的rtk --version示例预期显示rtk 0.28.2而当前仓库 Cargo.toml 中的版本已是0.42.4请以实际安装后输出的版本为准。五、快速上手一条命令接入 Claude Code# 1. 为 Claude Code 安装 hook推荐 rtk init --global # 2. 重启 Claude Code然后测试 git status # 会被自动重写为 rtk git statusrtk init会写入 hook 配置与 RTK 感知文件如~/.claude/CLAUDE.md使代理把 shell 命令自动重写为rtk前缀形式。Hook 的初始化逻辑位于 src/hooks/init.rs其中也包含用户全局过滤器模板~/.config/rtk/filters.toml的生成逻辑。更多 AgentCopilot、Cursor、Windsurf 等的 hook 集成说明见 hooks/README.md。六、命令参考以下百分比均为bash 输出字节的缩减率由 RTK 的bytes / 4估算器度量度量口径见 第三节的说明。文件类rtk ls . # 优化后的目录树 rtk read file.rs # 智能读取签名与结构优先 rtk find *.rs . # 紧凑结果 rtk grep pattern . # 按文件聚合的搜索Gitrtk git status # 紧凑状态 rtk git log -n 10 # 每个 commit 一行 rtk git git diff # 精简 diff rtk git push # - ok main测试rtk jest # 紧凑的 Jest 输出 rtk vitest # 紧凑的 Vitest 输出 rtk pytest # Python 测试-90% rtk go test # Go 测试-90% rtk cargo test # Rust 测试-90% rtk test cmd # 通用只保留失败项-90%构建与 Lintrtk lint # 按规则聚合的 ESLint rtk tsc # 聚合的 TypeScript 错误 rtk cargo build # Cargo 构建-80% rtk ruff check # Python Lint-80%分析rtk gain # 节省统计 rtk gain --graph # ASCII 图表30 天 rtk discover # 发现被浪费的节省机会七、从源码看实现过滤策略与执行生命周期结合仓库源码可以确认 RTK 的代理遵循六阶段生命周期详见 docs/contributing/ARCHITECTURE.mdPARSE——clap 解析器提取子命令与参数ROUTE——main.rs中按命令分派到对应模块如git::runEXECUTE——std::process::Command执行真实命令捕获 stdout/stderr 与退出码FILTER——调用该命令的格式化函数压缩输出如git::format_git_outputPRINT——输出过滤结果-v可显示调试信息。关键设计原则包括退出码保真保证 CI/CD 可靠性、Fail-Safe过滤失败时回退到原始输出、透明-v随时可看原始输出。从源码结构看命令处理器按语言/领域分目录组织于 src/cmds/git/、rust/、python/、go/、js/等通用过滤规则则以 TOML 声明式定义存放于 src/filters/核心基础设施追踪、截断、流处理等位于 src/core/。其中src/core/tracking.rs负责节省追踪其数据库字段注释明确写着input_tokens与output_tokens均按 bytes / 4, no tokenizer 估算与第三节的说明完全一致。八、延伸阅读与许可INSTALL.md——详细安装指南docs/contributing/ARCHITECTURE.md——技术架构深参考docs/guide/resources/savings-explained.md——节省机制的完整推导hooks/README.md——各 AI 代理的 Hook 集成CONTRIBUTING.md——贡献指南DISCLAIMER.md——法律免责声明RTK 采用 Apache License 2.0 许可详见 LICENSE。【免费下载链接】rtkCLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies项目地址: https://gitcode.com/GitHub_Trending/rtk4/rtk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/9/5 16:26:02

禁闭求生2恶意盛宴获取攻略:神秘人装备完整解锁流程

开门见山说结论:如果你正在《禁闭求生2》后期为了“神秘人装备”四处碰壁,大概率不是你操作不行,而是获取逻辑没转过来。这件被很多人称为《恶意盛宴》的装备,并不是“找到一个Boss、打死、捡装备”这么简单。它背后是一个跨区域、…

2026/9/5 16:21:02

学习平板选购指南:AI教育、双系统与家长管控的真相

如果家里有一个正在上小学或初中的孩子,很多家长都会经历类似场景:作业里遇到一道没把握的题目,想给孩子讲,又怕方法不对;孩子想提前预习下一单元,手里只有课本,没有配套讲解;英语课…

2026/9/5 17:21:05

FUI路由层重构:从反射GetTypes到Source Generator强类型Route

如果想在我维护的FUI框架里挑一次自己都觉得值回票价的重构,我会选路由层从反射GetTypes()迁到 Source Generator 强类型 Route 的那个版本。FUI 是一个面向功能模块的轻量服务框架,核心思维不是 MVC 那种“控制器 Action”,而是把一个领域能…

2026/9/5 17:21:05

Source Generator实战:把Unity UI绑定从运行时搬到编译期

最近有朋友问我,Source Generator 用在 Unity UI 上到底能干嘛。他翻了一圈资料,看完之后得出一个结论:无非是少写几个属性字段,把[SerializeField]拖拽绑定那堆重复劳动给省了。我一开始也是这么想的,直到真的把一个源…

2026/9/5 17:21:05

从反射到源生成器:FUI 路由注册机制重构实践

最近把我自己维护的接口中间层 FUI 的路由注册机制重构了。之前是靠启动时GetTypes()反射扫描所有 Handler,再逐个注册路由,现在换成了基于 Source Generator 在编译期直接生成强类型 Route 注册代码。这篇文章会围绕 FUI Source Generator 这次设计演进…

2026/9/5 17:16:05

足球运动员检测数据集:VOC+YOLO双格式11124张高质量标注

简介:本资源是面向计算机视觉初学者与实战开发者的足球场景目标检测专用数据集,适用于YOLO系列、Faster R-CNN等主流检测模型的训练与验证任务。数据集涵盖11124张真实足球比赛图像,标注2个核心类别(ball与player)&…

2026/9/5 2:46:54

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/5 2:46:52

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/5 2:44:34

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/5 0:04:47

流式背压机制:避免前端渲染卡死与内存暴涨的滑动窗口限流

流式背压机制:避免前端渲染卡死与内存暴涨的滑动窗口限流在大模型流式输出(Streaming)与智能体实时推流的架构中,生产环境中经常出现一种“上下游生产消费速率严重失衡”的极端情况: 生产端极速产出:大模型…

2026/9/5 2:45:13

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/5 2:30:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/5 2:46:50

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…