十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

RTK 技术实战指南:Rust 单二进制 CLI 代理如何把 LLM 读取的 Bash 输出压缩 60%–90%

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),仅供参考
返回列表