RTK:给 AI 编程代理省 token 的命令行代理工具

介绍 rtk-ai/rtk:一个用 Rust 编写的命令行代理工具,通过压缩 ls、cat、grep、git、test、docker 等常见命令输出,减少 AI 编程代理消耗的上下文 token。

rtk-ai/rtk 是一个面向 AI 编程代理的命令行代理工具。它的思路很直接:很多 agent 在开发过程中会频繁调用 lscatgrepgit statusgit diff、测试命令和构建命令,而这些命令的原始输出经常又长又重复。RTK 会在命令输出进入 LLM 上下文之前先做过滤和压缩,让模型看到更短、更有用的结果。

项目地址:rtk-ai/rtk

它解决的是什么问题

AI 编程工具真正贵的不只是模型调用次数,还有上下文里被塞进去的无效信息。

例如:

  • ls -la 可能输出大量权限、时间和无关文件。
  • git diff 可能夹杂很多重复上下文。
  • pytestcargo testnpm test 失败时,最重要的是失败用例和错误栈,而不是所有通过项。
  • docker pskubectl podsaws 命令往往字段很多,但 agent 只需要少数关键信息。

这些输出如果原样进入模型上下文,会快速消耗 token。RTK 的目标不是替代这些命令,而是在它们和 AI 编程代理之间加一层“压缩代理”。

RTK 的基本工作方式

RTK README 里给出的定位是:它会在命令输出到达 LLM context 之前,对结果做过滤和压缩。它是一个 Rust 单文件二进制程序,支持大量常见开发命令,并强调低额外开销。

它主要做四类处理:

  1. Smart Filtering:去掉注释、空白、样板内容和低价值噪音。
  2. Grouping:把相似项目聚合起来,例如按目录、错误类型或状态分组。
  3. Truncation:保留关键上下文,截断重复或不重要的部分。
  4. Deduplication:把重复日志折叠成更短的计数表达。

从 agent 的角度看,命令仍然是熟悉的开发命令;变化在于返回给模型的结果更短。

支持哪些命令

RTK 覆盖的命令范围比较偏“日常开发现场”:

  • 文件查看:rtk lsrtk readrtk findrtk grep
  • Git:rtk git statusrtk git logrtk git diff
  • GitHub CLI:rtk gh pr listrtk gh pr viewrtk gh issue list
  • 测试命令:rtk pytestrtk go testrtk cargo testrtk vitestrtk playwright test
  • 构建和 lint:rtk lintrtk tscrtk next buildrtk cargo clippy
  • 容器和云命令:rtk docker psrtk docker logsrtk kubectl podsrtk aws sts get-caller-identity
  • 数据和日志:rtk jsonrtk depsrtk envrtk log

这类工具最适合 agent 高频读命令输出的场景。它不负责替你写代码,而是让 agent 少读废话。

安装和接入方式

README 给了几种安装方式。

Homebrew:

1
brew install rtk

Linux/macOS 快速安装:

1
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh

Cargo:

1
cargo install --git https://github.com/rtk-ai/rtk

安装后可以先检查版本和统计信息:

1
2
rtk --version
rtk gain

接入 AI 编程工具时,可以用初始化命令:

1
2
3
4
5
6
rtk init -g
rtk init -g --gemini
rtk init -g --codex
rtk init -g --agent cursor
rtk init --agent windsurf
rtk init --agent cline

初始化后需要重启对应的 AI 工具。对于支持 hook 的 agent,Bash 命令会在执行前被重写,例如把 git status 变成 rtk git status,让 agent 收到压缩后的输出。

使用时要注意什么

RTK 的收益取决于 agent 是否真的通过 shell 命令读取信息。

README 里特别提醒:像 Claude Code 的内置 ReadGrepGlob 这类工具不经过 Bash hook,因此不会自动被 RTK 改写。要让 RTK 介入,需要使用 shell 命令,例如 catheadtailrggrepfind,或者直接调用 rtk readrtk greprtk find

这点很关键。RTK 不是全局透明地压缩所有 agent I/O,它更像是 shell 命令层面的代理。

Windows 用户也要注意,README 建议不要直接双击 rtk.exe,而是把它放到 PATH 里,通过 Command Prompt、PowerShell 或 Windows Terminal 使用。它也提到,如果想获得完整 hook 体验,WSL 会更自然。

适合谁用

RTK 适合三类人:

  1. 重度 AI 编程用户:每天让 agent 跑很多 gitrg、测试和构建命令。
  2. 大仓库用户:命令输出动辄几百行,agent 经常被无关上下文淹没。
  3. 关心 token 成本和上下文窗口的人:希望模型把注意力放在失败、变更和关键文件上。

如果你的项目很小,或者 agent 主要通过 IDE 内置工具读取文件,RTK 的体感收益可能没那么明显。它真正发力的地方,是命令行输出又长又频繁的开发流。

我的判断

RTK 的方向很实用。现在很多 AI 编程工作流都在强调更强的模型、更大的上下文、更长的任务,但开发现场还有一个朴素问题:agent 经常读了太多没必要读的东西。

把命令输出先压缩,再交给模型,能减少 token 消耗,也能降低模型被噪音带偏的概率。

不过它不是魔法开关。要用好 RTK,需要把 agent 的工作方式往 shell 命令靠一靠,并确认当前工具的 hook 是否真的生效。对 Codex、Claude Code、Gemini CLI、Cursor、Windsurf 这类场景来说,它更像一个值得测试的“上下文节流器”:不改变开发命令本身,但让 agent 读到更干净的结果。

记录并分享
使用 Hugo 构建
主题 StackJimmy 设计