跳轉到主要內容

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

此頁列出 OpenClaw 記憶搜尋的所有設定選項。如需概念概覽,請參閱:

記憶概覽

記憶的運作方式。

內建引擎

預設 SQLite 後端。

QMD 引擎

本地優先的 sidecar。

記憶搜尋

搜尋管線與調校。

Active memory

互動式工作階段的記憶子代理。
除非另有註明,所有記憶搜尋設定都位於 openclaw.jsonagents.defaults.memorySearch 之下。
如果你正在尋找 active memory 功能切換與子代理設定,它位於 plugins.entries.active-memory 之下,而不是 memorySearchActive memory 使用雙閘門模型:
  1. Plugin 必須啟用並鎖定目前的代理 ID
  2. 請求必須是符合資格的互動式持久聊天工作階段
請參閱 Active Memory,了解啟用模型、Plugin 擁有的設定、轉錄保存,以及安全推出模式。

提供者選擇

類型預設值說明
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 權杖(環境變數或驗證設定檔),則選取。
3

openai

如果可解析 OpenAI 金鑰,則選取。
4

gemini

如果可解析 Gemini 金鑰,則選取。
5

voyage

如果可解析 Voyage 金鑰,則選取。
6

mistral

如果可解析 Mistral 金鑰,則選取。
7

deepinfra

如果可解析 DeepInfra 金鑰,則選取。
8

bedrock

如果 AWS SDK 憑證鏈可解析(執行個體角色、存取金鑰、設定檔、SSO、Web 身分或共用設定),則選取。
支援 ollama,但不會自動偵測(請明確設定)。

自訂提供者 ID

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 金鑰解析

遠端嵌入需要 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
Codex OAuth 僅涵蓋聊天/補全,不滿足嵌入請求。

遠端端點設定

用於自訂 OpenAI 相容端點或覆寫提供者預設值:
remote.baseUrl
string
自訂 API 基底 URL。
remote.apiKey
string
覆寫 API 金鑰。
remote.headers
object
額外 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
變更模型或 outputDimensionality 會觸發自動完整重新索引。
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 使用 AWS SDK 預設憑證鏈,不需要 API 金鑰。如果 OpenClaw 在 EC2 上執行,且具備啟用 Bedrock 的執行個體角色,只需設定提供者與模型:
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "bedrock",
        model: "amazon.titan-embed-text-v2:0",
      },
    },
  },
}
類型預設值說明
modelstringamazon.titan-embed-text-v2:0任何 Bedrock 嵌入模型 ID
outputDimensionalitynumber模型預設值用於 Titan V2:256、512 或 1024
支援的模型(包含系列偵測與維度預設值):
模型 ID提供者預設維度可設定維度
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-1IAM 權限: IAM 角色或使用者需要:
{
  "Effect": "Allow",
  "Action": "bedrock:InvokeModel",
  "Resource": "*"
}
若採用最低權限,請將 InvokeModel 範圍限制於特定模型:
arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0
類型預設值說明
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 個 token → 約 32 GB VRAM,相較於 4096 時約 8.8 GB)。
預設模型:embeddinggemma-300m-qat-Q8_0.gguf(約 0.6 GB,自動下載)。需要原生建置:先執行 pnpm approve-builds,再執行 pnpm rebuild node-llama-cpp使用獨立 CLI 來驗證 Gateway 使用的同一個提供者路徑:
openclaw memory status --deep --agent main
openclaw memory index --force --agent main
如果 providerauto,只有在 local.modelPath 指向現有本機檔案時,才會選取 localhf: 與 HTTP(S) 模型參照仍可透過 provider: "local" 明確使用,但在模型可於磁碟上使用之前,它們不會讓 auto 選取本機。

內嵌嵌入逾時

sync.embeddingBatchTimeoutSeconds
number
覆寫記憶索引期間內嵌嵌入批次的逾時時間。未設定時會使用提供者預設值:本機/自行託管提供者(例如 localollamalmstudio)為 600 秒,託管提供者為 120 秒。當本機受 CPU 限制的嵌入批次運作正常但速度較慢時,請增加此值。

混合搜尋設定

全部位於 memorySearch.query.hybrid 下:
類型預設值說明
enabledbooleantrue啟用混合 BM25 + 向量搜尋
vectorWeightnumber0.7向量分數的權重(0-1)
textWeightnumber0.3BM25 分數的權重(0-1)
candidateMultipliernumber4候選池大小倍數
類型預設值說明
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 },
          },
        },
      },
    },
  },
}

其他記憶路徑

類型說明
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)

使用 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.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重新索引的訊息閾值
工作階段索引為選用,且會非同步執行。結果可能稍微過時。工作階段記錄位於磁碟上,因此請將檔案系統存取視為信任邊界。

SQLite 向量加速(sqlite-vec)

類型預設值描述
store.vector.enabledbooleantrue使用 sqlite-vec 進行向量查詢
store.vector.extensionPathstring隨附覆寫 sqlite-vec 路徑
當 sqlite-vec 無法使用時,OpenClaw 會自動退回使用程序內餘弦相似度。

索引儲存

類型預設值描述
store.pathstring~/.openclaw/memory/{agentId}.sqlite索引位置(支援 {agentId} 權杖)
store.fts.tokenizerstringunicode61FTS5 tokenizer(unicode61trigram

QMD 後端設定

設定 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 collection 與 MCP 查詢形狀,但會在需要時嘗試相容的 collection pattern 旗標和較舊的 MCP tool 名稱,以維持較舊 QMD 版本可用。當 QMD 宣告支援多個 collection filters 時,同來源 collections 會以單一 QMD process 搜尋;較舊的 QMD build 則保留逐 collection 的相容路徑。同來源表示 durable memory collections 會分在同一組,而 session transcript collections 仍會保留為獨立群組,因此 source diversification 仍同時具備兩種輸入。
QMD model overrides 保留在 QMD 端,而不是 OpenClaw config。如果你需要全域覆寫 QMD 的 models,請在 Gateway runtime environment 中設定環境變數,例如 QMD_EMBED_MODELQMD_RERANK_MODELQMD_GENERATE_MODEL
KeyTypeDefaultDescription
update.intervalstring5m重新整理間隔
update.debounceMsnumber15000對檔案變更進行 debounce
update.onBootbooleantrue在 long-lived QMD manager 開啟時重新整理;也會管控選擇啟用的 startup refresh
update.startupstringoff選用的 gateway-start refresh:offidleimmediate
update.startupDelayMsnumber120000執行 startup: "idle" refresh 前的延遲
update.waitForBootSyncbooleanfalse阻擋 manager 開啟,直到其初始重新整理完成
update.embedIntervalstring獨立的 embed cadence
update.commandTimeoutMsnumberQMD commands 的逾時
update.updateTimeoutMsnumberQMD update operations 的逾時
update.embedTimeoutMsnumberQMD embed operations 的逾時
KeyTypeDefaultDescription
limits.maxResultsnumber6搜尋結果上限
limits.maxSnippetCharsnumber限制 snippet 長度
limits.maxInjectedCharsnumber限制注入字元總數
limits.timeoutMsnumber4000搜尋逾時
控制哪些 sessions 可以接收 QMD 搜尋結果。Schema 與 session.sendPolicy 相同:
{
  memory: {
    qmd: {
      scope: {
        default: "deny",
        rules: [{ action: "allow", match: { chatType: "direct" } }],
      },
    },
  },
}
隨附的預設值允許 direct 和 channel sessions,同時仍拒絕 groups。預設為僅 DM。match.keyPrefix 會比對標準化後的 session key;match.rawKeyPrefix 會比對包含 agent:<id>: 的 raw key。
QMD boot refreshes 會在 Gateway startup 期間使用一次性的 subprocess 路徑。當 memory search 開啟以供互動使用時,long-lived QMD manager 仍負責一般的 file watcher 與 interval timers。

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

Dreaming

Dreaming 設定於 plugins.entries.memory-core.config.dreaming,而不是 agents.defaults.memorySearch Dreaming 會作為單一排程 sweep 執行,並將內部 light/deep/REM phases 作為實作細節使用。 概念行為與 slash commands,請參閱 Dreaming

使用者設定

KeyTypeDefaultDescription
enabledbooleanfalse完全啟用或停用 dreaming
frequencystring0 3 * * *完整 dreaming sweep 的選用 cron cadence
modelstringdefault model選用的 Dream Diary subagent model override

範例

{
  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",
          },
        },
      },
    },
  },
}
  • Dreaming 會將機器狀態寫入 memory/.dreams/
  • Dreaming 會將人類可讀的敘事輸出寫入 DREAMS.md(或現有的 dreams.md)。
  • dreaming.model 會使用現有的 plugin subagent trust gate;請先設定 plugins.entries.memory-core.subagent.allowModelOverride: true 再啟用。
  • 當設定的 model 無法使用時,Dream Diary 會使用 session default model 重試一次。Trust 或 allowlist 失敗會被記錄,且不會靜默重試。
  • light/deep/REM phase policy 與 thresholds 是內部行為,不是面向使用者的 config。

相關內容