RTK v0.49.0:压缩 shell 输出,不要把它当成账单计算器
RTK 在编码 Agent 读取结果前执行真实 shell 命令,再按命令类型过滤、分组、截断和去重。它覆盖 git、测试、lint、容器、IaC、AWS 等大量命令,可通过 Agent hook 或插件自动改写调用。
当前稳定版
v0.49.0 发布于 2026-09-11,加入 SQLite recall、sqlfluff 过滤和更安全的管道改写,同时修复 diff、grep、信号透传与静默丢失问题。Releases 中的 v0.50.0 dev RC 是预发布,不能当作当前稳定版。
先审阅,再安装 hook
rtk --version
rtk gain
rtk init --show
# 确认改动后,再针对宿主运行对应 rtk init官方还提醒 crates.io 上有另一个名为 rtk 的 Rust Type Kit。若 `rtk gain` 不存在,说明很可能装错。优先使用官方 Release、Homebrew 或 winget,并核对二进制来源。
输出怎样被压缩
RTK 的规则按命令设计:通过的测试折成计数、失败保留摘要;git diff 去掉冗余头部;容器日志去重;云 CLI 只保留常用字段。v0.49.0 的 recall 会把被截断的尾部存入本地 SQLite,以便出错时取回。内置 Read、Grep、Glob 不经过 Bash hook,因此不会自动受益。
可靠性与隐私
- 用可预期失败的测试比较原始与压缩结果,确认错误位置、退出码和信号仍正确。
- 故障排查要保留 `rtk proxy`、原始命令或 recall 回取路径。
- hook 会改写命令执行链,shell 管道、sudo 和重定向都要做代表性回归。
- 项目默认收集匿名聚合遥测;官方声明不采集源码、路径、参数或秘密,敏感环境仍应审阅并按需关闭。
与 Headroom 对比
Headroom 提供库、HTTP proxy、MCP 和多算法压缩,覆盖工具输出、日志、RAG、文件与会话历史。RTK 的范围更窄,只在本地 shell 层使用命令专属过滤器。只需处理 git/test/docker 等终端噪声时 RTK 更直接;还要压缩非 CLI 上下文时再评估 Headroom。
这里仅补原教程没有展开的事实和边界。安装命令与操作步骤仍以前文为准。
先判断这个项目是否适合你
适合谁用
适合命令输出量大、上下文经常被测试日志、git diff、容器日志或云 CLI 占满的编码 Agent。它只能缩短经过 hook 的 shell 输出,不能缩短系统提示、用户提示、模型输出或宿主内置文件工具。
采用建议
RTK 对 shell 输出占用上下文的问题给出了边界清楚的本地方案。采用时要把收益理解为输出压缩,先审阅 hook、用失败命令验证信息保真,并保留绕过与 recall;不要用 `gain` 的估算值直接推算账单。
原教程未展开的系统信息
核心功能
自动改写 hook
针对 Claude Code、Codex、Gemini、Cursor 等宿主安装 hook 或插件,把 Bash 调用透明改写为 RTK。
统计与发现
`rtk gain` 展示估算节省,`rtk discover` 查找遗漏机会;估算使用 bytes/4,不是精确 tokenizer 账单。
失败驱动 recall
v0.49.0 增加内容寻址的 SQLite recall,在截断或失败时保存可恢复尾部,并跟踪过滤器效率。
架构与数据流
Agent 的 shell hook 先识别命令并改写为 RTK,RTK 再执行真实程序、捕获 stdout/stderr,并按命令类型应用过滤、分组、截断和去重。输出交回 Agent,原命令退出与信号需要透传。v0.49.0 的 recall 使用本地 SQLite 保存被省略内容,必要时可按内容哈希取回。内置 Read/Grep/Glob 不经过 Bash hook,必须显式使用 RTK 命令才会过滤。
技术栈和运行条件
语言
Rust
框架
单一 CLI 二进制 + Agent hook/plugin + 本地 SQLite recall
关键依赖
- 目标开发命令本身
- 部分过滤器需要 ripgrep
- 可选 Homebrew/winget/Cargo
运行环境
macOS/Linux/Windows/WSL;本地配置、hook、统计和 recall 数据
常见问题
RTK v0.49.0 宣称减少 90% token,账单也会少 90% 吗?
不会。官方说明该数字是 bash 输出减少量;总费用还包含系统提示、对话历史、其他输入和模型输出,而且 token 数按 bytes/4 估算。
RTK 会处理 Claude Code 的 Read、Grep 和 Glob 吗?
不会自动处理。这些内置工具不经过 Bash hook;需要改用 shell 命令或显式调用 `rtk read`、`rtk grep` 和 `rtk find`。
怎样避免安装到 crates.io 上另一个同名 rtk?
优先用官方 Release、Homebrew 或 winget。安装后运行 `rtk gain`;若命令不存在,应卸载错误包并按官方仓库给出的 Cargo Git 地址重装。
RTK 截断后找不到关键日志怎么办?
先用 recall 取回被省略内容,或用 `rtk proxy`/原始命令绕过过滤。团队应为故障排查和取证流程保留明确的原始输出路径。