🎯 什麼情境該想到我

當你「寫在系統提示裡的規則,對話一長模型就不理了;或想臨時改變 AI 的走向,又不想改掉整份設定」的時候。

⚙️ 怎麼用(步驟 / 公式)

為什麼會忘:模型對離生成點越近的內容越在意。系統提示放在最前面,對話一長就跟生成點隔了幾千 token,還落在 prompt 中段的低注意力區。

解法:把指令跟著聊天的尾巴走——插在「從最新一則往上數第 N 則」的位置,讓它跟生成點永遠只隔固定幾則訊息。

Message 1 (最舊)
Message 2
Message 3
  ← 注入點 (depth=4:之後還有 4 則)
Message 4
Message 5
Message 6
Message 7 (最新)
  1. 判斷該放哪:「是什麼」(角色定義、世界觀)放固定位置;「現在要怎樣」(氛圍、節奏、這段劇情的行為指引)才用深度注入。
  2. 選深度:從 depth 3–5 開始試(經驗推論,原文預設 depth=4)。depth=0(貼在最後一則之後)影響最強,但也最容易讓每句回覆都在呼應它(經驗推論)。
  3. 選頻率:interval 決定每幾則使用者訊息插一次,不必每輪都插。
  4. 選角色:用 system 最中性。用 user/assistant 時,模型可能把它當成真對話來回應或模仿(經驗推論)。另外,有些 API 對聊天中段的 system 訊息支援度不同,要實測。
  5. 疊加規則要明確:全域指令和角色專屬指令同時存在時,先決定是取代、放前面還是放後面(SillyTavern 的 replace / before / after)。

★ 把它做成通用框架:摘要、向量記憶、人設、臨時指引,其實都是「某個來源想往 prompt 塞一段字」。SillyTavern 讓每個來源用一個 key 註冊內容,並宣告位置(prompt 內/聊天中某深度/整個 prompt 之前/不自動放、由模板取用),統一交給組裝器處理。「誰要注入」和「注入到哪」解耦,新增一種記憶來源就不用改組裝流程。

同一深度有多筆時的做法:把聊天反轉(最新在前,陣列索引剛好等於 depth),同深度依 system → user → assistant 排好插入,再反轉回來。

機制細節 → Authors Note與深度注入

🧪 我實際套用的紀錄

  • (尚無)

⚠️ 注意 / 什麼時候不適用

  • 深度注入會跟著聊天被裁切(推論):預算不夠、從舊的砍起時,注入點的位置會移動;聊天全放不下時,它也沒地方放。
  • 多個來源擠在同一深度時,順序只看角色優先序,前後關係不一定是你要的。
  • 指令太強會喧賓奪主(經驗推論):回覆變成在呼應指令,失去對話的自然感。
  • 短對話用不到:系統提示離生成點還很近時,直接寫在系統提示就好。

🔗 相關工具