記憶
TomoriBot 有一套持久記憶系統,讓她能跨對話記住事實。這一頁談的是她知道什麼(事實、脈絡、文件)。至於她怎麼表現(個性、語氣),請看多個人格。
從最永久到最短暫
| 層級 | 是什麼 | 持續多久 |
|---|---|---|
| 長期記憶(LTM) | 關於某位使用者或某個伺服器而儲存的事實、上傳的文件,以及制約 | 永久,直到有人移除它。經過 /refresh、重新啟動,任何情況都還在 |
| 短期記憶(STM) | 她為某個頻道寫的摘要,加上幾則最近的訊息 | 24 小時。可以跨頻道取得 |
| 對話紀錄 | 她正在回覆的頻道裡最近的訊息 | 只有這個頻道,而且只到它們滑出 /config > 行為 > 一般行為 的範圍為止(預設是最新 80 則訊息)。/refresh 會立刻截斷它 |
她在對話中看似「知道」的幾乎每一件事,其實只是最近的對話紀錄,這也是為什麼對話一長,她就好像忘了某則訊息。**只有長期記憶是永久的。**短期記憶介於中間:適合在不留下任何承諾的情況下,把某個場景帶過不同頻道,但它仍然會過期。
想知道她在任何一輪對話中實際拿到什麼,請看提示詞內部。
長期記憶是她唯一永久保留的東西。它們不受 /refresh 影響,也不受重新啟動或搬到其他頻道影響。
個人記憶與伺服器記憶
Section titled “個人記憶與伺服器記憶”長期記憶有兩種:
- 個人記憶(
/personal memories):關於某位個別使用者的事實,例如「Amaori 喜歡貓」、「偏好深色模式」、「對花生過敏」。這些綁在你身上,會跟著你到每個伺服器,但她只在你實際參與的對話中取用它們。 - 伺服器記憶(
/memories):與整個伺服器相關的資訊,例如「遊戲之夜是每週五晚上 8 點」、「禁止張貼 NSFW」、「#general 是公告用頻道」。這些留在伺服器內,而且在該伺服器裡永遠都在她心上。
**記憶預設以人格為單位隔離。**每個人格(包括 alter)都保有自己的個人記憶與伺服器記憶,所以不同人格之間,她記不起另一個人格學過的事。唯一的例外是從 /personal memories 的全域頁面新增的個人記憶,那則記憶會專屬於你,並套用到每個人格。伺服器記憶沒有這種選項,每個人格的伺服器記憶集合永遠分開,即使在同一個伺服器裡也一樣。
用 /memories 瀏覽、新增、編輯、移除伺服器記憶,或把伺服器記憶搬進文件知識庫。/personal memories 管理綁在你身上的事實。記憶會一直保留,直到你移除它們。
在新的伺服器裡,非管理員成員建立、編輯或移除共用伺服器記憶的權限預設是關閉的。擁有 Manage Server 權限的成員隨時都保有存取權,管理員也可以透過 /moderation 的「成員存取」開放給其他成員。
記憶如何被儲存
Section titled “記憶如何被儲存”長期記憶的產生方式正好只有兩種:
- 你自己存:用
/personal memories或/memories。 - 她自己存:當她判斷某件事值得留下時。
當她自己存了一則,她會發一則 embed 說她學到了某件事。**那則 embed 就是確認。**如果你告訴她某件事而沒有出現 embed,那就什麼都沒存下來:那仍然只是對話紀錄,所以對話一往前推進她就會失去它,換到別的頻道也不會帶著。
如果她不存你想留下的東西,你有三個選項,強制程度由低到高:
- 直接請她記住。
- 用
/config> 行為 > 一般行為 加入提醒,或用提示詞內部裡其他任何會攜帶提示詞的指令(/config> 人格 > 進階、/config> 行為 > 一般行為、/config> 頻道 > 頻道覆寫)。尤其是脈絡備註,它位於她提示詞中比較低的位置,因此更有可能被確實執行。像*「值得記住的資訊,建議建立長期記憶」這樣簡單的一句通常就夠了。若要在不寫死可能隨供應商變動的名稱的前提下,指名實際的儲存記憶工具,請改用{memory_tool}提示詞巨集,例如「每當……時使用 {memory_tool}」*。 - 自己用
/personal memories存,這是保證有效的方法。
伺服器管理員可以用 /config > 權限 完全關掉她的自我儲存。
預設情況下她最多持有 100 則個人記憶與 100 則伺服器記憶。自架者可以用 .env 變數 MAX_PERSONAL_MEMORIES、MAX_SERVER_MEMORIES 與 MAX_MEMORY_LENGTH 調整。提高長度所消耗的脈絡遠比提高數量多,所以偏好更多則短記憶,而不是更少則長記憶。
這些數量是以人格為單位,不是以使用者或伺服器為單位。每個人格都保有自己的額度,所以一個跑四個人格的伺服器就有四份獨立的額度。你自己的全域個人記憶會計入每個人格的個人額度。
文件知識庫(RAG)
Section titled “文件知識庫(RAG)”伺服器管理員可以用 RAG 給她要參考的文件。文件會被切成片段,並存成可搜尋的嵌入;回答時她會自動取回相關內容。在新的伺服器裡,文件管理同樣預設只開放給擁有 Manage Server 的成員;管理員可以透過 /moderation 的「成員存取」開放給成員。
需要嵌入模型,用 /config > 模型 > 切換模型 設定。請看供應商與模型。/memories 裡的「文件」頁面提供人格範圍與伺服器範圍兩種選擇、即時的文件與片段數量、上傳、瀏覽文件,以及移除:
- 上傳文字、PDF 或 Markdown 檔案作為伺服器知識。範圍決定它是只綁在這一個人格(預設),還是整個伺服器共享,供每個人格參考。
/learn history:把頻道紀錄萃取成可搜尋的知識。- 逐片段瀏覽已儲存的文件。伺服器管理員可以編輯個別片段、更新文件的頻道標籤,或刪除單一片段而不移除整份文件。
- 直接從面板移除已儲存的文件或個別片段。
歷史匯入提示詞
Section titled “歷史匯入提示詞”用 /learn history 匯入頻道紀錄時,prompt 選項會改變 TomoriBot 萃取記憶的方式:
- 對話會從一般聊天中萃取獨立的事實。它會解析代名詞,並在提到日期或時間、或可推斷出日期時間時使用絕對時間戳。
- 角色扮演會尋找場景、設定、關係與值得記住的事件,不會試著保留每個小橋段。
- 角色內會以選定人格的視角萃取記憶,並以該人格的提示詞、屬性、既有記憶與相關文件作為脈絡。
匯入前會顯示提示詞,方便你依頻道或場景調整。
歷史匯入會存成文件,所以 /memories 也能對它們運作。
/conditioning 是一種以人格為單位、以伺服器為單位的記憶,會隨時間引導人格的行為。它比完整的屬性設定或系統提示詞更輕量。用它來強化某個角色在某個伺服器中應該怎麼表現。
每次 /reward 或 /punish 都會被計數,但只有在你給它 reason 時,它才會變成她實際會依循的記憶,在她的提示詞中看起來像這樣:
## Rewarded BehaviorsHere 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 BehaviorsHere 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 檢視或清除項目。
控制記憶何時生效
Section titled “控制記憶何時生效”範圍會比其他機制更早限縮一切:伺服器記憶只會進入它自己伺服器的提示詞,個人記憶只在那位使用者出現在對話中時才會進入,而兩者都只對擁有它們的人格生效。在這個範圍之內,每一則記憶預設都會隨著每一次提示詞送出。標籤會進一步限縮,讓某則記憶只在出現關鍵字時生效,或只在某個頻道生效。用 /config > 行為 > 進階記憶 開啟。
- 沒有關鍵字標籤的記憶一律有效(預設)。
- 有關鍵字標籤的記憶,只在關鍵字出現在可見脈絡中時才生效。
- 用
/tool prompt snapshot查看目前有哪些記憶正在生效。
- 帶有
#channel標籤的記憶只在該頻道生效。 - 頻道標籤會與關鍵字標籤合併作用。
- 如果你使用文件知識庫(RAG),頻道標籤也會套用到文件與萃取出的歷史。
在 /help 中選擇 記憶,然後選 記憶標籤(進階),就能在 Discord 裡看到同樣的摘要。
短期記憶(STM)
Section titled “短期記憶(STM)”TomoriBot 可以輕鬆讀取她正在對話的目前頻道訊息,但 STM 讓她能在不儲存實際長期記憶的情況下做到以下幾件事:
- 在脈絡中暫時強化頻道目前的場景與情境
- 暫時記住其他頻道或伺服器的對話
**她只記得自己參與過的對話。**她只在自己回覆時更新頻道的記憶,其他時候都不會,所以一個沒人跟她說話的熱鬧頻道不會留下任何痕跡。
每個頻道的 STM 預設在 24 小時後過期,而如果你用 /personal config 選擇退出,你的訊息也完全不會進入其中。
她看得到與看不到什麼
Section titled “她看得到與看不到什麼”| 位置 | 代表什麼 |
|---|---|
| 在伺服器裡 | 每個頻道共用一份記憶,不是每個人一份。她不會個別記錄你的事情。 |
| 在私訊裡 | 只有你的。 |
| 其他頻道 | 她可以回想起同一個伺服器中其他幾個頻道的近期對話。 |
| 私人頻道 | 任何用 /config > 頻道 > 頻道規則 設定的內容都會留在那裡,不會出現在別處。 |
| 其他伺服器 | 永遠不會,除非你開啟 /personal config → crossserver。即使開啟,也只有你自己的對話會跟著你。 |
| 每個人格 | 各自保有自己的記憶,所以切換人格就等於切換記憶。 |
每個頻道的記憶保存最近幾則訊息,加上一段她自己寫、並隨對話推進更新的簡短摘要。安靜幾個小時之後,它就會自行淡去。
| 指令 | 功能 |
|---|---|
/config > 人格 > 記憶 | 查看她為這個頻道保留的摘要 |
/config > 人格 > 記憶 | 修正它,或自己寫 |
/personal config / /personal memories | 選擇加入跨伺服器回想,或清除你自己的 |
/refresh | 讓她立刻忘掉這個頻道 |
/config > 行為 > 進階記憶 | 她多久更新一次,以及保留多少細節 |
/config > 行為 > 進階記憶 | 把摘要換成最多 5 個有標籤的欄位(目前場景、心情等) |
/config > 行為 > 進階記憶 | 改寫她被要求保留記憶的方式 |
/memories | 從單一管理面板檢視並選擇性清除生效中的伺服器項目 |
/config > 權限 | 讓私人頻道的記憶能出現在別處 |
/config > 權限 | 開啟或關閉這項功能(已儲存的記憶不論如何都會保留) |
任何人都可以執行 /config > 人格 > 記憶、/personal config 與 /personal memories。其餘需要管理伺服器權限。
STM 設定
Section titled “STM 設定”工作區管理員可以從 /config → 行為 → 進階記憶 調整短期記憶。這些設定會套用到工作區中生效的 STM 紀錄:
- 更新頻率控制兩次更新提醒之間要經過幾輪 bot 發言。允許範圍是 1 到 100。
- 呈現模式選擇分類值要取代最近的對話輪,還是以粗略摘要的形式出現。
- 原始訊息控制保留幾則最近的訊息,從 1 到該頻道上限。
- 提醒深度決定更新提醒距離組裝後脈絡尾端的位置,範圍 0 到 20。
- 內容深度決定 STM 內容距離組裝後脈絡尾端的位置,範圍 −1 到 20。
STM 分類會用最多五個有標籤的欄位取代預設的 Summary 欄位。每個欄位以 Label: Description 格式輸入;所有欄位都留空就會還原預設的 Summary 分類。儲存分類會清除不相容的生效中伺服器頻道 STM,面板會在儲存前揭露受影響的頻道。
STM 提示詞讓管理員覆寫工具描述與更新提醒。留空的覆寫會還原成實際生效的預設值,包括分類啟用時的分類感知提醒。
關於她實際儲存什麼,以及如何匯出或刪除,請看資料處理與 /legal privacy-policy。你可以用 /personal config 完全退出記憶功能。