← 返回首页ai798LAB Public

openclaw课程-干货合集

03 搜索能力 & 记忆系统详解

2026年3月24日1. OpenClaw的原生搜索能力由配置的Provider(搜索服务商)支持

搜索能力

原生支持

  1. OpenClaw的原生搜索能力由配置的Provider(搜索服务商)支持
  2. 支持的Provider | Provider | 免费额度 | 适用场景 | | --- | --- | --- | | Brave | 每月赠 $5 额度 ≈ 1000次(需绑信用卡,超出扣费) | 通用搜索(官方默认推荐);需要海外网络环境 | | Firecrawl | 500 credits | 需要读取页面内容的场景;需要海外网络环境 | | Gemini | AI Studio Key 免费;每天 500-1500 次免费 | 通用搜索 | | Grok | 注册送 $25 credits | X/Twitter 内容 | | Kimi | - | 国内直连、中文搜索好 | | Perplexity | - | 深度搜索、内容提取 |
  3. 核心机制
  4. 只能选 1 个 Provider,没有备选降级策略 1. 只接受一个值,且只能是 6 个原生 provider 之一(brave / firecrawl / gemini / grok / kimi / perplexity)。写 "brave" 就只能用 Brave,写 "kimi" 就只能用 Kimi。不支持配置多个 provider 做轮换或降级。写 "tavily" 会直接报 schema validation 错误。

AGENTS指令

  1. Agent直接调Tavily API(国内友好
  2. 注册获取Tavily API,传送门:tavily.com。免费额度:1000次/月,无需海外网络
  3. 复制API Key,让Openclaw帮你配。可以这么跟它说: ``` openclaw内置的web search无法使用时,调用tavily api进行搜索。api key:xxxx把这个搜索方式记到AGENTs.md,API Key同步记到TOOLS.md
  3. 配置完成后,可以让Openclaw试试搜索某个东西

#### Skills & Plugin方案

1. 以下不能写在 `provider` 字段里,通过 Skill、Plugin 或 MCP 方式接入,给 agent 提供额外搜索能力。重点推荐国内友好的方案:
2. **博查 **[**Bocha**](https://open.bochaai.com/)(⭐ 国内首选)
  - 国内 AI 搜索引擎,DeepSeek 官方联网搜索供应方,阿里/腾讯/字节官方推荐
  - 承接国内 60%+ AI 应用联网搜索请求,中文搜索质量极高
  - API 完全国内直连(open.bocha.cn),有免费额度
  - 接入方式:MCP Server(`bocha-search-mcp`)或 ClawHub Skill(`bocha-skill`)
  - 已有社区 PR 申请加入原生 provider(GitHub #25420),后续可能直接配置
3. **SearXNG**(⭐ 完全免费 + 无限制)
  - 开源元搜索引擎,聚合 Google、Bing、DuckDuckGo 等 70+ 引擎
  - Docker 自建,零 API Key、零费用、无查询上限
  - 自建在国内服务器上即可国内直连
  - 多个 ClawHub Skill 可选:`private-web-search-searchxng`(@adelpro)、`local-websearch`、`searxng-local` 等
  - 也可通过 MCP 接入(`ask-search` 项目)
4. **webserp**(⭐ 零配置 + 免费)
  - 7 个搜索引擎并行查询(Google、DuckDuckGo、Brave 等),无需 API Key
  - GitHub 仓库自带 OpenClaw Skill 文件,直接下载安装
  - 安装指令
    ```
cd ~/.openclaw/workspace/skills/ && git clone https://github.com/PaperBoardOfficial/webserp.git
  • 适合不想注册任何账号、只想开箱即用的学员
  1. Web Search Plus(进阶,多引擎智能路由)
  • ClawHub Skill,连接 7 个搜索 provider(Serper、Tavily、Exa、Perplexity、You.com、SearXNG 等)
  • 根据查询意图自动选最优引擎(购物 → Google、研究 → Tavily、隐私 → SearXNG)
  • 只需 1 个 API Key 即可启动,按需添加更多
  • 安装:ClawHub 搜索 web-search-plus
  1. openclaw-search-skills(进阶,四源并行)
  • 社区高星项目,Brave + Exa + Tavily + Grok 四源并行搜索
  • 意图感知评分 + 自动去重 + 链式引用追踪
  • 附带 content-extract(URL → Markdown,微信/知乎等反爬站点自动降级到 MinerU)
  • GitHub:https://github.com/blessonism/openclaw-search-skills

建议

  1. 国内朋友
  2. Agent直接调Tavily API,或初始配置时Provider选择Kimi(需付费,成本较高)
  3. 海外朋友
  4. Brave API Key作为Provider,Agent调Tavily作为备选

记忆系统

重要性

  1. 有好的记忆系统,能让龙虾越来越懂你,让你们之间的沟通阻抗越来越小。它就会越来越高效

记忆的结构

Session Memory:会话记忆
  1. 定义
  2. 每个飞书对话窗口/微信对话窗口 / Web Chat 对话 = 一个 Session(会话)。Session 里存的是完整的消息历史(你说的 + agent 回的)。
  3. 关键机制
  4. compaction****(压缩)。当对话历史接近 context window 上限时,OpenClaw 会自动压缩旧消息——用摘要替代原文。压缩后原始细节就丢了。
  5. 在 compaction 之前,OpenClaw 有一个 memory flush 机制:提醒 agent 把重要内容写入 memory 文件。但这个机制依赖 agent "自觉"——如果 agent 忘了写,信息就随着压缩一起丢了
  6. Session重置问题
  7. 如果你遇到过这种问题,请看解法 1. 现象:每天早上起来发现 OpenClaw "失忆"了——webchat 和飞书的对话历史都没了,只剩几行,agent 对昨天聊的内容一无所知。 2. 原因:OpenClaw 在凌晨 4 点触发一次心跳,检查每个 session 的 updatedAt,发现早于最近一次 daily reset 时间就标记为过期。旧 session 被归档成 .jsonl.reset.2026-03-XX 文件(数据还在磁盘上,但不再被加载),然后你早上发第一条消息时,OpenClaw 创建一个全新的空 session。所以不是"失忆",而是"换了一个新脑子"。
  8. 解法 解决方案:把 session.reset 从默认的 daily 改成 idle 模式,设一个极长的超时时间。改完重启 gateway 就生效了 ```JSON { "session": { "dmScope": "per-channel-peer", "reset": { "mode": "idle", "idleMinutes": 52560000 } }}

##### Daily Memory:每日记忆

1. 定义
  1. 每天的工作日志,翻日历📅可查看
2. 核心机制
  在 `~/.openclaw/workspace/memory/` 目录下,按日期存储:

memory/├── 2026-03-20.md├── 2026-03-21.md├── 2026-03-22.md└── 2026-03-23.md

  每个文件记录当天的对话摘要、完成事项、关键决策。**不是自动生成的**——需要 agent 主动写入,或者你手动创建。

##### Long-term Memory(Memory.md):长期记忆

1. 定义
  1. OpenClaw脑中沉淀的长期记忆,永不丢失
2. 核心机制
  1. 存放跨越时间的持久信息:用户偏好、项目状态、关键人物、经验教训等。**每次 agent 醒来(新的session)开始工作前都会读这个文件**。所以写在这里的信息,agent 永远记得。
  ```Markdown
**# Long-term Memory****## 用户画像**- 名字:Michael- 身份:AI 教育创业者,前网易产品专家- 沟通风格:简洁直接,喜欢类比**## 活跃项目**- [P0] OpenClaw 课程开发 → 6-8 场直播- [P1] ai798lab 社群运营**## 经验教训**- 2026-03-21:Kimi K2.5 声称已配置但实际未执行,memory 记录不可全信- 2026-03-22:session.reset 默认 daily 导致每天失忆,改成 idle 模式

写入与读取机制

写入
  1. 如果不做任何配置,OpenClaw不会主动提炼Daily Memory,写进MEMORY.md(长期记忆)。记忆的写入完全靠 agent 主动调用工具。OpenClaw 不会自动把对话内容存到 memory 文件里。
  2. 写入方式
  3. Agent 调用文件写入工具,往 MEMORY.mdmemory/YYYY-MM-DD.md 追加内容
  4. 你直接在终端编辑这些文件
  5. Compaction (session context爆了,自动生成摘要)前的 memory flush 提醒 agent 写入(但不保证 agent 会写)
  6. 核心问题
  7. 如果 agent 忘了写,信息就只存在备份 session transcript(.jsonl 文件)里。compaction 之后细节丢失,下次 session 搜不到。这是 OpenClaw 原生记忆最大的痛点。
读取
  1. 存在2种读取方式
  2. 被动加载:每次 session 开始,agent 自动读取 SOUL.md、USER.md、AGENTS.md、MEMORY.md。这些文件的内容直接注入到系统提示里。所以 MEMORY.md 里的信息,agent 不需要搜索就"知道"。
  3. 主动加载:agent 调用 memory_search 工具,在 memory/*.md 文件里做语义搜索。这需要 agent 意识到"我可能之前处理过类似的事情"然后主动去搜。如果 agent 没这个意识,就不会搜。
增强AGENTS记忆的技巧
  1. 在 AGENTS.md 里写规则,约束 agent 的记忆行为:
**## 记忆规则****### 写入**- 每轮对话如果涉及配置变更、决策、bug 修复,必须写入 memory/YYYY-MM-DD.md- 写入格式:## HH:MM - 事件标题 + 简要说明- 不确定要不要记的时候,记。宁多勿少**### 读取**- 每个新 session 开始后,先用 memory_search 搜索与当前话题相关的历史记忆- 用户问"之前"、"上次"、"我们讨论过"时,必须先搜 memory 再回答**### 诚实原则**- 如果 memory_search 失败或搜不到,明确告知用户,不要编造- 不要假装记得实际上没有记录的事情

记忆检索策略

现状
  1. OpenClaw 默认的 记忆检索(memory search) 依赖 OpenAI embeddings API。国内用户不挂 VPN 根本连不上。连不上的结果:memory search 每次都失败,fallback 默认是 "none"——直接放弃。agent 搜不到任何历史记忆,等于失忆。这就是为什么很多国内朋友说 OpenClaw "每天都失忆"。
原生配置
  1. 支持6个服务商 + 1个本地部署方案 | 服务商 | 环境配置 | 国内直连 | 免费额度 | | --- | --- | --- | --- | | OpenAI | OPENAI_API_KEY | ❌ | 需付费 | | Gemini | GOOGLE_API_KEY | ❌ | 有免费额度(AI Studio Key 即可) | | Voyage | VOYAGE_API_KEY | ❌ | 有免费额度 | | Mistral | MISTRAL_API_KEY | ❌ | 有免费额度 | | Ollama | 本地 localhost:11434 | ✅ | 完全免费 | | GGUF | memorySearch.local.modelPath | ✅ | 完全免费 | | 任何 OpenAI 兼容 API | memorySearch.remote.baseUrl + apiKey | ✅ | 取决于接入的API服务商 |
  2. 注意:如果你的OpenClaw已经在用Gemini api,就很方便了。一个Gemini可以一次性搞定搜索和记忆检索的配置
  3. 下面介绍国内用户友好的记忆检索方法👇
简易方案(新手推荐;国内友好)
  1. 硅基流动 embedding
  2. 优势 1. BAAI/bge-m3 是目前最好的中英文混合 embedding 模型之一 2. 硅基流动国内直连,延迟低 3. provider 设为 "openai" 是因为硅基流动兼容 OpenAI API 格式 4. 注册送的免费额度,embedding 调用非常便宜,日常使用几乎不花钱
  3. 步骤
  4. Step 1 · 注册 1. 打开硅基流动 → 手机号注册 → 注册送 14 元代金券 → 左侧菜单「API 密钥」→ 创建 Key
  5. Step 2 · 配置 1. 你可以跟OpenClaw这么说,让它配置 ```Bash 我需要你帮我配置 memory search,使用硅基流动(SiliconFlow)的 embedding API。## 背景OpenClaw 默认的 memory search 依赖 OpenAI embeddings API,国内连不上会导致 memory_search 每次都失败,等于失忆。我要切换成硅基流动,国内直连。## 前提我已经在硅基流动注册了账号(https://cloud.siliconflow.cn),拿到了 API Key。## 需要你做的事### 第一步:把 API Key 写入环境变量文件在 ~/.openclaw/.env 文件中添加一行(如果文件不存在就创建):SILICONFLOW_API_KEY=(我的硅基流动 API Key,我稍后告诉你)### 第二步:修改 openclaw.json读取 ~/.openclaw/openclaw.json,修改以下配置:1. 把 memory.backend 设为 "builtin"2. 把 agents.defaults.memorySearch 设为:{ "provider": "openai", "model": "BAAI/bge-m3", "remote": { "baseUrl": "https://api.siliconflow.cn/v1/", "apiKey": "${SILICONFLOW_API_KEY}" }, "fallback": "none"}注意:- provider 写 "openai" 是因为硅基流动兼容 OpenAI API 格式,不是真的用 OpenAI- model 用 BAAI/bge-m3,这是目前最好的中英文混合 embedding 模型- apiKey 用 ${SILICONFLOW_API_KEY} 引用环境变量,不要把明文 key 写进 json- 如果 json 里已经有 memorySearch 的旧配置(比如指向 OpenAI 的),直接覆盖### 第三步:重启 gateway执行重启命令让配置生效。

##### 本地部署方案(国内友好)

1. QMD
  1. QMD 是 OpenClaw 内置的本地搜索引擎,支持 BM25 + 向量 + reranker 混合搜索。
  2. 优势
    1. 完全本地,不依赖网络,零 API 费用
  3. 问题
    1. `node-llama-cpp` 依赖需要编译原生模块,在 Mac 上经常编译失败或超时
    2. 第一次运行需要下载约 2GB 的本地模型
    3. 社区有已知 bug:搜索返回空、超时后永久降级、scope 默认拒绝群聊等
2. 部署
  1. Step 1 · 安装QMD
    1. 打开终端,执行安装指令
    ```
npm list -g | grep qmd
  1. Step 3 · 修改配置 1. 打开终端,执行以下指令 ```C++ node -e 'const fs = require("fs");const path = process.env.HOME + "/.openclaw/openclaw.json";const config = JSON.parse(fs.readFileSync(path, "utf8"));// 1. 切换 memory backend 到 qmdconfig.memory = config.memory || {};config.memory.backend = "qmd";config.memory.qmd = { searchMode: "search", scope: "all", limits: { maxResults: 6, timeoutMs: 30000 }};// 2. 顺便修复 session.reset(如果还没改过)config.session = config.session || {};if (!config.session.reset || config.session.reset.mode === "daily") { config.session.reset = { mode: "idle", idleMinutes: 52560000 }; console.log("✅ session.reset 已改为 idle 模式");}fs.writeFileSync(path, JSON.stringify(config, null, 2), "utf8");console.log("✅ memory.backend:", config.memory.backend);console.log("✅ memory.qmd.searchMode:", config.memory.qmd.searchMode);console.log("✅ memory.qmd.scope:", config.memory.qmd.scope);'
  3. Step 3 · 重启Gateway
    ```
openclaw gateway restart
  1. Step 4 · 验证 1. 在终端执行以下指令
    1. 如果有结果,则成功。没有结果,跑以下命令检查,看看memory 目录有没有文件

openclaw doctor --fix

      ```
openclaw memory search "测试"
  ```

ls ~/.openclaw/workspace/memory/

  5. Step 5 · 测试
    1. 去飞书或webchat让OpenClaw搜索某个词,看是否有结果