Skip to content

Latest commit

 

History

History
48 lines (31 loc) · 2.85 KB

File metadata and controls

48 lines (31 loc) · 2.85 KB

記憶模式 — 設計對齊與建議

現況:實作已改為 四池一魂(短期 200→濃縮 50 進長期、長期 100→核心 5、核心 20→靈魂 1),答覆結構為 當前1+靈魂1+核心2+長期3+短期5,並帶最近 N 輪對話上下文(N 由 CHATMERY_RECENT_TURNS 設定,預設 20)。詳見 記憶階層—四池一魂提案

你的目標(當時)

  1. 短期記憶:每條立即入池、每條立即可被檢索。
  2. 提煉時機:累積 20 條短期記憶後,做一次萃取成長期記憶。
  3. 生成答覆時:LLM 看到的 context = 當前提煉(長期) + 短期檢索 + 長期檢索 來生成答覆。

與目前實作的對照

項目 目前實作 是否已符合
短期每條入池 每輪對話結束後 deconstructAndSave 抽一筆事實 → AddSessionFact 加入 sessionFacts ✅ 已是每條入池
短期每條可檢索 SessionHits(userText, K)sessionFacts 做語意/關鍵字檢索,取 top-K ✅ 入池即可被檢索
滿 N 條才提煉 RefineRolloverLimit(你 tuning 設 5)→ 滿 N 條時取一批送模型提煉,寫入長期 ⚠️ 改為 20 即符合
答覆用長期+短期 longTerm := SearchPool(...)sessionHits := SessionHits(...),兩者都放進 ## 記憶 區塊給 LLM ✅ 已是「長期檢索 + 短期檢索」

名詞對齊:

  • 當前提煉 = 過去已提煉進長期池的內容 → 就是 長期檢索SearchPool)。
  • 所以「當前提煉 + 短期檢索 + 長期檢索」= 長期檢索(同一池) + 短期檢索,也就是現在 prompt 裡的 [長期][當前]

建議

  1. 維持「每條短期立即入池、立即可檢索」
    這部分邏輯不用改,目前就是如此。

  2. 提煉改為 20 條觸發一次

    • chatmery.tuningCHATMERY_REFINE_ROLLOVER=5 改為 20
    • 必要時可把 CHATMERY_REFINE_BATCH_MAX 調高(例如 15),讓一次提煉涵蓋較多短期條目,長期記憶較飽滿。
  3. 答覆生成 = 長期檢索 + 短期檢索
    已符合:longTerm + sessionHits 一起注入 ## 記憶,無須改架構;若你希望,可在程式裡加註「答覆 = 長期檢索 + 短期檢索」方便之後對齊文件。

  4. 短期檢索量
    若希望「當下對話」多一點近期脈絡,可把 CHATMERY_MEMORY_SESSION_K 調高(例如 5~10),讓短期檢索多取幾條進 prompt。


小結

你的設計與目前架構一致;主要變更是:短期累積 20 條再萃取成長期一次,其餘(每條入池、每條可檢索、答覆用長期+短期)都已具備。建議改 tuning 為 REFINE_ROLLOVER=20,並視需要調高 REFINE_BATCH_MAXMEMORY_SESSION_K