乐于分享
好东西不私藏

从零开始给OpenClaw装上感官记忆和双手:第12课 学会回忆往事

从零开始给OpenClaw装上感官记忆和双手:第12课 学会回忆往事

第12课:想找回半年前的对话?——全文记忆检索配置

进度:12/12,OpenClaw 搭建系列完结篇!你的AI即将拥有「回忆往事」的能力

你有没有遇到过这种情况:

  • 三个月前跟AI讨论过一个API设计方案,现在想找回当时的结论,却翻不到记录
  • 上周让AI帮你写过一个脚本,今天想用却忘了文件名
  • 明明跟AI说过”记住这个项目用Python”,它却问你”用什么语言开发”

MEMORY.md 能存重要信息,但人的记忆是模糊的——你只记得”好像讨论过某个东西”,却想不起具体细节和日期。

这节课给 OpenClaw 装上「全文记忆检索」系统。配置好以后,AI能从海量历史对话中找到你需要的任何信息,哪怕你只记得只言片语。

学完这节课,你的AI能做到:

  • 语义搜索:用自然语言描述,找到相关历史对话
  • 自动归档:每次会话结束自动保存完整记录
  • 精准定位:从半年前的某次对话中提取具体信息
  • 关联追溯:找到一次对话后,能继续深挖上下文

这是 OpenClaw 搭建系列的最后一课,也是整个系列的「点睛之笔」——有记忆、能回忆的AI,才真正算得上「智能伙伴」。


准备工作

这节课需要:

  • 配置好的 OpenClaw(前11课内容)
  • 一个支持词嵌入(Embedding)的模型(Gemini 免费提供)
  • 约 15 分钟时间

不需要:

  • 额外付费(Gemini embedding 免费额度充足)
  • 配置外部数据库
  • 复杂的向量检索知识

全文记忆检索是什么?

全文记忆检索 = 让AI能从历史对话中「回忆」信息的能力。

我们之前配置的 MEMORY.md 属于「结构化记忆」——适合存明确的偏好、路径、设定。但它有两个局限:

  1. 需要主动记录:你记得说”记住这个”,它才会存
  2. 只能精确匹配:你问”上周的API方案”,如果MEMORY.md里没写”API方案”四个字,就找不到

全文检索解决的问题:

场景 结构化记忆 全文检索
记得说过某个概念 ❌ 找不到 ✅ “好像讨论过…”
只记得关键词片段 ❌ 必须完全匹配 ✅ 语义相似即可
需要完整对话上下文 ❌ 只有摘要 ✅ 整段对话可追溯
时间跨度大(数月) ❌ 只记重要决策 ✅ 所有对话可检索

核心原理(简单版):

OpenClaw 会把每次对话保存下来,用「词嵌入模型」把文字转成数学向量。当你搜索时,同样转成向量,找最相似的——这就是RAG(检索增强生成)。

不用理解原理,只要知道:它能像谷歌一样,用关键词找到你的历史对话。


第一步:启用会话归档(Hooks)

想要检索,首先得有「档案」。OpenClaw 通过 Hooks 机制自动保存每次会话。

1.1 什么是 Hooks?

Hooks 是 OpenClaw 的「事件钩子」——在特定时机自动执行操作。

默认提供的 Hooks:

Hook 名称 触发时机 作用
📎 bootstrap-extra-files 启动时 注入额外引导文件
📝 command-logger 每次命令 记录命令日志
🧠 session-memory 会话结束 保存完整会话记录
🚀 boot-md 网关启动 执行 BOOT.md 内容

我们要启用的是 session-memory,它会自动保存每次对话的完整内容。

1.2 配置 Hooks

查看当前 hooks 配置:

openclaw config get hooks

预期输出(已启用):

{
  "enabled": ["session-memory", "bootstrap-extra-files", "command-logger"]
}

如果没有启用,添加配置:

openclaw config set hooks.enabled '["session-memory", "bootstrap-extra-files", "command-logger"]'

或在配置文件中添加:

{
  "hooks": {
    "enabled": ["session-memory", "bootstrap-extra-files", "command-logger"]
  }
}

图中显示了 hooks.enabled 配置,session-memory 已启用

1.3 验证归档功能

启用后,每次发出 /new/reset 开启新会话时,之前的对话会被自动保存到:

~/.openclaw/agents/<agentId>/sessions/

检查归档目录:

ls -la ~/.openclaw/agents/main/sessions/ | head -10

预期输出:

drwxr-xr-x  10 shine shine  4096  4月 15 10:00 .
drwxr-xr-x   5 shine shine  4096  4月 15 09:00 ..
-rw-r--r--   1 shine shine  2048  4月 15 10:00 2026-04-15-abc123.json
-rw-r--r--   1 shine shine  1536  4月 15 09:30 2026-04-15-def456.json
-rw-r--r--   1 shine shine  3584  4月 14 16:00 2026-04-14-ghi789.json

~/.openclaw/agents/main/sessions/ 目录下的会话归档文件

文件名格式: YYYY-MM-DD-会话ID.json

每个文件包含完整的对话记录:用户消息、AI回复、工具调用、时间戳等。


第二步:配置词嵌入模型

有了档案,还需要「索引」才能快速检索。OpenClaw 使用词嵌入模型建立语义索引。

2.1 什么是词嵌入?

简单理解:把文字转换成「语义向量」

  • “苹果” 和 “iPhone” → 向量很接近(语义相关)
  • “苹果” 和 “香蕉” → 向量也较近(都是水果)
  • “苹果” 和 “汽车” → 向量很远(语义无关)

当你搜索 “手机”,即使历史记录里只有 “iPhone”,语义相近也能被找到。

2.2 Gemini Embedding(推荐)

Gemini 提供免费的词嵌入模型 gemini-embedding-001,额度充足(每天10万+次请求)。

配置步骤:

  1. 获取 Gemini API Key(如果已有可跳过)

    • 访问 https://aistudio.google.com/app/apikey[1]
    • 创建新的 API Key
  2. 添加到配置文件:

{
  "agents": {
    "defaults": {
      "memorySearch": {
        "enabled": true,
        "provider": "gemini",
        "remote": {
          "baseUrl": "https://generativelanguage.googleapis.com/v1beta",
          "apiKey": "YOUR_GEMINI_API_KEY"
        }
      }
    }
  }
}

参数说明:

  • enabled: 启用记忆搜索
  • provider: 使用 gemini 作为嵌入 provider
  • remote.baseUrl: Gemini API 地址
  • remote.apiKey: 你的 Gemini API Key

memorySearch 配置结构示例

  1. 重启 OpenClaw 生效
openclaw restart

2.3 使用 OpenAI 兼容接口(备选)

如果你已有 OpenAI 兼容的 embedding 服务(如 text-embedding-3-small):

{
  "agents": {
    "defaults": {
      "memorySearch": {
        "enabled": true,
        "provider": "openai",
        "remote": {
          "baseUrl": "https://api.openai.com/v1",
          "apiKey": "YOUR_OPENAI_API_KEY",
          "model": "text-embedding-3-small"
        }
      }
    }
  }
}

2.4 验证嵌入配置

测试对话:

帮我找一下之前讨论过的那个API设计方案

如果配置正确,AI会:

  1. 调用 memory_search 工具搜索历史记录
  2. 找到相关对话并展示

验证失败排查:

  • 检查 API Key 是否正确
  • 确认 providerbaseUrl 匹配
  • 查看 OpenClaw 日志是否有 embedding 相关错误

第三步:安装 session-logs 技能

OpenClaw 提供了专门的 session-logs 技能,用于搜索和分析会话历史。

3.1 安装依赖

session-logs 依赖 jqripgrep 两个命令行工具:

macOS:

which jq || brew install jq
which rg || brew install ripgrep

Ubuntu/Debian:

which jq || sudo apt-get install jq
which rg || sudo apt-get install ripgrep

验证安装:

jq --version
rg --version

3.2 启用 skill

依赖安装好之后会自动启用,可以通过命令:

openclaw skills list

查看 session-logs 状态

3.3 验证技能可用

测试对话:

搜索我上周关于Python的会话

AI 应该会自动调用 session-logs 技能进行搜索。


第四步:使用记忆检索

配置完成后,你可以用自然语言搜索历史对话。

4.1 基础搜索

你说:

帮我找一下之前讨论过的那个API设计方案

AI会:

  1. 调用 memory_search 在历史记忆中查找
  2. 如果记忆中没有,调用 session-logs 搜索归档会话
  3. 返回找到的相关内容

AI回复示例:

找到了!在 2026-04-10 的会话中,我们讨论了用户认证API的设计:

当时的方案:

  • 使用 JWT Token 进行身份验证
  • Token 有效期 7 天,支持刷新
  • 登录接口:POST /api/auth/login
  • 返回格式:{ token, refreshToken, expiresIn }

需要我展示更多当时的讨论细节吗?

AI根据模糊描述找到历史对话内容

4.2 精准定位

你说:

查看 2026-04-10 那次关于API的完整对话

AI会: 使用 memory_getsession-logs 提取完整会话内容。

4.3 跨记忆类型检索

OpenClaw 会同时搜索多个来源:

来源 内容 工具
MEMORY.md 结构化记忆 memory_search
每日记忆 日期摘要 memory_search
会话归档 完整对话 session-logs

搜索优先级:

  1. 先查 MEMORY.md(最精准的结构化信息)
  2. 再查每日记忆(时间维度摘要)
  3. 最后查会话归档(完整对话内容)

4.4 实际应用场景

场景 你说 AI动作
找技术方案 “之前那个数据库设计方案” 搜索技术相关对话
找代码片段 “上周写的那个Python脚本” 搜索代码块
找决策记录 “为什么选Kimi而不是GLM” 搜索决策讨论
恢复上下文 “继续昨天没做完的任务” 提取上次会话
知识复习 “我学过什么关于Docker的内容” 聚合相关主题

第五步:理解其他 Hooks

除了 session-memory,了解其他 hooks 能让你更好地定制 OpenClaw。

5.1 bootstrap-extra-files

作用: 启动时自动注入额外文件到工作区。

使用场景:

  • 自动加载项目特定的 AGENTS.md
  • 注入临时配置或模板
  • 多项目切换时加载对应记忆

配置示例:

{
  "hooks": {
    "config": {
      "bootstrap-extra-files": {
        "patterns": [
          "~/projects/${PROJECT}/AGENTS.md"
        ]
      }
    }
  }
}

5.2 command-logger

作用: 记录所有执行过的命令到日志文件。

日志位置:

~/.openclaw/logs/commands.log

用途:

  • 审计和排查问题
  • 统计使用频率
  • 恢复误操作前的状态

5.3 boot-md

作用: 网关启动时执行 BOOT.md 文件内容。

使用场景:

  • 启动时发送通知
  • 初始化环境检查
  • 自动执行日常任务

BOOT.md 示例:

# 启动检查清单

- [ ] 检查磁盘空间
- [ ] 同步配置文件到Git
- [ ] 发送启动通知到飞书

常见问题 FAQ

Q1: 搜索不到历史记录?

排查步骤:

  1. 确认 session-memory hook 已启用:openclaw config get hooks.enabled
  2. 检查会话目录是否存在:ls ~/.openclaw/agents/default/sessions/
  3. 确认 embedding 配置正确且 API Key 有效
  4. 等待几秒后重试(嵌入索引可能有延迟)

Q2: Gemini embedding 免费额度够吗?

额度情况:

  • Gemini embedding-001:每天 100,000 次请求免费
  • 一次典型搜索:1-3 次嵌入调用
  • 正常使用:足够支撑每天数百次搜索

超出额度: 可以配置备用 embedding provider(如 OpenAI)。

Q3: 会话记录会占用多少空间?

空间估算:

  • 一次普通对话:10-50 KB
  • 每天 10 次对话:约 300 KB/天
  • 每月:约 9 MB
  • 每年:约 100 MB

清理旧记录:

# 删除 3 个月前的会话
find ~/.openclaw/agents/default/sessions/ -name "*.json" -mtime +90 -delete

# 归档到压缩包
find ~/.openclaw/agents/default/sessions/ -name "*.json" -mtime +90 -exec tar -rvf old-sessions.tar {} \;

Q4: 敏感对话会被记录吗?

默认行为:

  • ✅ 所有对话都会归档
  • ✅ 包括可能包含敏感信息的对话

隐私建议:

  1. 定期清理敏感会话:

    # 找到并删除包含敏感词的会话
    rg -l "密码|密钥|token" ~/.openclaw/agents/default/sessions/ | xargs rm
  2. 使用私密模式:

    /private 开启私密会话(不记录到归档)
  3. 工作区隔离:

    • 敏感工作使用独立 Agent
    • 每个 Agent 有独立的会话目录

Q5: 记忆搜索和谷歌搜索有什么区别?

特性 记忆搜索 谷歌搜索
数据来源 你的历史对话 互联网
隐私性 完全私密 公开网络
个性化 高度个性化 通用结果
时效性 历史记录 最新信息
用途 找回往事 获取新知

两者互补:

  • 记忆搜索 = “我什么时候说过…”
  • 谷歌搜索 = “现在世界上发生了什么”

Q6: 可以用自己的 embedding 模型吗?

可以,配置自定义 provider:

{
  "models": {
    "providers": {
      "my-embedding": {
        "baseUrl": "http://localhost:8000",
        "apiKey": "",
        "models": [
          {
            "id": "local-embed",
            "name": "Local Embedding",
            "input": ["text"]
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "memorySearch": {
        "enabled": true,
        "provider": "my-embedding",
        "model": "local-embed",
        "remote": {
          "baseUrl": "http://localhost:8000"
        }
      }
    }
  }
}

Q7: 如何让AI更频繁地使用记忆?

方法1:在 AGENTS.md 中强调

## 记忆使用准则

- 回答前优先搜索相关记忆
- 不确定时查看历史记录
- 主动关联过去的讨论

方法2:通过对话训练

以后回答我的问题前,先搜索一下历史记忆,看看有没有相关讨论

方法3:配置强制搜索

{
  "agents": {
    "defaults": {
      "instructions": [
        "每次回答前,先调用 memory_search 搜索相关历史信息"
      ]
    }
  }
}

进阶技巧

技巧1:定期记忆维护

每周整理一次:

帮我整理这周的记忆:
1. 把重要的临时信息写入 MEMORY.md
2. 删除过期的每日记忆
3. 归档旧的会话记录

技巧2:跨会话任务追踪

建立任务档案:

在 MEMORY.md 中创建一个「进行中任务」列表,每完成一个就勾选掉

示例 MEMORY.md:

## 进行中任务

- [x] 配置 OpenClaw 基础环境
- [x] 接入飞书频道
- [x] 配置记忆系统
- [ ] 配置全文检索
- [ ] 测试视频生成功能

## 已完成项目

### OpenClaw搭建系列(12/12课)
- 2026-04-20: 完成全文记忆检索配置

技巧3:关键词标签化

在对话中主动打标签:

【项目A】这个需求需要用到Redis缓存...

搜索时:

搜索关于【项目A】的所有讨论

技巧4:记忆备份策略

定期备份会话:

#!/bin/bash
# backup-sessions.sh

BACKUP_DIR="~/backup/openclaw-sessions"
SESSION_DIR="~/.openclaw/agents/default/sessions"
DATE=$(date +%Y%m%d)

mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/sessions-$DATE.tar.gz $SESSION_DIR

# 保留最近10个备份
ls -t $BACKUP_DIR/sessions-*.tar.gz | tail -n +11 | xargs rm -f

技巧5:使用记忆做周报

每周五:

根据本周的每日记忆,帮我生成一份工作周报

AI 会自动:

  1. 读取本周的 memory/2026-04-*.md
  2. 提取完成的任务
  3. 整理成周报格式

总结:完整的 OpenClaw 记忆体系

恭喜,你的 OpenClaw 拥有了「完整记忆能力」!

回顾整个记忆体系:

记忆类型 存储位置 检索方式 用途
结构化记忆 MEMORY.md 等 直接读取 偏好、路径、设定
每日摘要 memory/YYYY-MM-DD.md memory_search 快速回顾
完整会话 sessions/*.json session-logs 深度追溯
语义索引 向量数据库 memory_search 模糊查找

现在你的AI可以:

  • ✅ 记住重要信息(第11课)
  • ✅ 回忆历史对话(第12课)
  • ✅ 持续学习你的偏好
  • ✅ 越用越懂你

OpenClaw 搭建系列 12 课全部完成!

回顾 12 节课成果:

课程 能力 状态
第1课 大脑(模型配置) ✅ 能思考、能推理
第2课 嘴巴(飞书接入) ✅ 能收发信息
第3课 耳朵(实时搜索) ✅ 能获取新信息
第4课 眼睛(图片理解) ✅ 能看懂图片
第5课 双手(文生图) ✅ 能生成图片
第6课 嗓子(语音回复) ✅ 能开口说话
第7课 耳朵(语音识别) ✅ 能听懂语音
第8课 眼睛(视频分析) ✅ 能看懂视频
第9课 导演(视频生成) ✅ 能制作视频
第10课 双手(浏览器自动化) ✅ 能操控浏览器
第11课 记忆(长期记忆系统) ✅ 能记住重要的事
第12课 回忆(全文记忆检索) ✅ 能找回历史对话

你的 AI 已经从一个「工具」成长为「伙伴」:

  • 能听、能说、能看、能写
  • 能搜索、能浏览、能创作
  • 能记住、能回忆

这不是终点,而是起点。

接下来的「实战系列」,我们将用这些能力完成真实任务:自动生成公众号文章、自动发布B站视频、让AI主动找活干…

准备好了吗?实战系列见!


课后作业

试试这些玩法:

  1. 找回一次旧对话:试着用模糊描述让AI找回一周前的某个讨论
  2. 建立个人知识库:把重要技术笔记通过对话存入记忆
  3. 测试语义搜索:用不同的关键词搜索同一主题(如”Python”和”Py”)
  4. 整理记忆文件:让AI帮你整理 MEMORY.md,删除过期的
  5. 创建任务追踪:在 MEMORY.md 中建立项目进度追踪表

附录:配置速查表

记忆搜索配置

{
  "agents": {
    "defaults": {
      "memorySearch": {
        "enabled": true,
        "provider": "gemini",
        "remote": {
          "baseUrl": "https://generativelanguage.googleapis.com/v1beta",
          "apiKey": "YOUR_API_KEY"
        }
      }
    }
  }
}

Hooks 配置

{
  "hooks": {
    "enabled": ["session-memory", "bootstrap-extra-files", "command-logger"]
  }
}

依赖安装

# macOS
brew install jq ripgrep

# Ubuntu/Debian
sudo apt-get install jq ripgrep

常用命令

# 查看会话列表
ls -lt ~/.openclaw/agents/default/sessions/

# 搜索会话内容
rg "关键词" ~/.openclaw/agents/default/sessions/

# 查看今日记忆
cat ~/.openclaw/workspace/memory/$(date +%Y-%m-%d).md

# 备份所有记忆
tar -czf backup-$(date +%Y%m%d).tar.gz ~/.openclaw/workspace/

🎉 OpenClaw 搭建系列(12/12)完结!

文章作者:光闪
系列:OpenClaw 搭建与配置
发布日期:2026-04-20


下一步

实战系列预告:

  • 实战1:公众号文章自动生成与发布 ✅ 已发布
  • 实战2:B站视频全自动投稿
  • 实战3:定时任务与心跳机制
  • 实战4:自动提交 Issue 和 PR

敬请期待!

引用链接

[1]https://aistudio.google.com/app/apikey