跳转到内容

内存配置参考

本页面列出了 OpenClaw 内存搜索的每个配置选项。有关概念概述,请参阅:

除非另有说明,否则所有内存搜索设置均位于 openclaw.json 中的 agents.defaults.memorySearch 下。


类型默认值描述
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 但不会自动检测(需显式设置)。

Remote embeddings require an API key. OpenClaw resolves from: auth profiles, models.providers.*.apiKey, or 环境变量.

提供商环境变量配置键
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 (占位符)

Codex OAuth covers chat/completions only and does not satisfy embedding requests.


For custom OpenAI-compatible endpoints or overriding 提供商 defaults:

类型描述
remote.baseUrlstring自定义 API 基础 URL
remote.apiKeystring覆盖 API 密钥
remote.headersobjectExtra HTTP headers (merged with 提供商 defaults)
{
agents: {
defaults: {
memorySearch: {
provider: "openai",
model: "text-embedding-3-small",
remote: {
baseUrl: "https://api.example.com/v1/",
apiKey: "YOUR_KEY",
},
},
},
},
}

类型默认值描述
modelstringgemini-embedding-001Also supports gemini-embedding-2-preview
outputDimensionalitynumber3072For Embedding 2: 768, 1536, or 3072


类型默认值描述
local.modelPathstringauto-downloadedGGUF 模型文件的路径
local.modelCacheDirstringnode-llama-cpp 默认已下载模型的缓存目录

Default 模型: embeddinggemma-300m-qat-Q8_0.gguf (~0.6 GB, auto-downloaded). Requires native build: pnpm approve-builds then pnpm rebuild node-llama-cpp.


All under memorySearch.query.hybrid:

类型默认值描述
enabledbooleantrue启用混合 BM25 + 向量搜索
vectorWeightnumber0.7向量分数的权重 (0-1)
textWeightnumber0.3BM25 分数的权重 (0-1)
candidateMultipliernumber4候选池大小倍数
键 (Key)类型 (Type)默认值 (Default)描述 (Description)
mmr.enabledbooleanfalse启用 MMR 重排序
mmr.lambdanumber0.70 = 最大多样性,1 = 最大相关性
键 (Key)类型 (Type)默认值 (Default)描述 (Description)
temporalDecay.enabledbooleanfalse启用近期性提升
temporalDecay.halfLifeDaysnumber30分数每 N 天减半

常青文件 (MEMORY.md,即 memory/ 中的非日期文件) 永远不会衰减。

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

键 (Key)类型 (Type)描述 (Description)
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 一起索引图像和音频:

键 (Key)类型 (Type)默认值 (Default)描述 (Description)
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 展示它们:

类型默认值描述
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} token)
store.fts.tokenizerstringunicode61FTS5 分词器(unicode61trigram

设置 memory.backend = "qmd" 以启用。所有 QMD 设置都位于 memory.qmd 下:

类型默认值描述
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" } }],
},
},
},
}

默认为仅私信。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" }],
},
},
}