Ai

RTK:用 CLI Proxy 降低 AI Agent 的 Token 消耗

RTK 是什麼

RTK 全名是 Rust Token Killer。

它不是 prompt 壓縮器,也不是把文字翻譯成另一種格式。

RTK 的實際定位是 CLI proxy。

AI Agent 執行開發指令時,RTK 會先接住輸出內容,移除雜訊、重複行、過長內容與低價值資訊,再把壓縮後的結果丟回 Agent context。

典型流程:

AI Agent
→ rtk git status
→ git status
→ RTK 壓縮輸出
→ 回傳給 AI Agent

目標很直接:減少 LLM token 消耗。

安裝

macOS 建議用 Homebrew:

brew install rtk

Linux 或 macOS 也可以用安裝腳本:

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

如果 rtk 不在 PATH,補上:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

也可以用 Cargo 從 GitHub 安裝:

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

檢查安裝結果:

rtk --version
rtk gain

初始化 Agent 整合

RTK 支援多種 AI coding 工具。

Claude Code / GitHub Copilot:

rtk init -g

Gemini CLI:

rtk init -g --gemini

Codex:

rtk init -g --codex

Cursor:

rtk init -g --agent cursor

Windsurf:

rtk init --agent windsurf

Cline / Roo Code:

rtk init --agent cline

初始化後重啟 AI 工具。

之後 Agent 執行 shell 指令時,RTK 會自動介入。例如:

git status

會被改寫成:

rtk git status

基本使用

也可以手動呼叫 RTK。

檢查 Git 狀態:

rtk git status

看 Git diff:

rtk git diff

讀檔案:

rtk read src/main.rs

用 aggressive 模式讀檔,只保留更精簡的結構:

rtk read src/main.rs -l aggressive

搜尋程式碼:

rtk grep "pattern" .

看目錄:

rtk ls .

執行測試,只保留失敗重點:

rtk pytest
rtk cargo test
rtk npm test

看 Docker 狀態:

rtk docker ps
rtk docker logs <container>

監視 RTK 狀態

RTK 內建 token 節省統計。

查看總體節省量:

rtk gain

看圖表:

rtk gain --graph

看近期指令紀錄:

rtk gain --history

看每日統計:

rtk gain --daily

輸出 JSON,方便丟到 dashboard:

rtk gain --all --format json

找出還沒被 RTK 攔到的節省機會:

rtk discover

看最近 session 的 RTK 採用狀況:

rtk session

如何調整

RTK 最常調的不是模型參數,而是輸出精簡程度。

使用超精簡模式:

rtk -u git status

-u 會啟用 ultra-compact 輸出,適合 Agent 自己讀,不適合人類閱讀。

需要除錯時提高詳細程度:

rtk -v git status
rtk -vv git status
rtk -vvv git status

針對單一檔案讀取,可用 aggressive 模式:

rtk read src/main.rs -l aggressive

這種模式適合讓 Agent 快速掌握結構,不適合做逐行 code review。

注意事項

RTK 主要攔截 shell 指令。

如果 AI 工具使用內建的 Read、Grep、Glob 類工具,這些呼叫不一定會經過 RTK。

要讓 RTK 生效,盡量讓 Agent 使用 shell 指令:

rtk read file.rs
rtk grep "keyword" .
rtk find "*.rs" .

不要期待 RTK 解決所有 context 問題。

它解的是「開發指令輸出太吵」這一段。

實戰判斷

RTK 適合這些場景:

  • git status
  • git diff
  • git log
  • ls
  • tree
  • grep
  • rg
  • pytest
  • cargo test
  • docker logs
  • kubectl logs

這些指令原始輸出常常很肥,但 Agent 真正需要的只有錯誤重點、檔案變更、狀態摘要。

RTK 的價值就在這裡:

不是讓模型變聰明。
是不要餵模型吃垃圾輸出。

問題本質

AI coding 的 token 浪費,很多不是發生在 prompt。

而是發生在工具輸出。

一個 git diff、一段測試 log、一串 Docker log,就足以把 context 塞滿。

RTK 的做法是把 CLI 輸出先過濾再餵給 Agent。

工程上這比事後要求模型「請簡短回答」有效。

因為垃圾資料沒有進 context,模型就不需要浪費 token 理解垃圾資料。