現況:實作已改為 四池一魂(短期 200→濃縮 50 進長期、長期 100→核心 5、核心 20→靈魂 1),答覆結構為 當前1+靈魂1+核心2+長期3+短期5,並帶最近 N 輪對話上下文(N 由
CHATMERY_RECENT_TURNS設定,預設 20)。詳見 記憶階層—四池一魂提案。
- 短期記憶:每條立即入池、每條立即可被檢索。
- 提煉時機:累積 20 條短期記憶後,做一次萃取成長期記憶。
- 生成答覆時:LLM 看到的 context = 當前提煉(長期) + 短期檢索 + 長期檢索 來生成答覆。
| 項目 | 目前實作 | 是否已符合 |
|---|---|---|
| 短期每條入池 | 每輪對話結束後 deconstructAndSave 抽一筆事實 → AddSessionFact 加入 sessionFacts |
✅ 已是每條入池 |
| 短期每條可檢索 | SessionHits(userText, K) 對 sessionFacts 做語意/關鍵字檢索,取 top-K |
✅ 入池即可被檢索 |
| 滿 N 條才提煉 | RefineRolloverLimit(你 tuning 設 5)→ 滿 N 條時取一批送模型提煉,寫入長期 |
|
| 答覆用長期+短期 | longTerm := SearchPool(...)、sessionHits := SessionHits(...),兩者都放進 ## 記憶 區塊給 LLM |
✅ 已是「長期檢索 + 短期檢索」 |
名詞對齊:
- 當前提煉 = 過去已提煉進長期池的內容 → 就是 長期檢索(
SearchPool)。 - 所以「當前提煉 + 短期檢索 + 長期檢索」= 長期檢索(同一池) + 短期檢索,也就是現在 prompt 裡的
[長期]與[當前]。
-
維持「每條短期立即入池、立即可檢索」
這部分邏輯不用改,目前就是如此。 -
提煉改為 20 條觸發一次
- 在
chatmery.tuning把CHATMERY_REFINE_ROLLOVER=5改為 20。 - 必要時可把
CHATMERY_REFINE_BATCH_MAX調高(例如 15),讓一次提煉涵蓋較多短期條目,長期記憶較飽滿。
- 在
-
答覆生成 = 長期檢索 + 短期檢索
已符合:longTerm+sessionHits一起注入## 記憶,無須改架構;若你希望,可在程式裡加註「答覆 = 長期檢索 + 短期檢索」方便之後對齊文件。 -
短期檢索量
若希望「當下對話」多一點近期脈絡,可把CHATMERY_MEMORY_SESSION_K調高(例如 5~10),讓短期檢索多取幾條進 prompt。
你的設計與目前架構一致;主要變更是:短期累積 20 條再萃取成長期一次,其餘(每條入池、每條可檢索、答覆用長期+短期)都已具備。建議改 tuning 為 REFINE_ROLLOVER=20,並視需要調高 REFINE_BATCH_MAX 與 MEMORY_SESSION_K。