開發圈常說一句話:「快取控制一切」(Cache Rules Everything Around Me),來形容快取對效能優化的重要性。對Claude Code這種需要長時間執行任務的AI Agent系統來說,這句話更像是設計原則。

Claude Code核心工程師Thariq Shihipar最近就分享5大心法,說明他們如何透過提示詞快取(Prompt Caching)優化系統效能、同時壓低成本。他甚至透露,Claude Code團隊非常重視提示詞快取,不只持續監控,要是發現快取命中率下降,還會視為緊急系統事故(SEV)處理。

為什麼長對話Agent特別需要快取?

首先,像Claude Code這類程式開發型Agent,往往需要長時間對話、多次呼叫工具,也要反覆讀取和修改整個專案。長時間下來,對話內容可能累積數萬、甚至數十萬個Token。

如果每一輪對話都從頭運算整段系統提示詞與工具定義,成本就非常可觀。因此,提示詞快取成了省錢關鍵,能讓那些「不會改變的部分」算一次就好。

心法1:前綴匹配(Prefix Match)

簡單來說,提示詞快取是把模型已經處理過的前半段內容,其運算狀態先存起來。只要下次請求(Request)的開頭內容和之前完全相同,系統就可以直接重用已經算好的狀態,不必重新推理整個模型。

這背後的核心機制,就是前綴匹配(Prefix Match)。也就是說,只要請求從開頭到某個位置完全一致,就能命中快取;但只要前面有任何更動,後面的內容就得重新運算。

為盡可能減少重新運算,Claude Code開發團隊遵守一個原則:越不會變動的內容,放越前面;並根據這個原則,將提示詞嚴格分層,依序為:

  • 最優先:固定的系統提示詞(System Prompt)和工具清單
  • 次之:專案層級規範
  • 再次之:Session狀態
  • 最後:對話內容

其中,系統提示詞是指模型在整段對話開始前,先收到的一段隱藏指令,用來設定角色與規則。工具則指模型可以呼叫的功能,例如搜尋檔案、修改程式、執行測試、進入規畫模式等,其定義(Schema)也會放進提示詞的前半段。

Thariq Shihipar提醒,在系統提示詞加入當下的時間,或工具順序不固定,都可能讓整段快取失效,這是開發團隊需要避免的。

心法2:用對話訊息更新狀態,而不是改系統提示詞

再來,當時間改變或檔案更新時,開發者可能會去修改系統提示詞,但這麼做會破壞快取前綴。

因此,Claude Code團隊的做法則是,把更新資訊放在下一輪對話中,例如加入訊息標籤<system-reminder>,來讓模型知道最新狀態,同時保留既有快取。

心法3:不要中途切換模型

Thariq Shihipar點出,快取通常與模型綁定,如果一段對話已經在某個模型累積了大量上下文,中途切換到另一個模型,就得重新建立整段快取。

結果可能就是,為了省錢換模型,反而花更多錢。他建議,如果真的要用不同模型,應該要透過子代理(Sub-agent)來處理,也就是讓主模型呼叫一個子代理,來保持主對話的快取前綴,而不是直接切換模型。

心法4:工具清單要固定

為了讓提示詞快取不失效,工具定義也不能隨意更動。

Claude Code團隊採取幾個策略,首先是工具清單全程固定,也就是不在中途新增/移除工具、更改工具順序或參數,不然整段快取會全部重算。

再來是把「模式」當成一個工具。以規畫模式(Plan Mode)為例,Claude Code並未修改系統提示詞,或刪除某些工具來切換模式,而是直接把「進入規畫模式」這件事設計成一個工具。

也就是說,當Agent需要先規畫再動手時,它會主動呼叫EnterPlanMode工具。接著,系統回傳一段說明,告訴模型目前已進入規畫狀態,例如只能瀏覽程式碼、暫時不能修改檔案。等規畫完成後,再呼叫ExitPlanMode工具,回到一般模式。

在這個過程中,工具清單和系統提示詞都沒改變,模式的轉換只發生在對話裡。這樣既保留快取,又讓Agent能自主切換模式。

第三個策略則是,不用「刪工具」來控制模型,而是用訊息、狀態標記、工具本身等來控制模型,讓前綴保持固定。

不只如此,要是模型使用大量工具,比如載入10多個MCP工具,若將所有完整定義都放入提示詞,會消耗大量Token、增加成本。因此,Claude Code團隊採用延遲載入(Defer loading)策略,靠先提供輕量版工具定義,只給工具名稱(Stub)等基本資訊;當模型真的決定要用這個工具時,再載入完整的定義。這樣既不破壞快取,又能控制Token用量。

心法5:壓縮上下文時,也要維持前綴一致

當對話超出模型的上下文窗口,就要進行摘要(Compaction)。但若為了摘要而另開請求、使用不同的系統提示詞或工具設定,原本的快取就沒辦法重用。

因此,Claude Code團隊採用「快取安全分叉」(Cache-Safe Forking)方法,在執行摘要等額外任務時,仍使用與原對話完全一樣的前綴,只在最後新增摘要指令。這樣可以最大程度重用既有快取,也能避免成本暴增。

提示詞快取成為營運指標

Claude Code團隊強調,提示詞快取不只是技術細節,而是直接影響成本、回應速度,甚至訂閱方案設計的關鍵。

Thariq Shihipar坦言,快取命中率的些微變化,都可能對整體營運帶來重大影響。也因此,他們將快取命中率納入監控指標,並在異常時立即處理。這也意味著,對開發Agent產品的企業來說,提示詞快取不再是優化技巧,而是架構設計中不可忽視的一環。

熱門新聞

Advertisement