找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1683

积分

0

好友

216

主题
发表于 2026-2-11 21:39:51 | 查看: 36| 回复: 0

与 Claude Code 等同类工具相比,OpenClaw 有一个显著且独有的特性,那就是它的记忆系统

很多介绍都会提到 OpenClaw 的记忆能力:它能记住你的工作习惯和偏好,理解项目的长期背景,并且随着时间推移,它会越来越懂你。这些说法都没错,但关键在于它是如何做到的。

按照常规思路,要让 AI 助手了解我们,最常见的方法就是把所有个性化信息一股脑儿塞进提示词里,每次提问时都把这些上下文喂给大模型。但这样做立刻会陷入一个两难境地:信息塞少了怕它不了解你,信息塞多了又太浪费 Token 成本,甚至可能直接超出模型的上下文窗口限制。

个性化信息与Token成本的矛盾关系示意图

OpenClaw 的解法非常巧妙且经济:它将大模型的上下文与独立的记忆系统进行解耦管理。这套记忆系统基于两种文件:

  1. 短期记忆文件:每天产生的日志和当前上下文,保存为 memory/YYYY-MM-DD.md。在每次会话开始时,会自动读取“今天”和“昨天”的文件内容。
  2. 长期记忆文件:精选的、需要持久化的决策、结论和用户偏好,保存为根目录下的 MEMORY.md 文件。

短期记忆结合长期记忆,构成了对用户和工作全景视角的记录。

短期记忆与长期记忆文件的分工示意图

那么,这些文件何时被写入呢?决策、偏好和需要长期记住的事实会存入 MEMORY.md;日常的笔记和临时的上下文则存入对应的日期文件中。这个过程是后台静默更新的,随着你持续使用 OpenClaw,这两个文件会不断累积你的个性化信息。你也可以主动要求它记录某些内容,例如直接告诉它:“我喜欢吃苹果,把这个信息记下来。”

主动要求记录信息的对话示例
使用 cat 命令查看记忆文件内容的终端截图

有了这些文件,OpenClaw 在回答问题时就有了参考依据。但文件内容会越来越多,每次回答并不需要全部信息。因此,它采用了检索(RAG) 的方式:根据用户当前的问题,去记忆文件中查找最相关的片段(比如历史偏好、同类问题的解决方案等)。

为了实现高效检索,OpenClaw 在后台为 MEMORY.mdmemory/*.md 等文件建立了一个小型的向量索引(使用 sqlite-vec 向量数据库)。向量化的流程是自动触发的:

  1. 监听文件保存:使用 Chokidar 监听 .md 文件的保存事件,并设置 1.5 秒防抖。
  2. 文本分块:将文件内容按 400 个 Token、80 个 Token 重叠的方式进行分块。
  3. 向量化处理:将文本块转化为向量。
  4. 存储:将向量存入 sqlite-vec 数据库。

整个过程在后台静默完成,用户无感知。

文件向量化处理流程示意图

那么,当用户提问时,OpenClaw 具体如何检索呢?它内置了两个核心工具:memory_searchmemory_get

memory_search 是一个强制性的信息回溯步骤。它的描述明确指出:在回答任何涉及过往工作、决策、日期、人员、偏好或待办事项的问题之前,必须先对记忆文件进行语义搜索。其参数配置决定了召回结果:

  • maxResults:决定最终召回几个文档分片。
  • minScore:指定召回文档分片的最小相似度阈值,默认 0.35。
{
  "name": "memory_search",
  "description": "Mandatory recall step: semantically search MEMORY.md + memory/*.md before answering questions about prior work, decisions, dates, people, preferences, or todos",
  "parameters": {
    "query": "What did we decide about the API?",
    "maxResults": 6,
    "minScore": 0.35
  }
}

memory_get 工具则用于在 memory_search 找到相关内容后,精确读取特定文件的指定行内容。

{
  "name": "memory_get",
  "description": "Read specific lines from a memory file after memory_search",
  "parameters": {
    "path": "memory/2026-01-20.md",
    "from": 45,
    "lines": 15
  }
}

通过这两个工具的配合,OpenClaw 能精准定位并提取出与当前问题最相关的记忆片段,然后将这些片段作为上下文注入系统提示词,最终提交给大模型生成结合了“个性化记忆”的回答。

而让这套检索机制更加精准的核心,在于其混合检索(Hybrid Search) 策略,即同时使用 BM25 关键词检索向量语义检索

Hybrid混合检索策略示意图

BM25 擅长精准的关键词匹配。例如,搜索“香蕉”只会匹配包含“香蕉”这个词的文档,对于包含“banana”的文档则无能为力。

向量检索则基于语义理解。经过训练的嵌入模型知道“香蕉”和“banana”语义相近,因此搜索“香蕉”时,包含“banana”的文档也能被匹配到。

混合检索结合了两者的优点,确保在从海量记忆文件中查找相关信息时,既能做到精准匹配关键词,又能理解上下文语义,从而让 OpenClaw 显得“更懂你”。

在配置层面,OpenClaw 提供了细致的参数来控制混合检索的行为:

agents:
  defaults:
    memorySearch:
      query:
        hybrid:
          enabled: true
          vectorWeight: 0.7
          textWeight: 0.3
          candidateMultiplier: 4

其检索与评分流程如下图所示:

Hybrid检索评分与筛选流程示意图

具体步骤分解如下:

  1. 候选池检索

    • 向量检索:按余弦相似度排序,取前 maxResults * candidateMultiplier 个候选。
    • BM25 检索:按 FTS5 BM25 排名排序,同样取前 maxResults * candidateMultiplier 个候选。
  2. 分数归一化:将 BM25 排名转换为 0 到 1 之间的分数。

    • textScore = 1 / (1 + max(0, bm25Rank))
  3. 计算加权最终分:按文档分片 ID 合并候选,并计算加权得分。

    • finalScore = vectorWeight * vectorScore + textWeight * textScore
  4. 上下文注入:根据 finalScore 排序,仅将经过双重验证的高分文档片段注入大模型上下文。

通过这种独立于大模型上下文的记忆系统,以及背后高效、精准的混合检索机制,OpenClaw 得以持续沉淀用户的个性化信息,并在每次交互中智能地调用相关记忆。这正是它能实现“越用越懂你”体验的技术基石。这种将长期记忆与智能检索解耦的设计思路,为构建更懂用户的智能助手提供了宝贵的实践参考。




上一篇:汇川PLC OPC UA配置详解:核心要点、协议对比与加密原理解析
下一篇:技嘉GO27Q24G WOLED显示器评测:MLA+技术加持,2K 240Hz电竞新选择
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-23 12:58 , Processed in 0.854326 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表