Skip to content

記憶體配置參考

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

記憶體概覽

記憶體的運作方式。

內建引擎

預設 SQLite 後端。

QMD 引擎

本地優先的 sidecar。

記憶體搜尋

搜尋管線與調優。

主動記憶

用於互動式會話的記憶體子代理程式。

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


類型預設值描述
providerstring自動偵測嵌入適配器 ID,例如 bedrockdeepinfrageminigithub-copilotlocalmistralollamaopenaivoyage;也可以是已配置的 models.providers.<id>,其 api 指向其中一個適配器
modelstring提供者預設值嵌入模型名稱
fallbackstring"none"當主要適配器失敗時的後備適配器 ID
enabledbooleantrue啟用或停用記憶體搜尋

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

  1. local

    若已設定 memorySearch.local.modelPath 且檔案存在,則選擇此選項。

  2. github-copilot

    若可解析 GitHub Copilot 權杖(環境變數或 auth profile),則選擇此選項。

  3. openai

    若可解析 OpenAI 金鑰,則選擇此選項。

  4. gemini

    若可解析 Gemini 金鑰,則選擇此選項。

  5. voyage

    若可解析 Voyage 金鑰,則選擇此選項。

  6. mistral

    若可解析 Mistral 金鑰,則選擇此選項。

  7. deepinfra

    若可解析 DeepInfra 金鑰,則選擇此選項。

  8. bedrock

    若 AWS SDK 憑證鏈解析成功(執行個體角色、存取金鑰、profile、SSO、Web 身份或共用設定),則選擇此選項。

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

memorySearch.provider 可以指向自訂的 models.providers.<id> 項目。OpenClaw 會解析該提供者的 api 擁有者以用於嵌入適配器,同時保留自訂提供者 ID 用於端點、驗證和模型前綴處理。這讓多 GPU 或多主機設定可以將記憶體嵌入專用於特定的本地端點:

{
models: {
providers: {
"ollama-5080": {
api: "ollama",
baseUrl: "http://gpu-box.local:11435",
apiKey: "ollama-local",
models: [{ id: "qwen3-embedding:0.6b" }],
},
},
},
agents: {
defaults: {
memorySearch: {
provider: "ollama-5080",
model: "qwen3-embedding:0.6b",
},
},
},
}

遠端嵌入需要 API 金鑰。Bedrock 則改用 AWS SDK 預設憑證鏈(執行個體角色、SSO、存取金鑰)。

提供者環境變數設定金鑰
BedrockAWS 憑證鏈不需要 API 金鑰
DeepInfraDEEPINFRA_API_KEYmodels.providers.deepinfra.apiKey
GeminiGEMINI_API_KEYmodels.providers.google.apiKey
GitHub CopilotCOPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKEN透過裝置登入進行驗證設定檔
MistralMISTRAL_API_KEYmodels.providers.mistral.apiKey
OllamaOLLAMA_API_KEY (預留位置)
OpenAIOPENAI_API_KEYmodels.providers.openai.apiKey
VoyageVOYAGE_API_KEYmodels.providers.voyage.apiKey


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

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

Gemini
類型預設值描述
modelstringgemini-embedding-001也支援 gemini-embedding-2-preview
outputDimensionalitynumber3072對於 Embedding 2:768、1536 或 3072
OpenAI 相容輸入類型

OpenAI 相容的嵌入端點可以選擇使用供應商特定的 input_type 請求欄位。這對於需要為查詢和文件嵌入使用不同標籤的非對稱嵌入模型非常有用。

類型預設值描述
inputTypestring未設定查詢和文件嵌入共用的 input_type
queryInputTypestring未設定查詢時的 input_type;覆寫 inputType
documentInputTypestring未設定索引/文件的 input_type;覆寫 inputType
{
agents: {
defaults: {
memorySearch: {
provider: "openai",
remote: {
baseUrl: "https://embeddings.example/v1",
apiKey: "env:EMBEDDINGS_API_KEY",
},
model: "asymmetric-embedder",
queryInputType: "query",
documentInputType: "passage",
},
},
},
}

變更這些值會影響供應商批次索引的嵌入快取識別,當上游模型對標籤的處理方式不同時,應隨後進行記憶體重建索引。

Bedrock

Bedrock 使用 AWS SDK 的預設憑證鏈 — 不需要 API 金鑰。如果 OpenClaw 在具有已啟用 Bedrock 角色的 EC2 上執行,只需設定提供者和模型:

{
agents: {
defaults: {
memorySearch: {
provider: "bedrock",
model: "amazon.titan-embed-text-v2:0",
},
},
},
}
KeyTypeDefaultDescription
modelstringamazon.titan-embed-text-v2:0任何 Bedrock 嵌入模型 ID
outputDimensionalitynumbermodel default針對 Titan V2:256、512 或 1024

支援的模型(包含系列偵測和維度預設值):

Model IDProviderDefault DimsConfigurable Dims
amazon.titan-embed-text-v2:0Amazon1024256, 512, 1024
amazon.titan-embed-text-v1Amazon1536
amazon.titan-embed-g1-text-02Amazon1536
amazon.titan-embed-image-v1Amazon1024
amazon.nova-2-multimodal-embeddings-v1:0Amazon1024256, 384, 1024, 3072
cohere.embed-english-v3Cohere1024
cohere.embed-multilingual-v3Cohere1024
cohere.embed-v4:0Cohere1536256-1536
twelvelabs.marengo-embed-3-0-v1:0TwelveLabs512
twelvelabs.marengo-embed-2-7-v1:0TwelveLabs1024

帶有輸吐量後綴的變體(例如 amazon.titan-embed-text-v1:2:8k)會繼承基礎模型的設定。

驗證: Bedrock 驗證使用標準 AWS SDK 憑證解析順序:

  1. 環境變數 (AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY)
  2. SSO 權杖快取
  3. Web 身份權杖憑證
  4. 共用憑證和設定檔
  5. ECS 或 EC2 中繼資料憑證

區域 會從 AWS_REGIONAWS_DEFAULT_REGIONamazon-bedrock 提供者 baseUrl 解析,或預設為 us-east-1

IAM 權限: IAM 角色或使用者需要:

{
"Effect": "Allow",
"Action": "bedrock:InvokeModel",
"Resource": "*"
}

為遵循最小權限原則,請將 InvokeModel 範圍限定於特定模型:

arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0
本機 (GGUF + node-llama-cpp)
類型預設值描述
local.modelPathstring自動下載GGUF 模型檔案的路徑
local.modelCacheDirstringnode-llama-cpp 預設值下載模型的快取目錄
local.contextSizenumber | "auto"4096嵌入語境的語境視窗大小。4096 可覆蓋典型的區塊(128–512 個 token),同時限制非權重 VRAM。在資源受限的主機上可降低至 1024–2048。"auto" 會使用模型訓練時的最大值 —— 不建議用於 8B+ 的模型(Qwen3-Embedding-8B:40 960 tokens → ~32 GB VRAM vs 4096 時的 ~8.8 GB)。

預設模型:embeddinggemma-300m-qat-Q8_0.gguf(~0.6 GB,自動下載)。來源檢出版本仍需原生組建核准:pnpm approve-builds 然後 pnpm rebuild node-llama-cpp

使用獨立 CLI 來驗證 Gateway 使用的相同提供者路徑:

Terminal window
openclaw memory status --deep --agent main
openclaw memory index --force --agent main

如果 providerautolocal 僅在 local.modelPath 指向現有本地檔案時才會被選取。hf: 和 HTTP(S) 模型參照仍可透過 provider: "local" 明確使用,但它們不會讓 auto 在模型可用於磁碟之前選取本地選項。

覆寫記憶體索引期間內聯嵌入批次處理的逾時設定。

未設定則使用供應商預設值:本地/自託管供應商(例如 localollamalmstudio)為 600 秒,託管供應商為 120 秒。當本地 CPU 限製的嵌入批次處理正常但緩慢時,請增加此值。


所有設定均在 memorySearch.query.hybrid 下:

金鑰類型預設值說明
enabledbooleantrue啟用混合 BM25 + 向量搜尋
vectorWeightnumber0.7向量分數權重 (0-1)
textWeightnumber0.3BM25 分數權重 (0-1)
candidateMultipliernumber4候選池大小倍數
KeyTypeDefaultDescription
mmr.enabledbooleanfalse啟用 MMR 重新排序
mmr.lambdanumber0.70 = 最大多樣性,1 = 最大相關性
{
agents: {
defaults: {
memorySearch: {
query: {
hybrid: {
vectorWeight: 0.7,
textWeight: 0.3,
mmr: { enabled: true, lambda: 0.7 },
temporalDecay: { enabled: true, halfLifeDays: 30 },
},
},
},
},
},
}

KeyTypeDescription
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索引的檔案大小上限

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


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

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


類型預設值說明
remote.nonBatchConcurrencynumber4並行內聯嵌入
remote.batch.enabledbooleanfalse啟用批次嵌入 API
remote.batch.concurrencynumber2並行批次任務
remote.batch.waitbooleantrue等待批次完成
remote.batch.pollIntervalMsnumber輪詢間隔
remote.batch.timeoutMinutesnumber批次逾時

適用於 openaigeminivoyage。對於大量的回填資料,OpenAI 批次處理通常是最快且最經濟的。

remote.nonBatchConcurrency 控制本機/自託管提供商以及未啟用提供商批次 API 的託管提供商所使用的內聯嵌入呼叫。Ollama 在非批次索引時預設為 1,以避免壓垮較小的本機主機;在較大的機器上請設定較高的值。

這與 sync.embeddingBatchTimeoutSeconds 分開,後者控制內聯嵌入呼叫的逾時時間。


索引會話轉錄並透過 memory_search 顯示它們:

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


金鑰類型預設值說明
store.vector.enabledbooleantrue使用 sqlite-vec 進行向量查詢
store.vector.extensionPathstringbundled覆蓋 sqlite-vec 路徑

當 sqlite-vec 不可用時,OpenClaw 會自動回退到程序內餘弦相似度。


類型預設描述
store.pathstring~/.openclaw/memory/{agentId}.sqlite索引位置 (支援 {agentId} 標記)
store.fts.tokenizerstringunicode61FTS5 分詞器 (unicode61trigram)

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

金鑰類型預設描述
commandstringqmdQMD 可執行檔路徑;當服務 PATH 與您的 Shell 不同時,設定絕對路徑
searchModestringsearch搜尋指令:searchvsearchquery
includeDefaultMemorybooleantrue自動索引 MEMORY.md + memory/**/*.md
paths[]array額外路徑:{ name, path, pattern? }
sessions.enabledbooleanfalse索引會話紀錄
sessions.retentionDaysnumber逐字稿保留
sessions.exportDirstring匯出目錄

searchMode: "search" 僅為詞彙/BM25 模式。對於該模式,OpenClaw 不會執行語義向量就緒探測或 QMD 嵌入維護,包括在 memory status --deep 期間;vsearchquery 仍需 QMD 向量就緒和嵌入。

OpenClaw 偏好目前的 QMD 集合和 MCP 查詢形狀,但透過在需要時嘗試相容的集合模式旗標和較舊的 MCP 工具名稱,讓較舊的 QMD 版本能正常運作。當 QMD 宣布支援多個集合篩選器時,來源相同的集合會透過一個 QMD 程序進行搜尋;較舊的 QMD 版本則保留每個集合的相容性路徑。來源相同是指持久記憶體集合會分組在一起,而工作階段逐字稿集合則保持為一個獨立的群組,以便來源多樣化仍然能夠同時取得這兩種輸入。

更新排程
類型預設值描述
update.intervalstring5m重新整理間隔
update.debounceMsnumber15000對檔案變動進行去抖動(debounce)
update.onBootbooleantrue當長期執行的 QMD 管理員開啟時重新整理;亦作為選用啟動時重新整理的閘道
update.startupstringoff選用的閘道啟動時重新整理:offidleimmediate
update.startupDelayMsnumber120000startup: "idle" 重新整理執行前的延遲
update.waitForBootSyncbooleanfalse封鎖管理員開啟,直到其初始重新整理完成
update.embedIntervalstring獨立的嵌入步調
update.commandTimeoutMsnumberQMD 指令的逾時時間
update.updateTimeoutMsnumberQMD 更新作業的逾時時間
update.embedTimeoutMsnumberQMD 嵌入作業的逾時時間
限制
KeyTypeDefaultDescription
limits.maxResultsnumber6最大搜尋結果
limits.maxSnippetCharsnumber限制摘要長度
limits.maxInjectedCharsnumber限制總插入字元
limits.timeoutMsnumber4000搜尋逾時
範圍

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

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

預設設定允許直接和頻道會話,但仍拒絕群組。

預設僅限 DM。match.keyPrefix 符合正規化的會話鍵;match.rawKeyPrefix 符合包含 `agent:

:` 的原始鍵。

引用

memory.citations 適用於所有後端:

ValueBehavior
auto (預設)在摘要中包含 `Source:

頁尾 | |on | 總是包含頁尾 | |off` | 省略頁尾 (路徑仍在內部傳遞給代理程式) |

QMD 啟動刷新在閘道啟動期間使用一次性子程式路徑。當記憶搜尋開啟以供互動使用時,長存活的 QMD 管理器仍擁有一般的檔案監視器和計時器。

{
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" }],
},
},
}

夢境是在 plugins.entries.memory-core.config.dreaming 下配置,而不是在 agents.defaults.memorySearch 下。

夢境作為一個計劃的掃描運行,並使用內部輕度/深度/REM 階段作為實作細節。

關於概念行為和斜線指令,請參閱 夢境

類型預設值說明
enabledbooleanfalse完全啟用或停用夢境
frequencystring0 3 * * *完整夢境掃描的選用 cron 頻率
modelstring預設模型選用的夢境日記子代理模型覆寫
{
plugins: {
entries: {
"memory-core": {
subagent: {
allowModelOverride: true,
allowedModels: ["anthropic/claude-sonnet-4-6"],
},
config: {
dreaming: {
enabled: true,
frequency: "0 3 * * *",
model: "anthropic/claude-sonnet-4-6",
},
},
},
},
},
}