用 Cursor、Claude Code、各类终端 Agent 写代码时,最贵的往往不是模型本身,而是它读进去的那一长串命令输出 :ls 几百行、pytest -v 满屏 PASSED、git log 带一堆装饰。上下文塞满了,真正有用的报错反而被挤掉,token 账单还在涨。
GitHub 上的 rtk-ai/rtk(Rust Token Killer)干的事很直接:在输出进到 LLM 上下文之前,先按命令类型压缩、折叠、只留失败 。官方宣称常见开发命令可省 60%~90% bash 输出。今天这篇是我在本机 Linux 上把 v1.1.0 OSS 版装起来跑通的实测笔记------有具体字节对比、有踩坑原文,不是 README 翻译。
本机实测 + AI 辅助整理。数据读取时间:2026-10-30(Asia/Shanghai)。
项目是什么
| 项 | 内容 |
|---|---|
| 仓库 | github.com/rtk-ai/rtk |
| 星数 | 约 85,047(2026-10-30 读 API,会变) |
| 语言 | Rust,单二进制 |
| 版本实测 | v1.1.0 |
| 许可证 | 默认发行版:Apache-2.0 + BUSL-1.1;OSS 版仅 Apache-2.0(见下文踩坑) |
它不是又一个「AI 写代码」助手,而是 Agent 的命令行输出代理 :你(或 hook)跑 rtk ls、rtk git status、rtk pytest,它把原生命令的 stdout/stderr 滤成更短的版本再吐出来。支持 100+ 命令族(git / npm / cargo / pytest / docker / kubectl ...),并可用 rtk init 挂到 Claude Code、Cursor Agent 等工具的 hook 上。
适合 :已经在用终端 Agent,经常把大段 ls/test/diff 喂进上下文的人。
不太适合 :你根本不用 Agent、只想找个「更好看的 ls」------那去看 eza/lsd 更对口;rtk 的价值在 省给模型看的字,不是给人类刷终端颜值。
本机环境
text
OS: Linux 6.12.x,x86_64
Python: 3.13.5(仅用于跑 pytest 对照)
rtk: 1.1.0(rtk-oss-x86_64-unknown-linux-musl)
网络: 可访问 GitHub Releases
无 Docker(所以没测 rtk docker)
工作目录:/workspace/side-projects/github-tutorial/rtk/(下文命令可按你的路径改)。
安装步骤(本机已跑通)
官方推荐三种常见装法:
bash
# macOS / Linux(Homebrew)
brew install rtk
# 一键脚本(会装到 ~/.local/bin)
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
# 只要 Apache-2.0 的 OSS 版
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | RTK_EDITION=oss sh
我这次没有 直接 | sh,而是手动下 OSS 的 musl 包(方便核对文件名和 LICENSE),效果等价:
bash
mkdir -p ~/apps/rtk && cd ~/apps/rtk
curl -sL -o rtk.tar.gz \
"https://github.com/rtk-ai/rtk/releases/download/v1.1.0/rtk-oss-x86_64-unknown-linux-musl.tar.gz"
tar -xzf rtk.tar.gz
./rtk --version
# 输出:rtk 1.1.0
# 可选:放到 PATH
export PATH="$PWD:$PATH"
# 或: mkdir -p ~/.local/bin && cp rtk ~/.local/bin/
解压后目录里就是 rtk 二进制 + LICENSE。rtk --help 能列出一大串子命令,说明二进制正常。
架构注意:x86_64 Linux 用
...-linux-musl;ARM 机器要换aarch64-unknown-linux-gnu对应包。下错架构会直接无法执行。
实测对比:原生命令 vs rtk
1)ls -la /usr/bin:目录一大就夸张
bash
ls -la /usr/bin | wc -c # 本机:47336 bytes / 746 lines
rtk ls -la /usr/bin | wc -c # 本机:1200 bytes / 52 lines
# 约 97.5% 体积下降
rtk 末尾会类似这样收尾(哈希每次不同):
text
755 cksum 134.4K
... (692 more)
[+692 hidden: rtk recall 56f1fd8e8259998b]
被折叠的内容可以用哈希捞回来:
bash
rtk recall 56f1fd8e8259998b | head
# 会打出被藏起来的那几百行文件名
这是设计,不是丢数据:默认给 Agent 短摘要,人要细查再 recall。
2)git status / git log:装饰词砍掉
在临时仓库里对比(干净工作区时):
text
# git status 原文大意:
On branch master
nothing to commit, working tree clean
# rtk git status:
* master
clean --- nothing to commit
有改动时,rtk 会收成类似 M a.txt 的短状态;rtk git log 则保留 hash + subject + 相对时间 + author,比默认 git log 装饰少很多。本机一组 log 对照大约从四百多字节压到一百多字节量级(仓库越大、提交说明越长,差距越明显)。
3)pytest:只突出失败
准备两个用例(一个过、一个故意挂):
python
# test_demo.py
def test_ok():
assert 1 == 1
def test_fail():
assert 1 == 2
bash
pytest -v # 本机约 883 bytes,满屏 PASSED/FAILED 排版
rtk pytest -v # 本机约 184 bytes
rtk 输出形态:
text
Pytest: 1 passed, 1 failed in 0.01s
Failures:
1. [FAIL] test_fail
test_demo.py:5: in test_fail
assert 1==2
E assert 1 == 2
[full output: rtk recall c1dbace007fe4b63]
通过的用例收成计数,失败保留断言位置------这正是喂给 Agent「修测试」时最需要的形状。
4)rtk gain:看省了多少
跑过几条命令后:
bash
rtk gain
会按命令列出估算节省。我这边单条 rtk ls -la /usr/bin 显示约 97.5% 节省;rtk pytest -v 约 67.8% 。
但注意:总览百分比有时看起来很小------见下面踩坑第 3 条。
踩坑清单(真实报错)
坑 1:rtk tree 依赖系统里的 tree
text
rtk: tree command not found. Install it first:
- Ubuntu/Debian: sudo apt install tree
...
rtk 是代理,不是重写所有工具。本机没装 tree 就先:
bash
sudo apt install tree # Debian/Ubuntu
同类思路:rtk rg 需要本机有 rg(ripgrep)。
坑 2:rtk pytest 找的是 PATH 里的 pytest,不是 python3 -m pytest
直接跑会得到:
text
rtk: Failed to run pytest: Failed to spawn process: No such file or directory (os error 2)
即便系统有 Python 3.13也不行。正确做法是装出真正的可执行文件:
bash
python3 -m venv .venv
.venv/bin/pip install pytest
export PATH="$PWD/.venv/bin:$PATH"
which pytest # 必须能找到
rtk pytest -v
(pipx install pytest 也可以。)这是本机踩得最实在的一条:Agent hook 环境里如果没把 venv/bin 加进 PATH,rtk pytest 会直接挂。
坑 3:rtk gain 总览百分比可能「虚低」
大目录的 ls 往往被标成:
text
Excluded: N oversized outputs (input past the ~30k-char agent cap)
超大输出按「反正进不了 Agent 上下文」排除在总表之外,于是 总 Tokens saved 只有个位数百分比 ,但单条命令行里明明写着 97%。写文章或跟领导汇报时,请看 By Command 表,不要只截总览那一行。
坑 4:发行版有「完整版 / OSS 版」,协议不一样
README 写得很清楚:
rtk-<target>:Apache-2.0 + BUSL-1.1(含压缩 engine)rtk-oss-<target>:仅 Apache-2.0(hooks + filters,无 engine)- 另有独立的
rtk-proxy(BUSL-1.1)
个人本地给 Agent 省上下文,两者二进制都叫 rtk,日常命令兼容。若公司合规只认 OSI 那一类协议,装的时候显式走 OSS:
bash
curl -fsSL .../install.sh | RTK_EDITION=oss sh
# 或手动下 rtk-oss-*.tar.gz(本文做法)
生产使用官方说明可免费;BUSL 限制的是把 RTK/衍生品当服务对外卖那一类场景------以仓库当前 LICENSE / 官网 Editions 页为准,发文日我读的是 v1.1.0 说明。
坑 5:rtk diff ≠ rtk git diff
text
rtk diff a.txt
# diff: missing operand after 'a.txt'
看 git 变更用:
bash
rtk git diff
rtk diff 更接近「两个文件/路径的压缩 diff」,参数习惯和 git diff 不一样,别混用。
坑 6:别把「安装脚本」和「业务命令」的失败码假装置之不理
个别错误路径下,包装层可能打出 [rtk: No such file or directory ...] 一类信息。写自动化时建议:
- 关键业务仍检查 stderr / 输出里是否还有
FAIL、cannot access; - 关键 Agent hook,以官方
rtk init生成的配置为准,先在小仓库试再铺开。
结果、边界与安全提醒
本机结论(可复现)
| 场景 | 结果 |
|---|---|
安装 OSS musl 包并 --version |
✅ |
ls 大目录压缩 + recall 找回 |
✅ 约 97% 体积下降 |
git status / git log / git diff |
✅ 明显变短 |
pytest 失败优先 |
✅(需 pytest 在 PATH) |
rtk tree |
❌ 先装系统 tree |
rtk docker / 真·挂上 Cursor hook |
⚠️ 本机无 Docker;hook 未在本篇执行 rtk init(避免改你本机 Agent 配置) |
边界
- 省的是 给模型看的 bash 输出,不是魔法降 API 价;若 Agent 根本不读命令输出,收益为 0。
- 压缩会丢「装饰性」信息;排障时记得
rtk recall <hash>或直接跑原生命令。 - 默认 telemetry 配置里
enabled = false(本机rtk config可见);若你改过配置,自己再确认一眼。 - 把
rtk init -g写进全局 Agent 配置前,先读官方 Quick Start,确认不会和现有 hook 打架。
还原 :删掉二进制、从 PATH 移除即可;若跑过 rtk init,用官方文档里的 --uninstall 一类选项撤 hook(本篇未执行 init,故无卸载步骤)。
小结
rtk 解决的是一个很具体的痛点:Agent 上下文被命令行刷屏浪费掉 。本机在 Linux x86_64 上装 OSS v1.1.0 后,ls 大目录能到约 97% 体积下降,pytest 能把失败断言提炼出来;真正卡住我的是 pytest 不在 PATH 、tree 未安装 ,以及 gain 总览把超大输出排除后显得「没省多少」。
如果你也在用终端 Agent,值得花 10 分钟装上对着自己的仓库跑一遍 rtk ls、rtk git status、rtk gain。完整的对照脚本和测量原始输出,我这边会收进以后的脚本包(计划上 Gumroad,链接有了再单独说);免费版就以本文命令为准,自己都能复现。
如果这篇帮到你,欢迎点赞收藏,并关注专栏「GitHub实测笔记」------每周一篇热门仓库中文实测。
上一篇:CleanYourTV 本机实测(电视去广告)。
下一篇预告:打算盯 kellyjonbrazil/jc(把 ls/dig/ps 输出转成 JSON,方便脚本和 jq)或 astral-sh/uv(超快 Python 包管理)------评论区更想看哪个?
有问题直接评论区问,看到都会回。