chore(i18n): refresh zh-CN translations
This commit is contained in:
parent
415924f8e6
commit
45d479b3ee
@ -1,59 +1,59 @@
|
||||
---
|
||||
read_when:
|
||||
- 你想了解 memory_search 是如何工作的
|
||||
- 你想了解 memory_search 的工作原理
|
||||
- 你想选择一个嵌入提供商
|
||||
- 你想调整搜索质量
|
||||
summary: 内存搜索如何使用嵌入和混合检索来查找相关笔记
|
||||
title: 内存搜索
|
||||
- 你想要调优搜索质量
|
||||
summary: 记忆搜索如何使用嵌入和混合检索查找相关笔记
|
||||
title: 记忆搜索
|
||||
x-i18n:
|
||||
generated_at: "2026-04-28T02:18:30Z"
|
||||
model: gpt-5.4
|
||||
generated_at: "2026-04-30T14:28:18Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 3e6c44d90f49a797bda01b9a575928c128a334f89ae14fc3620e65562a866aa9
|
||||
source_hash: 7f40bbe32453a28070ffc67f19a4c06e2fe59a24237a2aef353f4b9b8260bcf2
|
||||
source_path: concepts/memory-search.md
|
||||
workflow: 15
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
`memory_search` 会从你的记忆文件中查找相关笔记,即使措辞与原文不同也可以。它的工作方式是将记忆内容索引为小块,然后使用嵌入、关键词或两者结合来进行搜索。
|
||||
`memory_search` 会从你的记忆文件中查找相关笔记,即使用词与原文不同也能找到。它通过将记忆索引成小块,并使用嵌入、关键字或两者来搜索这些小块。
|
||||
|
||||
## 快速开始
|
||||
|
||||
如果你已配置 GitHub Copilot 订阅、OpenAI、Gemini、Voyage 或 Mistral API key,内存搜索会自动工作。若要显式设置提供商:
|
||||
如果你已配置 GitHub Copilot 订阅,或 OpenAI、Gemini、Voyage、Mistral API key,记忆搜索会自动工作。要显式设置提供商:
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
defaults: {
|
||||
memorySearch: {
|
||||
provider: "openai", // 或 "gemini"、"local"、"ollama" 等。
|
||||
provider: "openai", // or "gemini", "local", "ollama", etc.
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
对于多端点设置,`provider` 也可以是自定义的 `models.providers.<id>` 条目,例如 `ollama-5080`,前提是该提供商设置了 `api: "ollama"` 或其他嵌入适配器所有者。
|
||||
对于多端点设置,当该提供商设置了 `api: "ollama"` 或其他嵌入适配器所有者时,`provider` 也可以是自定义的 `models.providers.<id>` 条目,例如 `ollama-5080`。
|
||||
|
||||
如果你想使用无需 API key 的本地嵌入,请在 OpenClaw 旁边安装可选的 `node-llama-cpp` 运行时包,并使用 `provider: "local"`。
|
||||
对于不需要 API key 的本地嵌入,设置 `provider: "local"`。打包安装会在 OpenClaw 管理的插件 runtime-deps 树中保留原生 `node-llama-cpp` 运行时;如果该树需要修复,请运行 `openclaw doctor --fix`。
|
||||
|
||||
某些与 OpenAI 兼容的嵌入端点需要非对称标签,例如搜索时使用 `input_type: "query"`,为已索引分块使用 `input_type: "document"` 或 `"passage"`。可通过 `memorySearch.queryInputType` 和 `memorySearch.documentInputType` 进行配置;参见 [Memory configuration reference](/zh-CN/reference/memory-config#provider-specific-config)。
|
||||
某些 OpenAI 兼容的嵌入端点需要非对称标签,例如搜索使用 `input_type: "query"`,索引块使用 `input_type: "document"` 或 `"passage"`。使用 `memorySearch.queryInputType` 和 `memorySearch.documentInputType` 配置这些项;请参阅[记忆配置参考](/zh-CN/reference/memory-config#provider-specific-config)。
|
||||
|
||||
## 支持的提供商
|
||||
|
||||
| 提供商 | ID | 需要 API key | 说明 |
|
||||
| -------------- | ---------------- | ------------- | ---------------------------------------------------- |
|
||||
| Bedrock | `bedrock` | 否 | 当 AWS 凭证链可解析时自动检测 |
|
||||
| Gemini | `gemini` | 是 | 支持图像/音频索引 |
|
||||
| GitHub Copilot | `github-copilot` | 否 | 自动检测,使用 Copilot 订阅 |
|
||||
| Local | `local` | 否 | GGUF 模型,下载大小约 0.6 GB |
|
||||
| Mistral | `mistral` | 是 | 自动检测 |
|
||||
| Ollama | `ollama` | 否 | 本地,必须显式设置 |
|
||||
| OpenAI | `openai` | 是 | 自动检测,速度快 |
|
||||
| Voyage | `voyage` | 是 | 自动检测 |
|
||||
| 提供商 | ID | 需要 API key | 备注 |
|
||||
| -------------- | ---------------- | ------------ | ---------------------------------------------------- |
|
||||
| Bedrock | `bedrock` | 否 | AWS 凭证链解析成功时自动检测 |
|
||||
| Gemini | `gemini` | 是 | 支持图像/音频索引 |
|
||||
| GitHub Copilot | `github-copilot` | 否 | 自动检测,使用 Copilot 订阅 |
|
||||
| Local | `local` | 否 | GGUF 模型,下载约 0.6 GB |
|
||||
| Mistral | `mistral` | 是 | 自动检测 |
|
||||
| Ollama | `ollama` | 否 | 本地运行,必须显式设置 |
|
||||
| OpenAI | `openai` | 是 | 自动检测,速度快 |
|
||||
| Voyage | `voyage` | 是 | 自动检测 |
|
||||
|
||||
## 搜索如何工作
|
||||
|
||||
OpenClaw 会并行运行两条检索路径,并合并结果:
|
||||
OpenClaw 会并行运行两条检索路径并合并结果:
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
@ -66,31 +66,31 @@ flowchart LR
|
||||
M --> R["Top Results"]
|
||||
```
|
||||
|
||||
- **向量搜索** 查找语义相近的笔记(“gateway host” 可以匹配 “the machine running OpenClaw”)。
|
||||
- **BM25 关键词搜索** 查找精确匹配(ID、错误字符串、配置键)。
|
||||
- **向量搜索**会查找含义相近的笔记(“gateway host”匹配“运行 OpenClaw 的机器”)。
|
||||
- **BM25 关键字搜索**会查找精确匹配项(ID、错误字符串、配置键)。
|
||||
|
||||
如果只有一条路径可用(没有嵌入或没有 FTS),则仅运行另一条路径。
|
||||
如果只有一条路径可用(没有嵌入或没有 FTS),另一条路径会单独运行。
|
||||
|
||||
当嵌入不可用时,OpenClaw 仍会对 FTS 结果使用词法排序,而不只是退化为原始的精确匹配顺序。这种降级模式会提升那些查询词覆盖更强、文件路径更相关的分块,从而即使没有 `sqlite-vec` 或嵌入提供商,也能保持较好的召回效果。
|
||||
当嵌入不可用时,OpenClaw 仍会对 FTS 结果使用词法排序,而不是只回退到原始精确匹配排序。这种降级模式会提升查询词覆盖更强、文件路径更相关的块,即使没有 `sqlite-vec` 或嵌入提供商,也能保持有用的召回率。
|
||||
|
||||
## 提升搜索质量
|
||||
|
||||
当你有大量笔记历史时,两项可选功能会有所帮助:
|
||||
当你有大量历史笔记时,两个可选功能会有所帮助:
|
||||
|
||||
### 时间衰减
|
||||
|
||||
旧笔记的排名权重会逐渐降低,因此最近的信息会优先显示。默认半衰期为 30 天,这意味着上个月的笔记得分会降至原始权重的 50%。像 `MEMORY.md` 这样的常青文件永远不会衰减。
|
||||
旧笔记会逐渐降低排序权重,让近期信息优先浮现。默认半衰期为 30 天,上个月的笔记得分为其原始权重的 50%。像 `MEMORY.md` 这样的长期有效文件永远不会衰减。
|
||||
|
||||
<Tip>
|
||||
如果你的智能体积累了数个月的每日笔记,而过时信息总是排在最新上下文之前,请启用时间衰减。
|
||||
如果你的智能体有数月的每日笔记,并且过时信息持续排在近期上下文前面,请启用时间衰减。
|
||||
</Tip>
|
||||
|
||||
### MMR(多样性)
|
||||
|
||||
减少重复结果。如果五条笔记都提到同一份路由器配置,MMR 会确保顶部结果覆盖不同主题,而不是反复出现相似内容。
|
||||
减少重复结果。如果五条笔记都提到相同的路由器配置,MMR 会确保顶部结果覆盖不同主题,而不是重复出现。
|
||||
|
||||
<Tip>
|
||||
如果 `memory_search` 总是从不同的每日笔记中返回近乎重复的片段,请启用 MMR。
|
||||
如果 `memory_search` 持续从不同的每日笔记返回近似重复的片段,请启用 MMR。
|
||||
</Tip>
|
||||
|
||||
### 同时启用两者
|
||||
@ -114,30 +114,30 @@ flowchart LR
|
||||
|
||||
## 多模态记忆
|
||||
|
||||
使用 Gemini Embedding 2 时,你可以在 Markdown 之外同时索引图像和音频文件。搜索查询仍然是文本,但它们可以匹配视觉和音频内容。设置方法请参见 [Memory configuration reference](/zh-CN/reference/memory-config)。
|
||||
使用 Gemini Embedding 2,你可以将图像和音频文件与 Markdown 一起索引。搜索查询仍然是文本,但会匹配视觉和音频内容。设置方法请参阅[记忆配置参考](/zh-CN/reference/memory-config)。
|
||||
|
||||
## 会话内存搜索
|
||||
## 会话记忆搜索
|
||||
|
||||
你也可以选择为会话转录建立索引,这样 `memory_search` 就能回忆更早的对话。这是通过 `memorySearch.experimental.sessionMemory` 选择启用的。详情请参见 [configuration reference](/zh-CN/reference/memory-config)。
|
||||
你可以选择索引会话转录,这样 `memory_search` 就能回忆更早的对话。这需要通过 `memorySearch.experimental.sessionMemory` 主动启用。详情请参阅[配置参考](/zh-CN/reference/memory-config)。
|
||||
|
||||
## 故障排除
|
||||
|
||||
**没有结果?** 运行 `openclaw memory status` 检查索引。如果为空,运行 `openclaw memory index --force`。
|
||||
|
||||
**只有关键词匹配?** 你的嵌入提供商可能尚未配置。检查 `openclaw memory status --deep`。
|
||||
**只有关键字匹配?** 你的嵌入提供商可能未配置。检查 `openclaw memory status --deep`。
|
||||
|
||||
**本地嵌入超时?** `ollama`、`lmstudio` 和 `local` 默认使用更长的内联批处理超时时间。如果只是主机较慢,请设置 `agents.defaults.memorySearch.sync.embeddingBatchTimeoutSeconds`,然后重新运行 `openclaw memory index --force`。
|
||||
**本地嵌入超时?** `ollama`、`lmstudio` 和 `local` 默认使用更长的内联批处理超时时间。如果主机只是速度慢,请设置 `agents.defaults.memorySearch.sync.embeddingBatchTimeoutSeconds`,然后重新运行 `openclaw memory index --force`。
|
||||
|
||||
**找不到 CJK 文本?** 使用 `openclaw memory index --force` 重新构建 FTS 索引。
|
||||
**找不到 CJK 文本?** 使用 `openclaw memory index --force` 重建 FTS 索引。
|
||||
|
||||
## 进一步阅读
|
||||
## 延伸阅读
|
||||
|
||||
- [Active Memory](/zh-CN/concepts/active-memory) -- 用于交互式聊天会话的子智能体记忆
|
||||
- [Memory](/zh-CN/concepts/memory) -- 文件布局、后端、工具
|
||||
- [Memory configuration reference](/zh-CN/reference/memory-config) -- 所有配置项
|
||||
- [主动记忆](/zh-CN/concepts/active-memory) -- 交互式聊天会话的子智能体记忆
|
||||
- [记忆](/zh-CN/concepts/memory) -- 文件布局、后端、工具
|
||||
- [记忆配置参考](/zh-CN/reference/memory-config) -- 所有配置旋钮
|
||||
|
||||
## 相关内容
|
||||
|
||||
- [Memory overview](/zh-CN/concepts/memory)
|
||||
- [Active memory](/zh-CN/concepts/active-memory)
|
||||
- [Builtin memory engine](/zh-CN/concepts/memory-builtin)
|
||||
- [记忆概览](/zh-CN/concepts/memory)
|
||||
- [主动记忆](/zh-CN/concepts/active-memory)
|
||||
- [内置记忆引擎](/zh-CN/concepts/memory-builtin)
|
||||
|
||||
@ -1,22 +1,22 @@
|
||||
---
|
||||
read_when:
|
||||
- 你想配置记忆搜索提供商或嵌入模型
|
||||
- 你想要配置记忆搜索提供商或嵌入模型
|
||||
- 你想设置 QMD 后端
|
||||
- 你想调优混合搜索、MMR 或时间衰减
|
||||
- 你想启用多模态记忆索引
|
||||
sidebarTitle: Memory config
|
||||
summary: 记忆搜索、嵌入提供商、QMD、混合搜索和多模态索引的所有配置项
|
||||
summary: 用于记忆搜索、嵌入提供商、QMD、混合搜索和多模态索引的所有配置项
|
||||
title: 记忆配置参考
|
||||
x-i18n:
|
||||
generated_at: "2026-04-29T07:52:03Z"
|
||||
generated_at: "2026-04-30T14:28:32Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: fbb21d407f7ec9ef76e68c268138892b12568137735b723579703e535d34b195
|
||||
source_hash: 58b75751a19afb883fd7646cf5f71859f95bac468b2bfd8cc79db12ae892f70f
|
||||
source_path: reference/memory-config.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
本页列出 OpenClaw 记忆搜索的每个配置旋钮。有关概念概览,请参阅:
|
||||
此页面列出了 OpenClaw 记忆搜索的所有配置旋钮。有关概念概览,请参阅:
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="记忆概览" href="/zh-CN/concepts/memory">
|
||||
@ -29,7 +29,7 @@ x-i18n:
|
||||
本地优先的 sidecar。
|
||||
</Card>
|
||||
<Card title="记忆搜索" href="/zh-CN/concepts/memory-search">
|
||||
搜索流水线和调优。
|
||||
搜索流水线与调优。
|
||||
</Card>
|
||||
<Card title="主动记忆" href="/zh-CN/concepts/active-memory">
|
||||
用于交互式会话的记忆子智能体。
|
||||
@ -39,25 +39,25 @@ x-i18n:
|
||||
除非另有说明,所有记忆搜索设置都位于 `openclaw.json` 的 `agents.defaults.memorySearch` 下。
|
||||
|
||||
<Note>
|
||||
如果你在寻找 **主动记忆** 功能开关和子智能体配置,它位于 `plugins.entries.active-memory` 下,而不是 `memorySearch`。
|
||||
如果你要查找 **主动记忆** 功能开关和子智能体配置,它位于 `plugins.entries.active-memory` 下,而不是 `memorySearch`。
|
||||
|
||||
主动记忆使用双门控模型:
|
||||
|
||||
1. 插件必须已启用,并且目标为当前智能体 ID
|
||||
1. 插件必须启用,并且目标是当前智能体 ID
|
||||
2. 请求必须是符合条件的交互式持久聊天会话
|
||||
|
||||
有关激活模型、插件自有配置、转录持久化和安全推出模式,请参阅 [主动记忆](/zh-CN/concepts/active-memory)。
|
||||
有关激活模型、插件拥有的配置、转录持久化和安全发布模式,请参阅 [主动记忆](/zh-CN/concepts/active-memory)。
|
||||
</Note>
|
||||
|
||||
---
|
||||
|
||||
## 提供商选择
|
||||
|
||||
| 键 | 类型 | 默认值 | 说明 |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ---------- | --------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `provider` | `string` | 自动检测 | 嵌入适配器 ID,例如 `bedrock`、`deepinfra`、`gemini`、`github-copilot`、`local`、`mistral`、`ollama`、`openai` 或 `voyage`;也可以是已配置的 `models.providers.<id>`,其 `api` 指向这些适配器之一 |
|
||||
| `model` | `string` | 提供商默认值 | 嵌入模型名称 |
|
||||
| `fallback` | `string` | `"none"` | 主适配器失败时使用的回退适配器 ID |
|
||||
| `fallback` | `string` | `"none"` | 主适配器失败时使用的备用适配器 ID |
|
||||
| `enabled` | `boolean` | `true` | 启用或禁用记忆搜索 |
|
||||
|
||||
### 自动检测顺序
|
||||
@ -66,28 +66,28 @@ x-i18n:
|
||||
|
||||
<Steps>
|
||||
<Step title="local">
|
||||
如果已配置 `memorySearch.local.modelPath` 且文件存在,则选择它。
|
||||
如果已配置 `memorySearch.local.modelPath` 且文件存在,则会选择。
|
||||
</Step>
|
||||
<Step title="github-copilot">
|
||||
如果可以解析 GitHub Copilot token(环境变量或认证配置文件),则选择它。
|
||||
如果可以解析 GitHub Copilot 令牌(环境变量或身份验证配置文件),则会选择。
|
||||
</Step>
|
||||
<Step title="openai">
|
||||
如果可以解析 OpenAI 密钥,则选择它。
|
||||
如果可以解析 OpenAI 密钥,则会选择。
|
||||
</Step>
|
||||
<Step title="gemini">
|
||||
如果可以解析 Gemini 密钥,则选择它。
|
||||
如果可以解析 Gemini 密钥,则会选择。
|
||||
</Step>
|
||||
<Step title="voyage">
|
||||
如果可以解析 Voyage 密钥,则选择它。
|
||||
如果可以解析 Voyage 密钥,则会选择。
|
||||
</Step>
|
||||
<Step title="mistral">
|
||||
如果可以解析 Mistral 密钥,则选择它。
|
||||
如果可以解析 Mistral 密钥,则会选择。
|
||||
</Step>
|
||||
<Step title="deepinfra">
|
||||
如果可以解析 DeepInfra 密钥,则选择它。
|
||||
如果可以解析 DeepInfra 密钥,则会选择。
|
||||
</Step>
|
||||
<Step title="bedrock">
|
||||
如果 AWS SDK 凭证链可以解析(实例角色、访问密钥、配置文件、SSO、Web 身份或共享配置),则选择它。
|
||||
如果 AWS SDK 凭证链可以解析(实例角色、访问密钥、配置文件、SSO、Web 身份或共享配置),则会选择。
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
@ -95,7 +95,7 @@ x-i18n:
|
||||
|
||||
### 自定义提供商 ID
|
||||
|
||||
`memorySearch.provider` 可以指向自定义 `models.providers.<id>` 条目。OpenClaw 会为嵌入适配器解析该提供商的 `api` 所有者,同时保留自定义提供商 ID,用于端点、认证和模型前缀处理。这让多 GPU 或多主机设置可以将记忆嵌入专用于特定本地端点:
|
||||
`memorySearch.provider` 可以指向自定义 `models.providers.<id>` 条目。OpenClaw 会解析该提供商的 `api` 所有者以用于嵌入适配器,同时保留自定义提供商 ID,用于端点、身份验证和模型前缀处理。这让多 GPU 或多主机设置可以将记忆嵌入专用于特定本地端点:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -129,21 +129,21 @@ x-i18n:
|
||||
| Bedrock | AWS 凭证链 | 不需要 API 密钥 |
|
||||
| DeepInfra | `DEEPINFRA_API_KEY` | `models.providers.deepinfra.apiKey` |
|
||||
| Gemini | `GEMINI_API_KEY` | `models.providers.google.apiKey` |
|
||||
| GitHub Copilot | `COPILOT_GITHUB_TOKEN`, `GH_TOKEN`, `GITHUB_TOKEN` | 通过设备登录的认证配置文件 |
|
||||
| GitHub Copilot | `COPILOT_GITHUB_TOKEN`, `GH_TOKEN`, `GITHUB_TOKEN` | 通过设备登录的身份验证配置文件 |
|
||||
| Mistral | `MISTRAL_API_KEY` | `models.providers.mistral.apiKey` |
|
||||
| Ollama | `OLLAMA_API_KEY`(占位符) | -- |
|
||||
| OpenAI | `OPENAI_API_KEY` | `models.providers.openai.apiKey` |
|
||||
| Voyage | `VOYAGE_API_KEY` | `models.providers.voyage.apiKey` |
|
||||
|
||||
<Note>
|
||||
Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
Codex OAuth 仅覆盖聊天/补全,不满足嵌入请求。
|
||||
</Note>
|
||||
|
||||
---
|
||||
|
||||
## 远程端点配置
|
||||
|
||||
用于自定义 OpenAI 兼容端点,或覆盖提供商默认值:
|
||||
用于自定义 OpenAI 兼容端点或覆盖提供商默认值:
|
||||
|
||||
<ParamField path="remote.baseUrl" type="string">
|
||||
自定义 API 基础 URL。
|
||||
@ -178,7 +178,7 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Gemini">
|
||||
| 键 | 类型 | 默认值 | 说明 |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ---------------------- | -------- | ---------------------- | ------------------------------------------ |
|
||||
| `model` | `string` | `gemini-embedding-001` | 也支持 `gemini-embedding-2-preview` |
|
||||
| `outputDimensionality` | `number` | `3072` | 对于 Embedding 2:768、1536 或 3072 |
|
||||
@ -189,13 +189,13 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="OpenAI 兼容输入类型">
|
||||
OpenAI 兼容嵌入端点可以选择加入提供商特定的 `input_type` 请求字段。这对于非对称嵌入模型很有用,这类模型要求查询和文档嵌入使用不同标签。
|
||||
OpenAI 兼容嵌入端点可以选择使用提供商特定的 `input_type` 请求字段。这对需要为查询和文档嵌入使用不同标签的非对称嵌入模型很有用。
|
||||
|
||||
| 键 | 类型 | 默认值 | 说明 |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ------------------- | -------- | ------- | ------------------------------------------------------- |
|
||||
| `inputType` | `string` | 未设置 | 查询和文档嵌入共享的 `input_type` |
|
||||
| `queryInputType` | `string` | 未设置 | 查询时的 `input_type`;覆盖 `inputType` |
|
||||
| `documentInputType` | `string` | 未设置 | 索引/文档的 `input_type`;覆盖 `inputType` |
|
||||
| `documentInputType` | `string` | 未设置 | 索引/文档 `input_type`;覆盖 `inputType` |
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -216,11 +216,11 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
}
|
||||
```
|
||||
|
||||
更改这些值会影响提供商批量索引的嵌入缓存身份;如果上游模型对这些标签的处理不同,之后应执行一次记忆重建索引。
|
||||
更改这些值会影响提供商批量索引的嵌入缓存身份;当上游模型对这些标签采取不同处理时,随后应重建记忆索引。
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Bedrock">
|
||||
Bedrock 使用 AWS SDK 默认凭证链,不需要 API 密钥。如果 OpenClaw 在 EC2 上运行,并带有启用了 Bedrock 的实例角色,只需设置提供商和模型:
|
||||
Bedrock 使用 AWS SDK 默认凭证链,不需要 API 密钥。如果 OpenClaw 在带有启用 Bedrock 的实例角色的 EC2 上运行,只需设置提供商和模型:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -235,20 +235,20 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
}
|
||||
```
|
||||
|
||||
| 键 | 类型 | 默认值 | 说明 |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ---------------------- | -------- | ------------------------------ | ------------------------------- |
|
||||
| `model` | `string` | `amazon.titan-embed-text-v2:0` | 任意 Bedrock 嵌入模型 ID |
|
||||
| `outputDimensionality` | `number` | 模型默认值 | 对于 Titan V2:256、512 或 1024 |
|
||||
|
||||
**支持的模型**(带系列检测和默认维度):
|
||||
**支持的模型**(包含系列检测和维度默认值):
|
||||
|
||||
| 模型 ID | 提供商 | 默认维度 | 可配置维度 |
|
||||
| ------------------------------------------ | ---------- | ------------ | -------------------- |
|
||||
| `amazon.titan-embed-text-v2:0` | Amazon | 1024 | 256, 512, 1024 |
|
||||
| `amazon.titan-embed-text-v2:0` | Amazon | 1024 | 256、512、1024 |
|
||||
| `amazon.titan-embed-text-v1` | Amazon | 1536 | -- |
|
||||
| `amazon.titan-embed-g1-text-02` | Amazon | 1536 | -- |
|
||||
| `amazon.titan-embed-image-v1` | Amazon | 1024 | -- |
|
||||
| `amazon.nova-2-multimodal-embeddings-v1:0` | Amazon | 1024 | 256, 384, 1024, 3072 |
|
||||
| `amazon.nova-2-multimodal-embeddings-v1:0` | Amazon | 1024 | 256、384、1024、3072 |
|
||||
| `cohere.embed-english-v3` | Cohere | 1024 | -- |
|
||||
| `cohere.embed-multilingual-v3` | Cohere | 1024 | -- |
|
||||
| `cohere.embed-v4:0` | Cohere | 1536 | 256-1536 |
|
||||
@ -257,17 +257,17 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
|
||||
带吞吐量后缀的变体(例如 `amazon.titan-embed-text-v1:2:8k`)会继承基础模型的配置。
|
||||
|
||||
**认证:** Bedrock 认证使用标准 AWS SDK 凭证解析顺序:
|
||||
**身份验证:**Bedrock 身份验证使用标准 AWS SDK 凭证解析顺序:
|
||||
|
||||
1. 环境变量(`AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY`)
|
||||
2. SSO token 缓存
|
||||
3. Web 身份 token 凭证
|
||||
2. SSO 令牌缓存
|
||||
3. Web 身份令牌凭证
|
||||
4. 共享凭证和配置文件
|
||||
5. ECS 或 EC2 元数据凭证
|
||||
|
||||
区域会从 `AWS_REGION`、`AWS_DEFAULT_REGION`、`amazon-bedrock` 提供商 `baseUrl` 解析,或默认使用 `us-east-1`。
|
||||
区域会从 `AWS_REGION`、`AWS_DEFAULT_REGION`、`amazon-bedrock` 提供商 `baseUrl` 解析,或默认为 `us-east-1`。
|
||||
|
||||
**IAM 权限:** IAM 角色或用户需要:
|
||||
**IAM 权限:**IAM 角色或用户需要:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -277,7 +277,7 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
}
|
||||
```
|
||||
|
||||
为实现最小权限,请将 `InvokeModel` 范围限定到特定模型:
|
||||
对于最小权限,将 `InvokeModel` 范围限定到具体模型:
|
||||
|
||||
```
|
||||
arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0
|
||||
@ -285,22 +285,22 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="本地(GGUF + node-llama-cpp)">
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| --------------------- | ------------------ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `local.modelPath` | `string` | 自动下载 | GGUF 模型文件路径 |
|
||||
| `local.modelCacheDir` | `string` | node-llama-cpp 默认值 | 已下载模型的缓存目录 |
|
||||
| `local.contextSize` | `number \| "auto"` | `4096` | 嵌入上下文的上下文窗口大小。4096 可覆盖典型分块(128–512 个 token),同时限制非权重 VRAM。资源受限的主机可降至 1024–2048。`"auto"` 使用模型训练时的最大值,不建议用于 8B+ 模型(Qwen3-Embedding-8B:40 960 个 token → 约 32 GB VRAM,而 4096 时约 8.8 GB)。 |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| --------------------- | ------------------ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `local.modelPath` | `string` | 自动下载 | GGUF 模型文件的路径 |
|
||||
| `local.modelCacheDir` | `string` | node-llama-cpp 默认值 | 下载模型的缓存目录 |
|
||||
| `local.contextSize` | `number \| "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`。
|
||||
默认模型:`embeddinggemma-300m-qat-Q8_0.gguf`(约 0.6 GB,自动下载)。配置了 `provider: "local"` 时,打包安装会通过托管插件运行时依赖修复原生 `node-llama-cpp` 运行时。源码检出仍需要原生构建批准:先运行 `pnpm approve-builds`,再运行 `pnpm rebuild node-llama-cpp`。
|
||||
|
||||
使用独立 CLI 验证 Gateway 网关使用的同一个提供商路径:
|
||||
使用独立 CLI 验证 Gateway 网关使用的同一提供商路径:
|
||||
|
||||
```bash
|
||||
openclaw memory status --deep --agent main
|
||||
openclaw memory index --force --agent main
|
||||
```
|
||||
|
||||
如果 `provider` 是 `auto`,只有当 `local.modelPath` 指向现有本地文件时才会选择 `local`。`hf:` 和 HTTP(S) 模型引用仍可通过 `provider: "local"` 显式使用,但在模型可用于磁盘之前,它们不会让 `auto` 选择本地。
|
||||
如果 `provider` 是 `auto`,只有当 `local.modelPath` 指向现有本地文件时,才会选择 `local`。`hf:` 和 HTTP(S) 模型引用仍可与 `provider: "local"` 一起显式使用,但在模型可用于磁盘之前,它们不会让 `auto` 选择本地。
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -308,9 +308,9 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
### 内联嵌入超时
|
||||
|
||||
<ParamField path="sync.embeddingBatchTimeoutSeconds" type="number">
|
||||
覆盖内存索引期间内联嵌入批次的超时时间。
|
||||
覆盖记忆索引期间内联嵌入批次的超时时间。
|
||||
|
||||
未设置时使用提供商默认值:`local`、`ollama` 和 `lmstudio` 等本地/自托管提供商为 600 秒,托管提供商为 120 秒。当本地 CPU 密集型嵌入批次健康但较慢时,请增大此值。
|
||||
未设置时使用提供商默认值:`local`、`ollama` 和 `lmstudio` 等本地/自托管提供商为 600 秒,托管提供商为 120 秒。当本地 CPU 受限的嵌入批次运行正常但速度较慢时,请增大此值。
|
||||
</ParamField>
|
||||
|
||||
---
|
||||
@ -322,24 +322,24 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| --------------------- | --------- | ------ | ---------------------------- |
|
||||
| `enabled` | `boolean` | `true` | 启用混合 BM25 + 向量搜索 |
|
||||
| `vectorWeight` | `number` | `0.7` | 向量分数的权重(0-1) |
|
||||
| `textWeight` | `number` | `0.3` | BM25 分数的权重(0-1) |
|
||||
| `vectorWeight` | `number` | `0.7` | 向量分数权重(0-1) |
|
||||
| `textWeight` | `number` | `0.3` | BM25 分数权重(0-1) |
|
||||
| `candidateMultiplier` | `number` | `4` | 候选池大小倍数 |
|
||||
|
||||
<Tabs>
|
||||
<Tab title="MMR(多样性)">
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ------------- | --------- | ------- | ----------------------------- |
|
||||
| `mmr.enabled` | `boolean` | `false` | 启用 MMR 重排序 |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ------------- | --------- | ------ | ------------------------------ |
|
||||
| `mmr.enabled` | `boolean` | `false` | 启用 MMR 重新排序 |
|
||||
| `mmr.lambda` | `number` | `0.7` | 0 = 最大多样性,1 = 最大相关性 |
|
||||
</Tab>
|
||||
<Tab title="时间衰减(新近度)">
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ---------------------------- | --------- | ------ | --------------------- |
|
||||
| `temporalDecay.enabled` | `boolean` | `false` | 启用新近度提升 |
|
||||
| `temporalDecay.halfLifeDays` | `number` | `30` | 每 N 天分数减半 |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ---------------------------- | --------- | ------ | ---------------------- |
|
||||
| `temporalDecay.enabled` | `boolean` | `false` | 启用新近度提升 |
|
||||
| `temporalDecay.halfLifeDays` | `number` | `30` | 每 N 天分数减半 |
|
||||
|
||||
常青文件(`MEMORY.md`、`memory/` 中不带日期的文件)永远不会衰减。
|
||||
常青文件(`MEMORY.md`、`memory/` 中非日期命名的文件)永不衰减。
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
@ -367,11 +367,11 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
|
||||
---
|
||||
|
||||
## 其他内存路径
|
||||
## 其他记忆路径
|
||||
|
||||
| 键 | 类型 | 描述 |
|
||||
| ------------ | ---------- | -------------------------- |
|
||||
| `extraPaths` | `string[]` | 要索引的其他目录或文件 |
|
||||
| 键 | 类型 | 描述 |
|
||||
| ------------ | ---------- | -------------------------------- |
|
||||
| `extraPaths` | `string[]` | 要索引的其他目录或文件 |
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -385,38 +385,38 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
}
|
||||
```
|
||||
|
||||
路径可以是绝对路径,也可以是相对于工作区的路径。目录会被递归扫描以查找 `.md` 文件。符号链接处理取决于当前后端:内置引擎会忽略符号链接,而 QMD 会遵循底层 QMD 扫描器的行为。
|
||||
路径可以是绝对路径,也可以是相对于工作区的路径。目录会递归扫描 `.md` 文件。符号链接处理取决于当前后端:内置引擎会忽略符号链接,而 QMD 会遵循底层 QMD 扫描器行为。
|
||||
|
||||
对于按 agent 作用域进行的跨 agent 转录搜索,请使用 `agents.list[].memorySearch.qmd.extraCollections`,而不是 `memory.qmd.paths`。这些额外集合遵循相同的 `{ path, name, pattern? }` 形状,但它们会按 agent 合并,并且当路径指向当前工作区之外时,可以保留显式的共享名称。如果同一个解析后的路径同时出现在 `memory.qmd.paths` 和 `memorySearch.qmd.extraCollections` 中,QMD 会保留第一个条目并跳过重复项。
|
||||
对于 agent 范围的跨 agent 转录搜索,请使用 `agents.list[].memorySearch.qmd.extraCollections`,而不是 `memory.qmd.paths`。这些额外集合遵循相同的 `{ path, name, pattern? }` 形状,但它们会按 agent 合并,并且当路径指向当前工作区之外时,可以保留显式共享名称。如果同一解析路径同时出现在 `memory.qmd.paths` 和 `memorySearch.qmd.extraCollections` 中,QMD 会保留第一个条目并跳过重复项。
|
||||
|
||||
---
|
||||
|
||||
## 多模态内存(Gemini)
|
||||
## 多模态记忆(Gemini)
|
||||
|
||||
使用 Gemini Embedding 2 在 Markdown 旁一起索引图像和音频:
|
||||
使用 Gemini Embedding 2 将图像和音频与 Markdown 一起索引:
|
||||
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ------------------------- | ---------- | ---------- | ---------------------------- |
|
||||
| `multimodal.enabled` | `boolean` | `false` | 启用多模态索引 |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ------------------------- | ---------- | ---------- | ----------------------------------- |
|
||||
| `multimodal.enabled` | `boolean` | `false` | 启用多模态索引 |
|
||||
| `multimodal.modalities` | `string[]` | -- | `["image"]`、`["audio"]` 或 `["all"]` |
|
||||
| `multimodal.maxFileBytes` | `number` | `10000000` | 用于索引的最大文件大小 |
|
||||
| `multimodal.maxFileBytes` | `number` | `10000000` | 索引的最大文件大小 |
|
||||
|
||||
<Note>
|
||||
仅适用于 `extraPaths` 中的文件。默认内存根目录仍仅支持 Markdown。需要 `gemini-embedding-2-preview`。`fallback` 必须是 `"none"`。
|
||||
仅适用于 `extraPaths` 中的文件。默认记忆根目录仅限 Markdown。需要 `gemini-embedding-2-preview`。`fallback` 必须为 `"none"`。
|
||||
</Note>
|
||||
|
||||
支持的格式:`.jpg`、`.jpeg`、`.png`、`.webp`、`.gif`、`.heic`、`.heif`(图片);`.mp3`、`.wav`、`.ogg`、`.opus`、`.m4a`、`.aac`、`.flac`(音频)。
|
||||
支持的格式:`.jpg`、`.jpeg`、`.png`、`.webp`、`.gif`、`.heic`、`.heif`(图像);`.mp3`、`.wav`、`.ogg`、`.opus`、`.m4a`、`.aac`、`.flac`(音频)。
|
||||
|
||||
---
|
||||
|
||||
## 嵌入缓存
|
||||
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ------------------ | --------- | ------- | ----------------------------- |
|
||||
| `cache.enabled` | `boolean` | `false` | 在 SQLite 中缓存分块嵌入 |
|
||||
| `cache.maxEntries` | `number` | `50000` | 最大缓存嵌入数 |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ------------------ | --------- | ------- | ------------------------------ |
|
||||
| `cache.enabled` | `boolean` | `false` | 在 SQLite 中缓存分块嵌入 |
|
||||
| `cache.maxEntries` | `number` | `50000` | 最大缓存嵌入数量 |
|
||||
|
||||
防止在重新索引或会话记录更新期间对未更改的文本重新生成嵌入。
|
||||
在重新索引或转录更新期间,避免对未更改文本重复生成嵌入。
|
||||
|
||||
---
|
||||
|
||||
@ -426,52 +426,52 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
| ----------------------------- | --------- | ------ | -------------------- |
|
||||
| `remote.nonBatchConcurrency` | `number` | `4` | 并行内联嵌入 |
|
||||
| `remote.batch.enabled` | `boolean` | `false` | 启用批量嵌入 API |
|
||||
| `remote.batch.concurrency` | `number` | `2` | 并行批处理作业 |
|
||||
| `remote.batch.wait` | `boolean` | `true` | 等待批处理完成 |
|
||||
| `remote.batch.pollIntervalMs` | `number` | -- | 轮询间隔 |
|
||||
| `remote.batch.timeoutMinutes` | `number` | -- | 批处理超时 |
|
||||
| `remote.batch.concurrency` | `number` | `2` | 并行批处理作业 |
|
||||
| `remote.batch.wait` | `boolean` | `true` | 等待批处理完成 |
|
||||
| `remote.batch.pollIntervalMs` | `number` | -- | 轮询间隔 |
|
||||
| `remote.batch.timeoutMinutes` | `number` | -- | 批处理超时 |
|
||||
|
||||
适用于 `openai`、`gemini` 和 `voyage`。对于大规模回填,OpenAI 批处理通常最快且成本最低。
|
||||
适用于 `openai`、`gemini` 和 `voyage`。OpenAI 批处理通常是大型回填最快且最便宜的方式。
|
||||
|
||||
`remote.nonBatchConcurrency` 控制本地/自托管提供商使用的内联嵌入调用,以及托管提供商在提供商批处理 API 未启用时使用的内联嵌入调用。Ollama 在非批量索引时默认使用 `1`,以避免压垮较小的本地主机;在更大的机器上可以设置更高的值。
|
||||
`remote.nonBatchConcurrency` 控制本地/自托管提供商以及未启用提供商批处理 API 时托管提供商使用的内联嵌入调用。Ollama 的非批量索引默认值为 `1`,以避免压垮较小的本地主机;在较大的机器上可以设置更高的值。
|
||||
|
||||
这不同于 `sync.embeddingBatchTimeoutSeconds`,后者控制内联嵌入调用的超时时间。
|
||||
这与 `sync.embeddingBatchTimeoutSeconds` 分开,后者控制内联嵌入调用的超时时间。
|
||||
|
||||
---
|
||||
|
||||
## 会话记忆搜索(实验性)
|
||||
|
||||
索引会话记录,并通过 `memory_search` 展示:
|
||||
索引会话转录,并通过 `memory_search` 暴露它们:
|
||||
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ----------------------------- | ---------- | ------------ | -------------------------------- |
|
||||
| `experimental.sessionMemory` | `boolean` | `false` | 启用会话索引 |
|
||||
| `sources` | `string[]` | `["memory"]` | 添加 `"sessions"` 以包含会话记录 |
|
||||
| `sync.sessions.deltaBytes` | `number` | `100000` | 重新索引的字节阈值 |
|
||||
| `sync.sessions.deltaMessages` | `number` | `50` | 重新索引的消息阈值 |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ----------------------------- | ---------- | ------------ | ------------------------------ |
|
||||
| `experimental.sessionMemory` | `boolean` | `false` | 启用会话索引 |
|
||||
| `sources` | `string[]` | `["memory"]` | 添加 `"sessions"` 以包含转录 |
|
||||
| `sync.sessions.deltaBytes` | `number` | `100000` | 重新索引的字节阈值 |
|
||||
| `sync.sessions.deltaMessages` | `number` | `50` | 重新索引的消息阈值 |
|
||||
|
||||
<Warning>
|
||||
会话索引是选择启用的,并且会异步运行。结果可能会稍微滞后。会话日志存储在磁盘上,因此应将文件系统访问视为信任边界。
|
||||
会话索引为选择启用,并且会异步运行。结果可能略有滞后。会话日志存储在磁盘上,因此请将文件系统访问视为信任边界。
|
||||
</Warning>
|
||||
|
||||
---
|
||||
|
||||
## SQLite 向量加速(sqlite-vec)
|
||||
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ---------------------------- | --------- | ------- | ---------------------------- |
|
||||
| `store.vector.enabled` | `boolean` | `true` | 使用 sqlite-vec 进行向量查询 |
|
||||
| `store.vector.extensionPath` | `string` | bundled | 覆盖 sqlite-vec 路径 |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ---------------------------- | --------- | ------ | ---------------------------- |
|
||||
| `store.vector.enabled` | `boolean` | `true` | 使用 sqlite-vec 进行向量查询 |
|
||||
| `store.vector.extensionPath` | `string` | 内置 | 覆盖 sqlite-vec 路径 |
|
||||
|
||||
当 sqlite-vec 不可用时,OpenClaw 会自动回退到进程内余弦相似度计算。
|
||||
当 sqlite-vec 不可用时,OpenClaw 会自动回退到进程内余弦相似度。
|
||||
|
||||
---
|
||||
|
||||
## 索引存储
|
||||
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| --------------------- | -------- | ------------------------------------- | ------------------------------------ |
|
||||
| `store.path` | `string` | `~/.openclaw/memory/{agentId}.sqlite` | 索引位置(支持 `{agentId}` 令牌) |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| --------------------- | -------- | ------------------------------------- | ------------------------------------- |
|
||||
| `store.path` | `string` | `~/.openclaw/memory/{agentId}.sqlite` | 索引位置(支持 `{agentId}` token) |
|
||||
| `store.fts.tokenizer` | `string` | `unicode61` | FTS5 分词器(`unicode61` 或 `trigram`) |
|
||||
|
||||
---
|
||||
@ -480,49 +480,49 @@ Codex OAuth 仅覆盖聊天/补全,不能满足嵌入请求。
|
||||
|
||||
设置 `memory.backend = "qmd"` 以启用。所有 QMD 设置都位于 `memory.qmd` 下:
|
||||
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ------------------------ | --------- | -------- | --------------------------------------------------------------------------------- |
|
||||
| `command` | `string` | `qmd` | QMD 可执行文件路径;当服务 `PATH` 与你的 shell 不同时,设置为绝对路径 |
|
||||
| `searchMode` | `string` | `search` | 搜索命令:`search`、`vsearch`、`query` |
|
||||
| `includeDefaultMemory` | `boolean` | `true` | 自动索引 `MEMORY.md` + `memory/**/*.md` |
|
||||
| `paths[]` | `array` | -- | 额外路径:`{ name, path, pattern? }` |
|
||||
| `sessions.enabled` | `boolean` | `false` | 索引会话记录 |
|
||||
| `sessions.retentionDays` | `number` | -- | 会话记录保留期 |
|
||||
| `sessions.exportDir` | `string` | -- | 导出目录 |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ------------------------ | --------- | -------- | ------------------------------------------------------------------------------------- |
|
||||
| `command` | `string` | `qmd` | QMD 可执行文件路径;当服务的 `PATH` 与你的命令行 shell 不同时,设置绝对路径 |
|
||||
| `searchMode` | `string` | `search` | 搜索命令:`search`、`vsearch`、`query` |
|
||||
| `includeDefaultMemory` | `boolean` | `true` | 自动索引 `MEMORY.md` + `memory/**/*.md` |
|
||||
| `paths[]` | `array` | -- | 额外路径:`{ name, path, pattern? }` |
|
||||
| `sessions.enabled` | `boolean` | `false` | 索引会话转录 |
|
||||
| `sessions.retentionDays` | `number` | -- | 转录保留 |
|
||||
| `sessions.exportDir` | `string` | -- | 导出目录 |
|
||||
|
||||
`searchMode: "search"` 仅使用词法/BM25。OpenClaw 不会为该模式运行语义向量就绪探测或 QMD 嵌入维护,包括在 `memory status --deep` 期间;`vsearch` 和 `query` 仍然需要 QMD 向量就绪和嵌入。
|
||||
|
||||
OpenClaw 优先使用当前的 QMD collection 和 MCP 查询形态,但会在需要时尝试兼容的 collection pattern 标志和旧版 MCP 工具名称,以保持旧版 QMD release 可用。当 QMD 声明支持多个 collection 过滤器时,同源 collection 会通过一个 QMD 进程搜索;旧版 QMD 构建仍保留按 collection 的兼容路径。同源表示持久 memory collection 会被归为一组,而会话 transcript collection 仍保留为单独一组,因此来源多样化仍然同时包含两类输入。
|
||||
OpenClaw 优先使用当前的 QMD collection 和 MCP query 形态,但会在需要时尝试兼容的 collection pattern 标志和较旧的 MCP 工具名称,以保持较旧的 QMD 版本可用。当 QMD 声明支持多个 collection filter 时,同源 collection 会通过一个 QMD 进程搜索;较旧的 QMD 构建仍使用按 collection 的兼容路径。同源意味着持久记忆 collection 会归为一组,而会话转录 collection 会保留为单独一组,因此来源多样化仍然同时拥有两类输入。
|
||||
|
||||
<Note>
|
||||
QMD 模型覆盖保留在 QMD 侧,而不是 OpenClaw 配置中。如果你需要全局覆盖 QMD 的模型,请在 Gateway 网关运行时环境中设置 `QMD_EMBED_MODEL`、`QMD_RERANK_MODEL` 和 `QMD_GENERATE_MODEL` 等环境变量。
|
||||
</Note>
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Update schedule">
|
||||
| Key | Type | Default | Description |
|
||||
<Accordion title="更新计划">
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ------------------------- | --------- | ------- | ------------------------------------- |
|
||||
| `update.interval` | `string` | `5m` | 刷新间隔 |
|
||||
| `update.debounceMs` | `number` | `15000` | 对文件变更进行防抖 |
|
||||
| `update.onBoot` | `boolean` | `true` | 长驻 QMD manager 打开时刷新;也控制选择加入的启动刷新 |
|
||||
| `update.onBoot` | `boolean` | `true` | 当长期运行的 QMD 管理器打开时刷新;也用于控制选择启用的启动刷新 |
|
||||
| `update.startup` | `string` | `off` | 可选的 Gateway 网关启动刷新:`off`、`idle` 或 `immediate` |
|
||||
| `update.startupDelayMs` | `number` | `120000` | 运行 `startup: "idle"` 刷新前的延迟 |
|
||||
| `update.waitForBootSync` | `boolean` | `false` | 阻塞 manager 打开,直到其初始刷新完成 |
|
||||
| `update.startupDelayMs` | `number` | `120000` | 在 `startup: "idle"` 刷新运行前延迟 |
|
||||
| `update.waitForBootSync` | `boolean` | `false` | 阻塞管理器打开,直到其初始刷新完成 |
|
||||
| `update.embedInterval` | `string` | -- | 单独的嵌入节奏 |
|
||||
| `update.commandTimeoutMs` | `number` | -- | QMD 命令的超时时间 |
|
||||
| `update.updateTimeoutMs` | `number` | -- | QMD update 操作的超时时间 |
|
||||
| `update.embedTimeoutMs` | `number` | -- | QMD embed 操作的超时时间 |
|
||||
| `update.commandTimeoutMs` | `number` | -- | QMD 命令超时 |
|
||||
| `update.updateTimeoutMs` | `number` | -- | QMD 更新操作超时 |
|
||||
| `update.embedTimeoutMs` | `number` | -- | QMD 嵌入操作超时 |
|
||||
</Accordion>
|
||||
<Accordion title="Limits">
|
||||
| Key | Type | Default | Description |
|
||||
<Accordion title="限制">
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ------------------------- | -------- | ------- | -------------------------- |
|
||||
| `limits.maxResults` | `number` | `6` | 最大搜索结果数 |
|
||||
| `limits.maxSnippetChars` | `number` | -- | 限制 snippet 长度 |
|
||||
| `limits.maxSnippetChars` | `number` | -- | 限制片段长度 |
|
||||
| `limits.maxInjectedChars` | `number` | -- | 限制注入字符总数 |
|
||||
| `limits.timeoutMs` | `number` | `4000` | 搜索超时时间 |
|
||||
| `limits.timeoutMs` | `number` | `4000` | 搜索超时 |
|
||||
</Accordion>
|
||||
<Accordion title="Scope">
|
||||
控制哪些会话可以接收 QMD 搜索结果。schema 与 [`session.sendPolicy`](/zh-CN/gateway/config-agents#session) 相同:
|
||||
<Accordion title="范围">
|
||||
控制哪些会话可以接收 QMD 搜索结果。与 [`session.sendPolicy`](/zh-CN/gateway/config-agents#session) 使用相同 schema:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -537,24 +537,24 @@ QMD 模型覆盖保留在 QMD 侧,而不是 OpenClaw 配置中。如果你需
|
||||
}
|
||||
```
|
||||
|
||||
随附默认值允许直聊和渠道会话,同时仍拒绝群组。
|
||||
随附的默认配置允许 direct 和 channel 会话,同时仍拒绝 groups。
|
||||
|
||||
默认仅限私信。`match.keyPrefix` 匹配规范化后的会话 key;`match.rawKeyPrefix` 匹配包含 `agent:<id>:` 的原始 key。
|
||||
默认仅限私信。`match.keyPrefix` 匹配规范化后的会话键;`match.rawKeyPrefix` 匹配包含 `agent:<id>:` 的原始键。
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Citations">
|
||||
`memory.citations` 适用于所有 backend:
|
||||
<Accordion title="引用">
|
||||
`memory.citations` 适用于所有后端:
|
||||
|
||||
| Value | Behavior |
|
||||
| 值 | 行为 |
|
||||
| ---------------- | --------------------------------------------------- |
|
||||
| `auto`(默认) | 在 snippet 中包含 `Source: <path#line>` footer |
|
||||
| `on` | 始终包含 footer |
|
||||
| `off` | 省略 footer(path 仍会在内部传递给智能体) |
|
||||
| `auto`(默认) | 在片段中包含 `Source: <path#line>` 页脚 |
|
||||
| `on` | 始终包含页脚 |
|
||||
| `off` | 省略页脚(路径仍会在内部传递给智能体) |
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
QMD 启动刷新会在 Gateway 网关启动期间使用一次性子进程路径。当 memory search 为交互式使用而打开时,长驻 QMD manager 仍然拥有常规文件 watcher 和间隔 timer。
|
||||
QMD 启动刷新会在 Gateway 网关启动期间使用一次性子进程路径。当打开记忆搜索供交互使用时,长期运行的 QMD 管理器仍然负责常规文件 watcher 和间隔定时器。
|
||||
|
||||
### 完整 QMD 示例
|
||||
|
||||
@ -583,16 +583,16 @@ QMD 启动刷新会在 Gateway 网关启动期间使用一次性子进程路径
|
||||
|
||||
Dreaming 配置在 `plugins.entries.memory-core.config.dreaming` 下,而不是 `agents.defaults.memorySearch` 下。
|
||||
|
||||
Dreaming 作为一次计划 sweep 运行,并将内部 light/deep/REM phase 作为实现细节使用。
|
||||
Dreaming 作为一次定时 sweep 运行,并将内部的 light/deep/REM 阶段作为实现细节。
|
||||
|
||||
有关概念行为和 slash command,请参阅 [Dreaming](/zh-CN/concepts/dreaming)。
|
||||
有关概念行为和 slash 命令,请参见 [Dreaming](/zh-CN/concepts/dreaming)。
|
||||
|
||||
### 用户设置
|
||||
|
||||
| Key | Type | Default | Description |
|
||||
| 键 | 类型 | 默认值 | 描述 |
|
||||
| ----------- | --------- | ------------- | ------------------------------------------------- |
|
||||
| `enabled` | `boolean` | `false` | 完全启用或禁用 dreaming |
|
||||
| `frequency` | `string` | `0 3 * * *` | 完整 dreaming sweep 的可选 cron 节奏 |
|
||||
| `enabled` | `boolean` | `false` | 完全启用或禁用 Dreaming |
|
||||
| `frequency` | `string` | `0 3 * * *` | 完整 Dreaming sweep 的可选 cron 节奏 |
|
||||
| `model` | `string` | 默认模型 | 可选的 Dream Diary 子智能体模型覆盖 |
|
||||
|
||||
### 示例
|
||||
@ -621,15 +621,15 @@ Dreaming 作为一次计划 sweep 运行,并将内部 light/deep/REM phase 作
|
||||
|
||||
<Note>
|
||||
- Dreaming 将机器状态写入 `memory/.dreams/`。
|
||||
- Dreaming 将人类可读的叙事输出写入 `DREAMS.md`(或已有的 `dreams.md`)。
|
||||
- `dreaming.model` 使用现有插件子智能体 trust gate;启用前请设置 `plugins.entries.memory-core.subagent.allowModelOverride: true`。
|
||||
- 当配置的模型不可用时,Dream Diary 会使用会话默认模型重试一次。trust 或 allowlist 失败会被记录日志,不会静默重试。
|
||||
- light/deep/REM phase policy 和 threshold 属于内部行为,不是面向用户的配置。
|
||||
- Dreaming 将人类可读的叙事输出写入 `DREAMS.md`(或现有的 `dreams.md`)。
|
||||
- `dreaming.model` 使用现有插件子智能体信任门禁;在启用它之前,请设置 `plugins.entries.memory-core.subagent.allowModelOverride: true`。
|
||||
- 当配置的模型不可用时,Dream Diary 会使用会话默认模型重试一次。信任或 allowlist 失败会被记录,并且不会静默重试。
|
||||
- light/deep/REM 阶段策略和阈值是内部行为,不是面向用户的配置。
|
||||
|
||||
</Note>
|
||||
|
||||
## 相关内容
|
||||
|
||||
- [配置参考](/zh-CN/gateway/configuration-reference)
|
||||
- [Memory 概览](/zh-CN/concepts/memory)
|
||||
- [Memory search](/zh-CN/concepts/memory-search)
|
||||
- [记忆概览](/zh-CN/concepts/memory)
|
||||
- [记忆搜索](/zh-CN/concepts/memory-search)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user