一個聊天機器人要「看起來記得你」,只有兩條路。一條是把上下文視窗開得很長 — 視窗一往前滑,前面的就沒了。另一條是把事情寫下來。
這一個是寫下來的那種。而比較少見的是後半句:它讓你讀你自己寫進去的東西。(先說清楚,這裡講的是 AI 的記性,跟手機的記憶體、記憶卡沒有關係。)
角色為什麼會跑偏
模型在兩則訊息之間是沒有記憶的。它看起來想得起來的每一件事,都是在提示詞裡重新送過去的。當一段對話長到塞不下,就一定有東西要被丟掉或壓縮,跑偏就是從那裡開始的:角色先是不記得你妹妹叫什麼,接著跟自己上禮拜講過的話打架,然後安安靜靜地變成另一個用同樣詞彙的人。
大多數產品的處理方式,是在背景默默做摘要。這招一直有效,直到摘要寫錯 — 然後它就會一直錯下去,因為你從來看不到它,也就沒辦法改。
實際被存下來的是什麼
一條一條短短的事實,隨著對話進行被抽出來。不是逐字稿,也不是一坨向量,是你讀得懂的句子。
它們同時被切成三層,而正是這個切法讓不同的故事不會互相滲進去:
- 分角色 — 這個角色知道的,另一個角色不會知道。
- 分話題 — 跟同一個角色開的不同話題,各自保有各自的記憶。
- 分人 — 你跟某個角色講的話,其他也在跟同一個角色聊天的人永遠看不到。
打開它、改掉它、刪掉它
記憶清單就是聊天設定裡的一個畫面。打開就看得到那些事實,一條一條排好。寫錯了就改;有一條根本不該被寫進去,就刪掉;如果你一條都不想要,把那段對話的記憶關掉,之後就不會再存任何東西。
聽起來是小事,但它把失敗的方式整個換掉了。一條錯的事實藏在看不見的摘要裡,會毒害之後的每一則回覆,而你只能猜角色到底怎麼了。同一條錯的事實排在清單上,就是五秒鐘改掉的一行字。
角色第一次把什麼寫下來的時候,你會被告知一次。不是每則訊息都提醒你 — 就那一次,讓你知道有這個機制,以及去哪裡找它。
什麼永遠不會被寫進去
每一條被抽出來的事實都會先過一道過濾器,把根本不該進記憶庫的東西剔掉:電子郵件地址、電話號碼、卡號、身分證字號這一類。
這是一道過濾器,不是對你打了什麼字的保證。它認得出樣式就擋得掉。真的卡號最安全的處理方式,仍然是不要傳給任何聊天機器人。
分支之後,記憶怎麼算
任何一則回覆都可以分支,然後兩條線都留著。分支的時候,新的那條會繼承母對話在那一刻擁有的記憶 — 所以它不是從零開始,而是從同一段共同的過去出發,然後各走各的。
分支的意義就在這裡:同一段關係的兩個版本,而不是兩個陌生人。
記憶還會跟去哪裡
如果一個角色變成了它自己的 Telegram 機器人,記憶在那裡的運作方式跟主聊天裡完全一樣 — 一樣分角色、分話題、分人。跑去跟你的機器人聊天的人,會和那個角色長出他自己的一份記憶,而那份是他一個人的。