跳到內容

記憶

TomoriBot 有一套持久記憶系統,讓她能跨對話記住事實。這一頁談的是她知道什麼(事實、脈絡、文件)。至於她怎麼表現(個性、語氣),請看多個人格

從最永久到最短暫

層級是什麼持續多久
長期記憶(LTM)關於某位使用者或某個伺服器而儲存的事實、上傳的文件,以及制約永久,直到有人移除它。經過 /refresh、重新啟動,任何情況都還在
短期記憶(STM)她為某個頻道寫的摘要,加上幾則最近的訊息24 小時。可以跨頻道取得
對話紀錄她正在回覆的頻道裡最近的訊息只有這個頻道,而且只到它們滑出 /config > 行為 > 一般行為 的範圍為止(預設是最新 80 則訊息)。/refresh 會立刻截斷它

她在對話中看似「知道」的幾乎每一件事,其實只是最近的對話紀錄,這也是為什麼對話一長,她就好像忘了某則訊息。**只有長期記憶是永久的。**短期記憶介於中間:適合在不留下任何承諾的情況下,把某個場景帶過不同頻道,但它仍然會過期。

想知道她在任何一輪對話中實際拿到什麼,請看提示詞內部

長期記憶是她唯一永久保留的東西。它們不受 /refresh 影響,也不受重新啟動或搬到其他頻道影響。

長期記憶有兩種:

  • 個人記憶/personal memories):關於某位個別使用者的事實,例如「Amaori 喜歡貓」、「偏好深色模式」、「對花生過敏」。這些綁在身上,會跟著你到每個伺服器,但她只在你實際參與的對話中取用它們。
  • 伺服器記憶/memories):與整個伺服器相關的資訊,例如「遊戲之夜是每週五晚上 8 點」、「禁止張貼 NSFW」、「#general 是公告用頻道」。這些留在伺服器內,而且在該伺服器裡永遠都在她心上。

**記憶預設以人格為單位隔離。**每個人格(包括 alter)都保有自己的個人記憶與伺服器記憶,所以不同人格之間,她記不起另一個人格學過的事。唯一的例外是從 /personal memories 的全域頁面新增的個人記憶,那則記憶會專屬於你,並套用到每個人格。伺服器記憶沒有這種選項,每個人格的伺服器記憶集合永遠分開,即使在同一個伺服器裡也一樣。

/memories 瀏覽、新增、編輯、移除伺服器記憶,或把伺服器記憶搬進文件知識庫。/personal memories 管理綁在你身上的事實。記憶會一直保留,直到你移除它們。

在新的伺服器裡,非管理員成員建立、編輯或移除共用伺服器記憶的權限預設是關閉的。擁有 Manage Server 權限的成員隨時都保有存取權,管理員也可以透過 /moderation 的「成員存取」開放給其他成員。

長期記憶的產生方式正好只有兩種:

  1. 你自己存:用 /personal memories/memories
  2. 她自己存:當她判斷某件事值得留下時。

當她自己存了一則,她會發一則 embed 說她學到了某件事。**那則 embed 就是確認。**如果你告訴她某件事而沒有出現 embed,那就什麼都沒存下來:那仍然只是對話紀錄,所以對話一往前推進她就會失去它,換到別的頻道也不會帶著。

如果她不存你想留下的東西,你有三個選項,強制程度由低到高:

  • 直接請她記住。
  • /config > 行為 > 一般行為 加入提醒,或用提示詞內部裡其他任何會攜帶提示詞的指令(/config > 人格 > 進階、/config > 行為 > 一般行為、/config > 頻道 > 頻道覆寫)。尤其是脈絡備註,它位於她提示詞中比較低的位置,因此更有可能被確實執行。像*「值得記住的資訊,建議建立長期記憶」這樣簡單的一句通常就夠了。若要在不寫死可能隨供應商變動的名稱的前提下,指名實際的儲存記憶工具,請改用 {memory_tool} 提示詞巨集,例如「每當……時使用 {memory_tool}」*。
  • 自己用 /personal memories 存,這是保證有效的方法。

伺服器管理員可以用 /config > 權限 完全關掉她的自我儲存。

預設情況下她最多持有 100 則個人記憶100 則伺服器記憶。自架者可以用 .env 變數 MAX_PERSONAL_MEMORIESMAX_SERVER_MEMORIESMAX_MEMORY_LENGTH 調整。提高長度所消耗的脈絡遠比提高數量多,所以偏好更多則短記憶,而不是更少則長記憶。

這些數量是以人格為單位,不是以使用者或伺服器為單位。每個人格都保有自己的額度,所以一個跑四個人格的伺服器就有四份獨立的額度。你自己的全域個人記憶會計入每個人格的個人額度。

伺服器管理員可以用 RAG 給她要參考的文件。文件會被切成片段,並存成可搜尋的嵌入;回答時她會自動取回相關內容。在新的伺服器裡,文件管理同樣預設只開放給擁有 Manage Server 的成員;管理員可以透過 /moderation 的「成員存取」開放給成員。

需要嵌入模型,用 /config > 模型 > 切換模型 設定。請看供應商與模型/memories 裡的「文件」頁面提供人格範圍與伺服器範圍兩種選擇、即時的文件與片段數量、上傳、瀏覽文件,以及移除:

  • 上傳文字、PDF 或 Markdown 檔案作為伺服器知識。範圍決定它是只綁在這一個人格(預設),還是整個伺服器共享,供每個人格參考。
  • /learn history:把頻道紀錄萃取成可搜尋的知識。
  • 逐片段瀏覽已儲存的文件。伺服器管理員可以編輯個別片段、更新文件的頻道標籤,或刪除單一片段而不移除整份文件。
  • 直接從面板移除已儲存的文件或個別片段。

/learn history 匯入頻道紀錄時,prompt 選項會改變 TomoriBot 萃取記憶的方式:

  • 對話會從一般聊天中萃取獨立的事實。它會解析代名詞,並在提到日期或時間、或可推斷出日期時間時使用絕對時間戳。
  • 角色扮演會尋找場景、設定、關係與值得記住的事件,不會試著保留每個小橋段。
  • 角色內會以選定人格的視角萃取記憶,並以該人格的提示詞、屬性、既有記憶與相關文件作為脈絡。

匯入前會顯示提示詞,方便你依頻道或場景調整。

歷史匯入會存成文件,所以 /memories 也能對它們運作。

/conditioning 是一種以人格為單位、以伺服器為單位的記憶,會隨時間引導人格的行為。它比完整的屬性設定或系統提示詞更輕量。用它來強化某個角色在某個伺服器中應該怎麼表現。

每次 /reward/punish 都會被計數,但只有在你給它 reason 時,它才會變成她實際會依循的記憶,在她的提示詞中看起來像這樣:

## Rewarded Behaviors
Here are past things Tomori did that got rewarded for. Strive to do them again:
- [Tomori was fed by Amaori. Reason: `being extra helpful today` with `cookies`] (2 times)
## Punished Behaviors
Here are past things Tomori did that got punished for. Avoid doing them again:
- [Tomori was bonked by Amaori. Reason: `spamming pings after being told to stop`]

沒有 reason 的話,計數仍然會被記錄,但永遠不會出現在她的提示詞中。用 /conditioning remove 檢視或清除項目。

範圍會比其他機制更早限縮一切:伺服器記憶只會進入它自己伺服器的提示詞,個人記憶只在那位使用者出現在對話中時才會進入,而兩者都只對擁有它們的人格生效。在這個範圍之內,每一則記憶預設都會隨著每一次提示詞送出。標籤會進一步限縮,讓某則記憶只在出現關鍵字時生效,或只在某個頻道生效。用 /config > 行為 > 進階記憶 開啟。

  • 沒有關鍵字標籤的記憶一律有效(預設)。
  • 關鍵字標籤的記憶,只在關鍵字出現在可見脈絡中時才生效。
  • /tool prompt snapshot 查看目前有哪些記憶正在生效。
  • 帶有 #channel 標籤的記憶只在該頻道生效。
  • 頻道標籤會與關鍵字標籤合併作用。
  • 如果你使用文件知識庫(RAG),頻道標籤也會套用到文件與萃取出的歷史。

/help 中選擇 記憶,然後選 記憶標籤(進階),就能在 Discord 裡看到同樣的摘要。

TomoriBot 可以輕鬆讀取她正在對話的目前頻道訊息,但 STM 讓她能在不儲存實際長期記憶的情況下做到以下幾件事:

  1. 在脈絡中暫時強化頻道目前的場景與情境
  2. 暫時記住其他頻道或伺服器的對話

**她只記得自己參與過的對話。**她只在自己回覆時更新頻道的記憶,其他時候都不會,所以一個沒人跟她說話的熱鬧頻道不會留下任何痕跡。

每個頻道的 STM 預設在 24 小時後過期,而如果你用 /personal config 選擇退出,你的訊息也完全不會進入其中。

位置代表什麼
在伺服器裡每個頻道共用一份記憶,不是每個人一份。她不會個別記錄你的事情。
在私訊裡只有你的。
其他頻道她可以回想起同一個伺服器中其他幾個頻道的近期對話。
私人頻道任何用 /config > 頻道 > 頻道規則 設定的內容都會留在那裡,不會出現在別處。
其他伺服器永遠不會,除非你開啟 /personal configcrossserver。即使開啟,也只有你自己的對話會跟著你。
每個人格各自保有自己的記憶,所以切換人格就等於切換記憶。

每個頻道的記憶保存最近幾則訊息,加上一段她自己寫、並隨對話推進更新的簡短摘要。安靜幾個小時之後,它就會自行淡去。

指令功能
/config > 人格 > 記憶查看她為這個頻道保留的摘要
/config > 人格 > 記憶修正它,或自己寫
/personal config / /personal memories選擇加入跨伺服器回想,或清除你自己的
/refresh讓她立刻忘掉這個頻道
/config > 行為 > 進階記憶她多久更新一次,以及保留多少細節
/config > 行為 > 進階記憶把摘要換成最多 5 個有標籤的欄位(目前場景心情等)
/config > 行為 > 進階記憶改寫她被要求保留記憶的方式
/memories從單一管理面板檢視並選擇性清除生效中的伺服器項目
/config > 權限讓私人頻道的記憶能出現在別處
/config > 權限開啟或關閉這項功能(已儲存的記憶不論如何都會保留)

任何人都可以執行 /config > 人格 > 記憶、/personal config/personal memories。其餘需要管理伺服器權限。

工作區管理員可以從 /config行為進階記憶 調整短期記憶。這些設定會套用到工作區中生效的 STM 紀錄:

  • 更新頻率控制兩次更新提醒之間要經過幾輪 bot 發言。允許範圍是 1 到 100。
  • 呈現模式選擇分類值要取代最近的對話輪,還是以粗略摘要的形式出現。
  • 原始訊息控制保留幾則最近的訊息,從 1 到該頻道上限。
  • 提醒深度決定更新提醒距離組裝後脈絡尾端的位置,範圍 0 到 20。
  • 內容深度決定 STM 內容距離組裝後脈絡尾端的位置,範圍 −1 到 20。

STM 分類會用最多五個有標籤的欄位取代預設的 Summary 欄位。每個欄位以 Label: Description 格式輸入;所有欄位都留空就會還原預設的 Summary 分類。儲存分類會清除不相容的生效中伺服器頻道 STM,面板會在儲存前揭露受影響的頻道。

STM 提示詞讓管理員覆寫工具描述與更新提醒。留空的覆寫會還原成實際生效的預設值,包括分類啟用時的分類感知提醒。


關於她實際儲存什麼,以及如何匯出或刪除,請看資料處理/legal privacy-policy。你可以用 /personal config 完全退出記憶功能。