讓你的 AI 擁有「長久記憶」:OpenClaw Memory 設定指南
我以前常常遇到一個問題:跟 AI 聊完天,下次再開新對話,它就把我交待過的偏好全忘光了。雖然現在 Context Window 越來越大,但把所有東西都塞進去既貴又慢,而且對話一長,AI 就開始胡言亂語。
OpenClaw 的解決方案很直覺:把記憶存進 Markdown 檔案。這不是什麼黑盒子資料庫,就是你隨手都能打開編輯的純文字檔。機器人會讀這些檔案,也會把重要的事情寫進去。這篇文章會教你怎麼設定這個記憶系統,讓你的機器人不再是個「金魚腦」。
需要準備的東西
Section titled “需要準備的東西”- 已經跑起來的 OpenClaw 環境
- 一個有效的 API key(OpenAI, Gemini 或 Voyage,用來做 Embedding)
- 基本的 JSON5 設定檔編輯能力
- Node.js 執行環境
只要 5 分鐘,你就能讓機器人開始寫日記。
- 確認 Workspace 位置:預設在
~/.openclaw/workspace。 - 建立記憶檔案:在該目錄下建立
MEMORY.md(存長期事實)和memory/資料夾(存每日日誌)。 - 告訴機器人記住事情:直接在對話中說「記住我喜歡用 TypeScript 寫 Code」,它就會動用工具把這句話寫入
MEMORY.md。 - 檢查自動存檔:當對話快要達到 Context 上限(Compaction)時,OpenClaw 會悄悄提醒機器人把重要資訊寫進
memory/YYYY-MM-DD.md。
記憶檔案的結構
Section titled “記憶檔案的結構”OpenClaw 預設使用兩層記憶,這讓檢索效率更高:
memory/YYYY-MM-DD.md:每日流水帳。對話開始時,機器人會讀取今天跟昨天的內容。MEMORY.md:經過整理的長期記憶(例如你的偏好、專案決策)。這部分只會在私聊(Private Session)中載入,避免在群組對話中洩漏隱私。
自動存檔:Memory Flush
Section titled “自動存檔:Memory Flush”當對話快要爆滿,需要進行 Compaction(壓縮)時,OpenClaw 會執行一個「隱形步驟」。它會悄悄問機器人:「對話快結束了,有什麼重要的事情要存進記憶檔嗎?」
你可以在 agents.defaults.compaction.memoryFlush 調整這個行為:
{ agents: { defaults: { compaction: { reserveTokensFloor: 20000, memoryFlush: { enabled: true, softThresholdTokens: 4000, systemPrompt: "對話快要壓縮了,現在存下重要的長期記憶。", prompt: "把重要的筆記寫進 memory/YYYY-MM-DD.md;如果沒什麼好存的,請回覆 NO_REPLY。", }, }, }, },}Vector Search:語義搜尋
Section titled “Vector Search:語義搜尋”OpenClaw 會幫你的 Markdown 檔案建立索引。就算你問的問題跟筆記裡的字眼不完全一樣,它也能透過語義(Semantic)找到相關內容。
它會按照這個順序自動選擇 Embedding 提供者:
- 如果你設定了本地模型路徑,就用
local。 - 如果有 OpenAI 的 key,就用
openai。 - 如果有 Gemini 的 key,就用
gemini。 - 如果有 Voyage 的 key,就用
voyage。
如果你想手動指定 Gemini 作為提供者:
agents: { defaults: { memorySearch: { provider: "gemini", model: "gemini-embedding-001", remote: { apiKey: "你的_GEMINI_API_KEY" } } }}進階:Hybrid Search
Section titled “進階:Hybrid Search”有時候語義搜尋會漏掉一些精確的關鍵字(像是特定的 ID 或變數名稱)。這時候你可以開啟 Hybrid Search,它結合了 Vector 搜尋與 BM25 關鍵字搜尋:
agents: { defaults: { memorySearch: { query: { hybrid: { enabled: true, vectorWeight: 0.7, textWeight: 0.3, candidateMultiplier: 4 } } } }}- 機器人不寫記憶:檢查你的 Workspace 權限。如果設定了
workspaceAccess: "ro"(唯讀),機器人就沒辦法存檔。 - 搜尋不到剛寫入的內容:索引更新有 1.5 秒的 Debounce 時間,稍等一下再試。
- Embedding 報錯:檢查 API key。注意 Codex OAuth 通常不包含 Embedding API,你需要另外提供
OPENAI_API_KEY或GEMINI_API_KEY。 - 本地模式跑不動:如果你用
provider: "local",記得執行pnpm approve-builds並重新編譯node-llama-cpp。
如果你在設定記憶系統時卡住了,可以隨時找我們的 AI Setup Assistant 聊聊,它能直接幫你檢查設定檔。
OpenClaw Expert
還是卡住了?
如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。