Prompt Harness
提示詞和緩存的微妙關係
KV Cache 的規則極其簡單:前綴一模一樣就命中,差一個字就全部重算。所以,往 System Prompt 裏插入任何動態內容,都可能讓緩存永遠打不中。
指紋變了 = 緩存作廢
每次請求,系統會對 System Prompt 算一個指紋(hash)
System: 你是助手。當前時間: 14:35:22
→
a3f7c2
MISS
System: 你是助手。當前時間: 14:35:23
→
b8e1d9
MISS
System: 你是助手。當前時間: 14:35:24
→
c4a2f6
MISS
每一秒時間不同 → 指紋不同 → 緩存永遠命不中 → 每次都要從頭算 → 成本翻倍。
這不只是時間戳的問題:任何動態內容插在 System Prompt 裏都有同樣效果。
Skill 的注入方式也影響緩存
把 Skill 插進 System
[System]
你是 AI 助手...
[當前 Skill: 內容創作]
觸發詞:幫我寫...
步驟:1. 確認需求...
---
[User] 幫我寫篇文章
切換 Skill 時 System 變了 → 緩存失效
~20%
Skill 作為獨立消息追加
[System]
你是 AI 助手...
---
[Assistant/Skill 消息]
當前 Skill: 內容創作
步驟:1. 確認需求...
---
[User] 幫我寫篇文章
System 永遠不變 → 前綴緩存始終命中
~90%
模擬:10 次請求的緩存表現
緩存命中模擬器
假設 10 次請求中有 3 次切換了不同的 Skill。觀察兩種注入方式的緩存差異:
命中率:—
回顧課程 8-3:我們之前講過動態時間戳是最貴的反模式。這一課的結論更廣:不只是時間戳,所有動態注入到 System Prompt 的內容,都是緩存殺手。Skill、用戶 ID、Session 標記…任何變化的東西,都不該出現在前綴裏。
KV Cache 的規則很簡單:前綴一樣就命中。所以,別動前綴。把所有可能變化的內容(Skill、上下文、時間)放到 System Prompt 之後,讓前綴永遠穩定。