Skip to content

記憶體配置參考

本頁面列出了 OpenClaw 記憶體搜尋的所有配置選項。若需概念性概覽,請參閱:

除非另有說明,所有記憶體搜尋設定都位於 agents.defaults.memorySearch 中的 openclaw.json 之下。


類型預設值說明
providerstring自動偵測嵌入介面卡 ID:openaigeminivoyagemistralollamalocal
modelstring提供者預設值嵌入模型名稱
fallbackstring"none"主要介面卡失敗時的後備介面卡 ID
enabledbooleantrue啟用或停用記憶體搜尋

當未設定 provider 時,OpenClaw 會選擇第一個可用的:

  1. local — 如果已設定 memorySearch.local.modelPath 且檔案存在。
  2. openai — 如果可以解析 OpenAI 金鑰。
  3. gemini — 如果可以解析 Gemini 金鑰。
  4. voyage — 如果可以解析 Voyage 金鑰。
  5. mistral — 如果可以解析 Mistral 金鑰。

支援 ollama,但不會自動偵測(請明確設定)。

遠端嵌入需要 API 金鑰。OpenClaw 會從: 設定檔、models.providers.*.apiKey 或環境變數中解析。

提供者環境變數設定金鑰
OpenAIOPENAI_API_KEYmodels.providers.openai.apiKey
GeminiGEMINI_API_KEYmodels.providers.google.apiKey
VoyageVOYAGE_API_KEYmodels.providers.voyage.apiKey
MistralMISTRAL_API_KEYmodels.providers.mistral.apiKey
OllamaOLLAMA_API_KEY (placeholder)

Codex OAuth 僅涵蓋聊天/補全功能,不滿足嵌入請求。


針對自訂 OpenAI 相容端點或覆寫提供者預設值:

金鑰類型說明
remote.baseUrlstring自訂 API 基礎 URL
remote.apiKeystring覆寫 API 金鑰
remote.headersobject額外 HTTP 標頭(與提供者預設值合併)
{
agents: {
defaults: {
memorySearch: {
provider: "openai",
model: "text-embedding-3-small",
remote: {
baseUrl: "https://api.example.com/v1/",
apiKey: "YOUR_KEY",
},
},
},
},
}

金鑰類型預設值說明
modelstringgemini-embedding-001同時支援 gemini-embedding-2-preview
outputDimensionalitynumber3072針對 Embedding 2:768、1536 或 3072


金鑰類型預設值說明
local.modelPathstring自動下載GGUF 模型檔案的路徑
local.modelCacheDirstringnode-llama-cpp 預設值已下載模型的快取目錄

預設模型:embeddinggemma-300m-qat-Q8_0.gguf(約 0.6 GB,自動下載)。 需要原生編譯:pnpm approve-builds 然後執行 pnpm rebuild node-llama-cpp


全部位於 memorySearch.query.hybrid 之下:

金鑰類型預設值說明
enabledbooleantrue啟用混合 BM25 + 向量搜尋
vectorWeightnumber0.7向量評分權重 (0-1)
textWeightnumber0.3BM25 評分權重 (0-1)
candidateMultipliernumber4候選池大小乘數
金鑰類型預設值說明
mmr.enabledbooleanfalse啟用 MMR 重新排序
mmr.lambdanumber0.70 = 最大多樣性,1 = 最大相關性
金鑰類型預設值說明
temporalDecay.enabledbooleanfalse啟用近期性加成
temporalDecay.halfLifeDaysnumber30評分每 N 天減半

常青檔案 (MEMORY.mdmemory/ 中的非日期檔案) 永遠不會衰減。

{
agents: {
defaults: {
memorySearch: {
query: {
hybrid: {
vectorWeight: 0.7,
textWeight: 0.3,
mmr: { enabled: true, lambda: 0.7 },
temporalDecay: { enabled: true, halfLifeDays: 30 },
},
},
},
},
},
}

金鑰類型說明
extraPathsstring[]要建立索引的其他目錄或檔案
{
agents: {
defaults: {
memorySearch: {
extraPaths: ["../team-docs", "/srv/shared-notes"],
},
},
},
}

路徑可以是絕對路徑或相對於工作區的路徑。目錄會遞迴掃描 .md 檔案。符號連結的處理取決於活動的後端: 內建引擎會忽略符號連結,而 QMD 則遵循底層 QMD 掃描器的行為。

對於代理範圍的跨代理對話記錄搜尋,請使用 agents.list[].memorySearch.qmd.extraCollections 而非 memory.qmd.paths。 這些額外的集合遵循相同的 { path, name, pattern? } 結構,但 它們會依代理合併,且當路徑指向目前工作區外時,可以保留明確的共用名稱。 如果相同的解析路徑同時出現在 memory.qmd.pathsmemorySearch.qmd.extraCollections 中,QMD 會保留第一個項目並跳過 重複項目。


使用 Gemini Embedding 2 將圖片和音訊與 Markdown 一起建立索引:

金鑰類型預設值說明
multimodal.enabledbooleanfalse啟用多模態索引
multimodal.modalitiesstring[]["image"]["audio"]["all"]
multimodal.maxFileBytesnumber10000000索引的最大檔案大小

僅適用於 extraPaths 中的檔案。預設記憶體根目錄僅限 Markdown。 需要 gemini-embedding-2-previewfallback 必須為 "none"

支援格式:.jpg.jpeg.png.webp.gif.heic.heif (圖片);.mp3.wav.ogg.opus.m4a.aac.flac(音訊)。


類型預設值描述
cache.enabledbooleanfalse在 SQLite 中快取區塊嵌入
cache.maxEntriesnumber50000最大快取嵌入數量

防止在重新索引或逐字稿更新時對未變更的文字進行重新嵌入。


類型預設值描述
remote.batch.enabledbooleanfalse啟用批次嵌入 API
remote.batch.concurrencynumber2並行批次工作
remote.batch.waitbooleantrue等待批次完成
remote.batch.pollIntervalMsnumber輪詢間隔
remote.batch.timeoutMinutesnumber批次逾時

適用於 openaigeminivoyage。對於大量補填,OpenAI 批次通常是最快且最經濟的選擇。


為會話紀錄建立索引並透過 memory_search 呈現:

KeyType預設值說明
experimental.sessionMemorybooleanfalse啟用會話索引
sourcesstring[]["memory"]新增 "sessions" 以包含紀錄
sync.sessions.deltaBytesnumber100000重新索引的位元組閾值
sync.sessions.deltaMessagesnumber50重新索引的訊息閾值

會話索引為選用功能,並以非同步方式執行。結果可能會略有過時。會話紀錄儲存在磁碟上,因此請將檔案系統存取視為信任邊界。


KeyType預設值說明
store.vector.enabledbooleantrue使用 sqlite-vec 進行向量查詢
store.vector.extensionPathstringbundled覆寫 sqlite-vec 路徑

當無法使用 sqlite-vec 時,OpenClaw 會自動回退到程序內的餘弦相似度計算。


KeyType預設值說明
store.pathstring~/.openclaw/memory/{agentId}.sqlite索引位置(支援 {agentId} 權杖)
store.fts.tokenizerstringunicode61FTS5 分詞器(unicode61trigram

設定 memory.backend = "qmd" 以啟用。所有 QMD 設定都位於 memory.qmd 之下:

KeyType預設值說明
commandstringqmdQMD 可執行檔路徑
searchModestringsearch搜尋指令:searchvsearchquery
includeDefaultMemorybooleantrue自動索引 MEMORY.md + memory/**/*.md
paths[]array額外路徑:{ name, path, pattern? }
sessions.enabledbooleanfalse索引會話逐字稿
sessions.retentionDaysnumber逐字稿保留
sessions.exportDirstring匯出目錄
金鑰類型預設值說明
update.intervalstring5m重新整理間隔
update.debounceMsnumber15000檔案變更防抖
update.onBootbooleantrue啟動時重新整理
update.waitForBootSyncbooleanfalse重新整理完成前封鎖啟動
update.embedIntervalstring分離嵌入頻率
update.commandTimeoutMsnumberQMD 指令逾時
金鑰類型預設值說明
limits.maxResultsnumber6最大搜尋結果數
limits.maxSnippetCharsnumber限制摘要長度
limits.maxInjectedCharsnumber限制總插入字元數
limits.timeoutMsnumber4000搜尋逾時

控制哪些會話可以接收 QMD 搜尋結果。架構與 session.sendPolicy 相同:

{
memory: {
qmd: {
scope: {
default: "deny",
rules: [{ action: "allow", match: { chatType: "direct" } }],
},
},
},
}

預設僅限 DM。match.keyPrefix 符合正規化會話金鑰; match.rawKeyPrefix 符合包含 agent:<id>: 的原始金鑰。

memory.citations 適用於所有後端:

數值行為
auto (預設)在摘要中包含 Source: <path#line> 頁尾
on一律包含頁尾
off省略頁尾 (路徑仍會在內部傳遞給代理程式)
{
memory: {
backend: "qmd",
citations: "auto",
qmd: {
includeDefaultMemory: true,
update: { interval: "5m", debounceMs: 15000 },
limits: { maxResults: 6, timeoutMs: 4000 },
scope: {
default: "deny",
rules: [{ action: "allow", match: { chatType: "direct" } }],
},
paths: [{ name: "docs", path: "~/notes", pattern: "**/*.md" }],
},
},
}