<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>RTK on KnightLi的博客</title>
        <link>https://knightli.com/zh-tw/tags/rtk/</link>
        <description>Recent content in RTK on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Wed, 27 May 2026 13:52:01 +0800</lastBuildDate><atom:link href="https://knightli.com/zh-tw/tags/rtk/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>RTK：給 AI 編程代理省 token 的命令列代理工具</title>
        <link>https://knightli.com/zh-tw/2026/05/27/rtk-ai-cli-proxy-token-savings/</link>
        <pubDate>Wed, 27 May 2026 13:52:01 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/27/rtk-ai-cli-proxy-token-savings/</guid>
        <description>&lt;p&gt;&lt;code&gt;rtk-ai/rtk&lt;/code&gt; 是一個面向 AI 編程代理的命令列代理工具。它的思路很直接：很多 agent 在開發過程中會頻繁呼叫 &lt;code&gt;ls&lt;/code&gt;、&lt;code&gt;cat&lt;/code&gt;、&lt;code&gt;grep&lt;/code&gt;、&lt;code&gt;git status&lt;/code&gt;、&lt;code&gt;git diff&lt;/code&gt;、測試命令和建置命令，而這些命令的原始輸出經常又長又重複。RTK 會在命令輸出進入 LLM 上下文之前先做過濾和壓縮，讓模型看到更短、更有用的結果。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/rtk-ai/rtk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;rtk-ai/rtk&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;它解決的是什麼問題&#34;&gt;它解決的是什麼問題
&lt;/h2&gt;&lt;p&gt;AI 編程工具真正貴的不只是模型呼叫次數，還有上下文裡被塞進去的無效資訊。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ls -la&lt;/code&gt; 可能輸出大量權限、時間和無關檔案。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git diff&lt;/code&gt; 可能夾雜很多重複上下文。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pytest&lt;/code&gt;、&lt;code&gt;cargo test&lt;/code&gt;、&lt;code&gt;npm test&lt;/code&gt; 失敗時，最重要的是失敗用例和錯誤堆疊，而不是所有通過項。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker ps&lt;/code&gt;、&lt;code&gt;kubectl pods&lt;/code&gt;、&lt;code&gt;aws&lt;/code&gt; 命令往往欄位很多，但 agent 只需要少數關鍵資訊。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些輸出如果原樣進入模型上下文，會快速消耗 token。RTK 的目標不是替代這些命令，而是在它們和 AI 編程代理之間加一層「壓縮代理」。&lt;/p&gt;
&lt;h2 id=&#34;rtk-的基本工作方式&#34;&gt;RTK 的基本工作方式
&lt;/h2&gt;&lt;p&gt;RTK README 裡給出的定位是：它會在命令輸出到達 LLM context 之前，對結果做過濾和壓縮。它是一個 Rust 單檔二進位程式，支援大量常見開發命令，並強調低額外開銷。&lt;/p&gt;
&lt;p&gt;它主要做四類處理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Smart Filtering&lt;/strong&gt;：去掉註解、空白、樣板內容和低價值雜訊。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grouping&lt;/strong&gt;：把相似項目聚合起來，例如按目錄、錯誤類型或狀態分組。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Truncation&lt;/strong&gt;：保留關鍵上下文，截斷重複或不重要的部分。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deduplication&lt;/strong&gt;：把重複日誌折疊成更短的計數表達。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;從 agent 的角度看，命令仍然是熟悉的開發命令；變化在於返回給模型的結果更短。&lt;/p&gt;
&lt;h2 id=&#34;支援哪些命令&#34;&gt;支援哪些命令
&lt;/h2&gt;&lt;p&gt;RTK 覆蓋的命令範圍比較偏「日常開發現場」：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;檔案查看：&lt;code&gt;rtk ls&lt;/code&gt;、&lt;code&gt;rtk read&lt;/code&gt;、&lt;code&gt;rtk find&lt;/code&gt;、&lt;code&gt;rtk grep&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Git：&lt;code&gt;rtk git status&lt;/code&gt;、&lt;code&gt;rtk git log&lt;/code&gt;、&lt;code&gt;rtk git diff&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;GitHub CLI：&lt;code&gt;rtk gh pr list&lt;/code&gt;、&lt;code&gt;rtk gh pr view&lt;/code&gt;、&lt;code&gt;rtk gh issue list&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;測試命令：&lt;code&gt;rtk pytest&lt;/code&gt;、&lt;code&gt;rtk go test&lt;/code&gt;、&lt;code&gt;rtk cargo test&lt;/code&gt;、&lt;code&gt;rtk vitest&lt;/code&gt;、&lt;code&gt;rtk playwright test&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;建置和 lint：&lt;code&gt;rtk lint&lt;/code&gt;、&lt;code&gt;rtk tsc&lt;/code&gt;、&lt;code&gt;rtk next build&lt;/code&gt;、&lt;code&gt;rtk cargo clippy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;容器和雲命令：&lt;code&gt;rtk docker ps&lt;/code&gt;、&lt;code&gt;rtk docker logs&lt;/code&gt;、&lt;code&gt;rtk kubectl pods&lt;/code&gt;、&lt;code&gt;rtk aws sts get-caller-identity&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;資料和日誌：&lt;code&gt;rtk json&lt;/code&gt;、&lt;code&gt;rtk deps&lt;/code&gt;、&lt;code&gt;rtk env&lt;/code&gt;、&lt;code&gt;rtk log&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類工具最適合 agent 高頻讀命令輸出的場景。它不負責替你寫程式碼，而是讓 agent 少讀雜訊。&lt;/p&gt;
&lt;h2 id=&#34;安裝和接入方式&#34;&gt;安裝和接入方式
&lt;/h2&gt;&lt;p&gt;README 給了幾種安裝方式。&lt;/p&gt;
&lt;p&gt;Homebrew：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install rtk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Linux/macOS 快速安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Cargo：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install --git https://github.com/rtk-ai/rtk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安裝後可以先檢查版本和統計資訊：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk gain
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接入 AI 編程工具時，可以用初始化命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk init -g
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk init -g --gemini
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk init -g --codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk init -g --agent cursor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk init --agent windsurf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk init --agent cline
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;初始化後需要重啟對應的 AI 工具。對於支援 hook 的 agent，Bash 命令會在執行前被重寫，例如把 &lt;code&gt;git status&lt;/code&gt; 變成 &lt;code&gt;rtk git status&lt;/code&gt;，讓 agent 收到壓縮後的輸出。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意什麼&#34;&gt;使用時要注意什麼
&lt;/h2&gt;&lt;p&gt;RTK 的收益取決於 agent 是否真的透過 shell 命令讀取資訊。&lt;/p&gt;
&lt;p&gt;README 裡特別提醒：像 Claude Code 的內建 &lt;code&gt;Read&lt;/code&gt;、&lt;code&gt;Grep&lt;/code&gt;、&lt;code&gt;Glob&lt;/code&gt; 這類工具不經過 Bash hook，因此不會自動被 RTK 改寫。要讓 RTK 介入，需要使用 shell 命令，例如 &lt;code&gt;cat&lt;/code&gt;、&lt;code&gt;head&lt;/code&gt;、&lt;code&gt;tail&lt;/code&gt;、&lt;code&gt;rg&lt;/code&gt;、&lt;code&gt;grep&lt;/code&gt;、&lt;code&gt;find&lt;/code&gt;，或者直接呼叫 &lt;code&gt;rtk read&lt;/code&gt;、&lt;code&gt;rtk grep&lt;/code&gt;、&lt;code&gt;rtk find&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這點很關鍵。RTK 不是全域透明地壓縮所有 agent I/O，它更像是 shell 命令層面的代理。&lt;/p&gt;
&lt;p&gt;Windows 使用者也要注意，README 建議不要直接雙擊 &lt;code&gt;rtk.exe&lt;/code&gt;，而是把它放到 PATH 裡，透過 Command Prompt、PowerShell 或 Windows Terminal 使用。它也提到，如果想獲得完整 hook 體驗，WSL 會更自然。&lt;/p&gt;
&lt;h2 id=&#34;適合誰用&#34;&gt;適合誰用
&lt;/h2&gt;&lt;p&gt;RTK 適合三類人：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;重度 AI 編程使用者&lt;/strong&gt;：每天讓 agent 跑很多 &lt;code&gt;git&lt;/code&gt;、&lt;code&gt;rg&lt;/code&gt;、測試和建置命令。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;大倉庫使用者&lt;/strong&gt;：命令輸出動輒幾百行，agent 經常被無關上下文淹沒。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;關心 token 成本和上下文窗口的人&lt;/strong&gt;：希望模型把注意力放在失敗、變更和關鍵檔案上。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你的專案很小，或者 agent 主要透過 IDE 內建工具讀取檔案，RTK 的體感收益可能沒那麼明顯。它真正發力的地方，是命令列輸出又長又頻繁的開發流。&lt;/p&gt;
&lt;h2 id=&#34;我的判斷&#34;&gt;我的判斷
&lt;/h2&gt;&lt;p&gt;RTK 的方向很實用。現在很多 AI 編程工作流都在強調更強的模型、更大的上下文、更長的任務，但開發現場還有一個樸素問題：agent 經常讀了太多沒必要讀的東西。&lt;/p&gt;
&lt;p&gt;把命令輸出先壓縮，再交給模型，能減少 token 消耗，也能降低模型被雜訊帶偏的機率。&lt;/p&gt;
&lt;p&gt;不過它不是魔法開關。要用好 RTK，需要把 agent 的工作方式往 shell 命令靠一靠，並確認目前工具的 hook 是否真的生效。對 Codex、Claude Code、Gemini CLI、Cursor、Windsurf 這類場景來說，它更像一個值得測試的「上下文節流器」：不改變開發命令本身，但讓 agent 讀到更乾淨的結果。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
