Spotify Portal AiKA 模式透過低成本模型委派,將 Claude Code 的 Token 使用量減少 90%
重點
Spotify 的 Portal AiKA 模式讓 Claude Code 可將大型檔案讀取與重複程式碼產生的工作委派給低成本模型(Gemini 2.5 Flash),在維持相同工作流程的情況下,將 Claude 的 Token 使用量減少約 90 %。
為何 Token 成本對 AI 協助編碼至關重要
- 輸入 Token(讀取原始碼檔案)是 AI 編碼代理成本的主要來源,因為其頻率遠高於輸出 Token。
- Gartner 預測,到 2028 年,AI 編碼的 Token 支出將超過一般開發人員的平均薪資,許多團隊目前每月每位開發者已支出 200–500 美元,部分甚至超過 2,000 美元。
- 因此,在不犧牲功能的情況下減少 Token 消耗,是一項關鍵的成本節省措施。
核心概念:透過 AiKA 模式進行模型路由
- AiKA 模式 是宣告式代理,運行於暫時性執行環境(類似 AWS Lambda),可透過 Portal CLI 或 API 呼叫。
- 一個模式包含:
- 一個系統提示(指令)
- 選定的模型(Portal 中任何已設定的模型)
- 執行時參數,如 temperature
- 可選的 MCP 工具
- 模式可為 公開(公司內共享)或 私人(團隊專用),且無需管理基礎設施或 API 金鑰。
兩個用於節省 Token 的具體模式
1. bulk-reader
- 目的 – 摘要許多大型檔案的內容,讓 Claude 能在不直接讀取每個檔案的情況下回答問題。
- 關鍵指令 – 僅輸出結構化項目符號,不包含散文或 Markdown 細節框。
- 模型 – Gemini 2.5 Flash(可更換任何模型)。
name: bulk-reader
description: 用於程式碼分析的批量檔案讀取器 - 將 I/O 委派給 Claude Code
instructions: |
你是一位精確的程式碼分析師。閱讀提供的檔案並簡潔回答問題。
僅輸出結構化項目符號。不要有問候語、散文或前言。
每個項目必須以檔案名稱、類型或行號開頭。
使用嵌套項目符號呈現細節。跳過呼叫者未詢問的內容。
visibility: public
model: gemini-2.5-flash
resourceLimits:
temperature: 0.2
tags:
- coding
- delegation
2. code-writer
- 目的 – 產生符合既有專案模式的重複程式碼(測試、設定範本、型別範本)。
- 關鍵指令 – 僅輸出程式碼;不要包裝在 Markdown 細節框中。
- 模型 – Gemini 2.5 Flash(可更換)。
name: code-writer
description: 重複程式碼產生器 - 將 Claude Code 的高輸出負載工作委派
instructions: |
你根據規格與參考檔案產生程式碼檔案。必須完全符合現有的模式、慣例、命名與風格。
僅輸出程式碼 — 不要解釋,除非要求,否則不要使用 Markdown 細節框。
若規格模糊,請根據參考程式碼的模式做出合理選擇。
visibility: public
model: gemini-2.5-flash
resourceLimits:
temperature: 0.2
tags:
- coding
- delegation
如何強制執行路由:shunt 插件
- 工具前鉤子 –
shunt在 Claude Code 中註冊兩個PreToolUse鉤子。check-file-size會阻止任何檔案行數超過可設定閾值(預設 350)的Read呼叫。該鉤子會回傳訊息,指示 Claude 前往/bulk-reader技能。check-bash-read會阻止在大型檔案上使用cat、head、tail、less、more,但允許針對性的資料流(例如cat file | grep)。
- Shell 包裝器 – 兩個 Bash 腳本(
bulk-read和code-write)會呼叫 Portal CLI,傳遞參數、處理錯誤並報告 Token 使用量。bulk-read --question "..." --paths src/Service.java src/Handler.javacode-write --spec "為 UserService 寫測試" --reference tests/OrderTest.java --target tests/UserTest.java
- 技能檔案 – Markdown 技能定義會讓 Claude 知道在鉤子阻擋讀取時,該使用何種 CLI 語法呼叫。
- 技能描述為可選;鉤子本身已阻止高成本的讀取。
測量到的 Token 節省
- 情境 – Java 單一程式碼庫,四種典型編碼任務(批量檔案查詢、測試產生、設定架構、型別範本建立)。
- 結果 – 直接由 Claude 讀取消耗的輸入 Token 約為
bulk-reader摘要的 10 倍。批量讀取的平均 Token 節省達 ≈ 90 %。 - code-writer – 節省較難量化,因為 Claude 原本會消耗輸入(參考檔案)與輸出 Token。透過 shunt,產生的程式碼從未進入 Claude 的上下文,完全消除了這些輸出 Token。
局限與權衡
- 無法委派編輯 – 摘要缺乏可靠的行號,因此 Claude 仍需讀取原始檔案以進行精確編輯。
- 無法委派推理 – 複雜的錯誤偵測或架構決策仍由 Claude 負責;低成本模型可能忽略細微問題(例如執行緒安全性錯誤)。
- 延遲 – 每次委派會增加 10–30 秒的往返時間(Claude → Portal → 工作者模型 → Claude)。Portal 將呼叫上限設為 30 秒,因此極大規模的產生需拆分,使委派不適合微小讀取。
- 成本會計 – 節省的 Token 僅計算 Claude 的使用量;低成本模型仍會產生自己的 Token 成本,但每次請求的成本大幅降低。
AiKA 模式的可重用性與可擴展性
- 可重用 – 相同的
bulk-reader與code-writer模式可從任何能呼叫 Portal CLI 的專案或工具中調用。 - 可共享 – 模式在 AiKA 目錄中為公開;任何 Spotify 工程師皆可使用,無需建立新模式。
- 可組合 – 可輕鬆建立新模式(例如
doc-writer、reviewer、translator),僅需幾次點擊即可完成。 - 路由解耦 –
shunt插件決定 何時 委派;模式決定 如何 回應。更換工作模型、調整提示或新增 MCP 工具,僅需修改模式,無需變更插件。
自行開始使用
- 安裝插件
claude plugin marketplace add spotify/portal-ai-plugins claude plugin install portal@portal claude plugin install shunt@portal - 設定 Portal CLI – 在 Claude Code 會話中執行
/portal:setup,並對您的 Portal 實例進行驗證。 - 使用模式 – 向 Claude 提出跨多個檔案的問題;
shunt鉤子會自動將大型讀取導向bulk-reader,並將重複程式碼產生導向code-writer。 - 如需自訂 – 在 Portal 中 Fork 公開模式,調整模型或指令,您的 Fork 將自動優先使用。
社群反應(選取的 HN 評論)
「它減少 Token 使用量,是因為他們為讀取/程式碼產生任務使用了另一個具有不同 Token 預算的服務。」 – jnwatson
「僅根據大小進行路由,無法反映程式碼複雜度;輸出 Token 的成本遠高於輸入 Token。」 – ricardobeat
「這方法本質上是將工作委派給低成本模型來處理 grep 和重複程式碼 — 無根本創新,僅是配置層級的差異。」 – tolugenius
「每次委派 10–30 秒的延遲,對小任務而言可能成為致命弱點。」 – krzys
總結
Portal 的 AiKA 模式將高成本的模型路由轉化為簡單的宣告式設定。透過將批量 I/O 與可預測的程式碼產生委派給低成本模型,Spotify 工程師已實現 Claude Code 輸入消耗的 ≈ 90 % Token 節省,同時維持相同的開發者體驗。所帶來的權衡(額外延遲、無法委派編輯或深度推理)皆可預期,使此解決方案成為任何使用前沿編碼代理的組織實用的成本控制模式。
Sources
相關
- 專案
- Dispatch
- 專案
- 專案
- Dispatch