記憶
一般聊天機器人每次開新對話就忘光了。Hermes 用兩層機制解決:一小塊永遠在場的記憶,加上一個能按需查詢的完整對話庫。本頁說明兩者怎麼分工,以及怎麼維護。
內建記憶:MEMORY.md 與 USER.md
兩個檔案存在 ~/.hermes/memories/:
| 檔案 | 內容 | 容量上限 |
|---|---|---|
MEMORY.md |
代理自己的筆記:環境事實、慣例、學到的教訓 | 2,200 字元(約 800 tokens) |
USER.md |
你的檔案:偏好、溝通風格、期待 | 1,375 字元(約 500 tokens) |
它們在對話開始時以「凍結快照」放進系統提示。對話中寫入的新記憶會立刻存檔,但要到下一次對話才會出現在提示裡。這樣設計是為了保住模型的 prefix cache,讓每次呼叫更快、更省。
容量很小,是刻意的:記憶要留給「每次都該知道」的事。滿了以後,代理必須先合併相近的條目或刪掉過時內容,才能再新增。官方建議用量超過 80% 就先整理。
代理透過 memory 工具管理,有三個動作:
add:新增條目replace:以子字串比對更新既有內容remove:以子字串比對刪除
沒有「讀取」動作,因為記憶已經自動注入上下文。
對話搜尋:session_search
所有對話都存在 ~/.hermes/state.db(SQLite),並建有 FTS5 全文索引。代理需要回想三週前聊過什麼,會呼叫 session_search 去查,而不必把整段歷史塞進上下文。你說「我們之前做過這個」「還記得嗎」時,它會自動觸發。
| 內建記憶 | session_search | |
|---|---|---|
| 存什麼 | 精選的關鍵事實 | 所有對話原文 |
| 何時可用 | 每次對話都在提示裡 | 需要時才查詢 |
| 維護 | 需要整理、有容量上限 | 自動累積 |
人格:SOUL.md
~/.hermes/SOUL.md 定義代理的主要身分與語氣。想快速試不同風格,可在對話中用 /personality <名稱>。長期的偏好(例如「請一律用繁體中文回答」)比較適合寫進 USER.md,讓代理自己維護,或直接告訴它「請記住……」。
實用建議
- 明講該記住的事:例如「請記住:這個專案用 uv 管理依賴,不要用 pip」。
- 定期看一下
memories/:內容就是純文字,過時的直接請代理刪除或自己編輯。 - 敏感資訊不要說給它記:記憶會進每次對話的系統提示,也會送給模型供應商。
- 想接外部記憶服務:官方提供 Memory Providers 外掛機制。