跳轉到主要內容
memory_search 會從你的記憶檔案中找出相關筆記,即使措辭與原始文字不同也能找到。它會將記憶切成小片段,並使用嵌入、關鍵字或兩者進行搜尋。

快速開始

OpenClaw 預設使用 OpenAI 嵌入。若要使用其他提供者,請明確設定:
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai", // or "gemini", "voyage", "mistral", "bedrock", "local", "ollama", "lmstudio", "github-copilot", "openai-compatible"
      },
    },
  },
}
provider 也可以參照自訂的 models.providers.<id> 項目(例如 ollama-5080),只要該項目將 api 設為 "ollama",或設為另一個具有記憶嵌入配接器的提供者 ID。 若要使用不需 API 金鑰的本機嵌入,請安裝官方 llama.cpp 提供者外掛,並設定 provider: "local"
openclaw plugins install @openclaw/llama-cpp-provider
原始碼 checkout 仍需要原生建置核准:pnpm approve-builds,然後執行 pnpm rebuild node-llama-cpp 部分 OpenAI 相容的嵌入端點需要非對稱的 input_type 標籤,例如搜尋使用 "query",索引區塊使用 "document"/"passage"。請用 queryInputTypedocumentInputType 設定;詳見記憶設定參考

支援的提供者

提供者ID需要 API 金鑰備註
Bedrockbedrock使用 AWS 憑證鏈
DeepInfradeepinfra預設模型 BAAI/bge-m3
Geminigemini支援圖片/音訊索引
GitHub Copilotgithub-copilot使用你的 Copilot 訂閱
本機localGGUF 模型,約 0.6 GB 自動下載
LM Studiolmstudio本機/自架伺服器
Mistralmistral
Ollamaollama本機/自架伺服器
OpenAIopenai預設
OpenAI 相容openai-compatible通常需要通用 /v1/embeddings 端點
Voyagevoyage

搜尋如何運作

OpenClaw 會平行執行兩條擷取路徑,並合併結果:
  • 向量搜尋會比對相近語意(「gateway host」會比對到「執行 OpenClaw 的機器」)。
  • BM25 關鍵字搜尋會比對精確詞彙(ID、錯誤字串、設定鍵)。
如果只有一條路徑可用,則只會執行該路徑。 僅 FTS 模式。 設定 provider: "none" 可刻意停用嵌入,並只用關鍵字搜尋。若 provider 未設定或設為 "auto",在未設定嵌入驗證時也會退回到僅關鍵字排序,且不會報錯;provider: "local"(GGUF/llama.cpp 提供者)失敗時也是如此。 明確指定的提供者無法使用。 如果你明確指定任何其他提供者(例如 openaiollamagemini),而它在請求時無法使用(驗證錯誤、網路失敗),memory_search 會回報記憶不可用,而不是靜默降級為僅 FTS 結果。這能讓設定錯誤的提供者保持可見。若要刻意使用僅 FTS 召回,請設定 provider: "none";或修正提供者/驗證設定以恢復語意排序。

改善搜尋品質

兩個選用功能可協助處理大量筆記歷史。

時間衰減

舊筆記會逐漸降低排序權重,讓近期資訊優先浮現。使用預設 30 天半衰期時,上個月的筆記分數會是原始權重的 50%。memory/ 底下的 MEMORY.md 和其他無日期檔案會視為常青內容,永不衰減;只有有日期的 memory/YYYY-MM-DD.md 檔案會衰減。
如果你的代理有數個月的每日筆記,且過時資訊一直排在近期脈絡之前,請啟用此功能。

MMR(多樣性)

減少重複結果。如果五則筆記都提到同一個路由器設定,MMR 會確保最高排名結果涵蓋不同主題,而不是重複同樣內容。
如果 memory_search 持續從不同每日筆記傳回近似重複的片段,請啟用此功能。

同時啟用兩者

{
  agents: {
    defaults: {
      memorySearch: {
        query: {
          hybrid: {
            mmr: { enabled: true },
            temporalDecay: { enabled: true },
          },
        },
      },
    },
  },
}

多模態記憶

使用 gemini-embedding-2-preview 時,你可以將圖片和音訊與 Markdown 一起索引。這只適用於 memorySearch.extraPaths 底下的檔案;預設記憶根目錄(MEMORY.mdmemory/*.md)仍僅限 Markdown。搜尋查詢仍是文字,但會比對視覺與音訊內容。設定方式請見記憶設定參考

工作階段記憶搜尋

你可以選擇索引工作階段逐字稿,讓 memory_search 能回想先前的對話。這是選用功能:設定 experimental.sessionMemory: true,並將 "sessions" 加入 sources(預設 sources["memory"])。 工作階段命中會遵守 tools.sessions.visibility:預設的 "tree" 只會公開目前工作階段及其衍生的工作階段。若要從不同工作階段回想不相關的同代理工作階段(例如由閘道分派、來自 DM 的工作階段),請將可見性放寬為 "agent" 使用 QMD 後端時,也請設定 memory.qmd.sessions.enabled: true,讓逐字稿匯出到 QMD 集合;單靠 experimental.sessionMemorysources 不會將逐字稿匯出到 QMD。請見設定參考

疑難排解

沒有結果? 執行 openclaw memory status 檢查索引。如果是空的,請執行 openclaw memory index --force 只有關鍵字比對? 你的嵌入提供者可能尚未設定。請檢查 openclaw memory status --deep 本機嵌入逾時? ollamalmstudiolocal 預設使用較長的行內批次逾時。如果主機只是速度較慢,請設定 agents.defaults.memorySearch.sync.embeddingBatchTimeoutSeconds,並重新執行 openclaw memory index --force 找不到 CJK 文字? 使用 openclaw memory index --force 重建 FTS 索引。

相關