AI 角色「會聊天」不等於「記得你」:記憶、狀態與劇情後果的三層設計
區分對話記憶、人物關係狀態和劇情後果,設計真正能記住玩家並影響未來的 AI 角色。

開篇導讀
能接住上一句話只是上下文;能提起舊偏好才是記憶;只有舊互動改變今天能發生什麼,角色才擁有劇情狀態。把三者混在一起,會造成「說得像記得,行動卻完全遺忘」。
第一層:對話記憶
保存近期主題、使用者稱呼、穩定偏好和明確承諾,減少重複。不要永久保存全部聊天;使用者應能查看、糾正和刪除記憶,敏感資訊應有更嚴格的界線。
第二層:人物與關係狀態
把信任、戒備、親密或債務明確建模。與其保存「使用者是好人」,不如記錄「角色親眼見使用者履行承諾,trust +1」,讓狀態來源可追溯。
第三層:劇情後果
劇情狀態決定事件是否發生、資源是否仍在、承諾能否撤回和哪些節點可進入。核心狀態應由規則管理,不能讓生成模型隨口改寫。
例如使用者交出證據:對話層記住討論,關係層改變雙方信任,劇情層記錄證據不再持有並關閉「出示證據」。三層共同運作,後果才可信。
安全寫入流程
讀取目前狀態,檢索本輪必要記憶,生成受角色目標約束的回應,提出候選記憶與狀態變化,再由規則驗證後寫回。模型不應直接讀取全部使用者資料或自行宣告核心事件成立。
memory: {fact, source, confidence, created_at, expires_at}
relationship: {character_id, dimension, value, reason}
story_state: {event_id, status, evidence, version}
會聊天帶來新鮮感,會記得帶來關係感,讓記憶改變後續機會才帶來故事感。
什麼內容值得長期記住
適合長期保存的是穩定偏好、明確承諾、共同經歷和使用者主動要求記住的事實。一次性情緒、模型對性格的推斷、未經確認的敏感資訊,不應自動進入長期記憶。
每條記憶包含來源、可信度、時間和到期規則。使用者後來明確糾正時,新事實應覆寫或標記衝突,而不是讓模型隨機選擇版本。
關係狀態不能只有一個好感度
角色可以喜歡玩家,卻不信任他保守秘密;可以尊重能力,卻害怕他的做法。至少把與故事有關的維度分開,例如信任、親密、戒備和債務。維度不宜過多,每一項都要有明確的寫入與讀取。
狀態變化還應有理由。trust +1 必須關聯履行承諾或提供證據,而不是因為模型生成了一句友好對白。這樣團隊才能除錯,使用者也能理解後果。
劇情節點怎樣讀取記憶
記憶本身不會產生故事,節點條件才會。某角色記得玩家救過他,可以在危機中開放援助;記得玩家洩露秘密,則可能拒絕分享線索。讀取時還要檢查目前事件和立場,避免一條舊記憶永久控制所有場景。
衝突記憶和遺忘
不同角色可以對同一事件擁有不同版本,系統不應為了統一記憶抹去敘事衝突。同一角色的記憶也可能衰減,但關鍵承諾和劇情事實需要確實保留。遺忘應由產品規則控制,不能依賴上下文視窗偶然遺失。
使用者控制與隱私
使用者應能查看系統記住了什麼、糾正錯誤、刪除不希望保存的內容,並知道刪除是否影響劇情狀態。對話紀錄、長期記憶和劇情狀態的保留期限可能不同,介面應分別說明。
敏感資料只在完成明確功能所需範圍內處理。記憶越多不等於關係越真實,確信地記錯反而更傷信任。
怎樣測試記憶型角色
測試即時複述、跨工作階段回想、糾錯、刪除、衝突事實、到期和劇情讀取。還要注入錯誤候選記憶,確認驗證器不會寫入;關閉模型服務,確認核心劇情仍能正確運作。
最終驗收不是角色能說出多少舊細節,而是它只記住應該記住的內容,在正確時機影響行動,並允許使用者擁有可理解的控制。
一次記憶寫入的完整例子
玩家在第三章拒絕公開同伴的秘密。系統不應保存整段原始對話,而應寫入結構化事件:對象、行為「保護秘密」、發生章節、同伴是否知情、可信度和到期條件。後續同伴得知此事時,提高的可能是信任而非親密;若無人知道,關係不應憑空變化。
刪除或更正記憶時,同時處理摘要、向量索引、關係狀態和快取,避免介面顯示已刪除,角色仍在對白中引用。測試者應能查看系統記住的大類資訊、關閉長期記憶,並驗證新工作階段不會繼續呼叫已撤回內容。
上線監控關注錯誤回憶、過度重複、敏感資訊留存和跨角色串線,而不是只統計命中率。一次被正確忘記的資訊,可能比十次準確複述更能建立信任。


