跳轉至

建立 2026-09-19 更新 2026-09-19

記憶

一般聊天機器人每次開新對話就忘光了。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:以子字串比對刪除

沒有「讀取」動作,因為記憶已經自動注入上下文。

memory:
  memory_enabled: true
  memory_char_limit: 2200
  write_approval: false     # true 表示每次寫入都要你點頭

所有對話都存在 ~/.hermes/state.db(SQLite),並建有 FTS5 全文索引。代理需要回想三週前聊過什麼,會呼叫 session_search 去查,而不必把整段歷史塞進上下文。你說「我們之前做過這個」「還記得嗎」時,它會自動觸發。

內建記憶 session_search
存什麼 精選的關鍵事實 所有對話原文
何時可用 每次對話都在提示裡 需要時才查詢
維護 需要整理、有容量上限 自動累積

人格:SOUL.md

~/.hermes/SOUL.md 定義代理的主要身分與語氣。想快速試不同風格,可在對話中用 /personality <名稱>。長期的偏好(例如「請一律用繁體中文回答」)比較適合寫進 USER.md,讓代理自己維護,或直接告訴它「請記住……」。

實用建議

  1. 明講該記住的事:例如「請記住:這個專案用 uv 管理依賴,不要用 pip」。
  2. 定期看一下 memories/:內容就是純文字,過時的直接請代理刪除或自己編輯。
  3. 敏感資訊不要說給它記:記憶會進每次對話的系統提示,也會送給模型供應商。
  4. 想接外部記憶服務:官方提供 Memory Providers 外掛機制。