老王劈头盖脸地问:“OpenClaw 的 Memory 和 RAG 很相似,了解吗?”
透过厚厚的近视镜片,我触碰到了老王那对世界仍然充满热情的双眼,我懂他想要的答案:“必须啊,混合检索用到了向量和关键字,和我做的派聪明 RAG 有着异曲同工之妙,也有 FTS5、BM25、rerank 这些。”
“你小子,看来是做了功课的。”老王扶了扶他的眼镜,搓了搓他的手继续问,“OpenClaw 的 Memory 分了两层,一层是会话级别的,一层是长期记忆的,他们之间有什么区别?”
不得承认,老王不是那种浮在表面的面试官,是真的有研究过,对技术有渴望的人。
content
01、Memory 和 Session 的区别?
“王哥,Memory 是 OpenClaw 最核心的机制之一,它让 Agent 有了‘记忆’的能力。”
短期记忆
短期记忆存储在~/.openclaw/agents/{agentId}/sessions/*.jsonl文件中,自动记录。
每次和龙虾对话,OpenClaw 就会自动将对话内容追加到 JSONL 格式的会话日志文件中,这是最原始的、未经处理过的记忆。
长期记忆
长期记忆存储在~/.openclaw/workspace/MEMORY.md和memory/*.md文件中,可以手动创建,但一般交给 OpenClaw 自动生成。
可以理解成是从短期的琐碎记忆中提炼出来的需要 OpenClaw 重点记住的内容,比如用户的性格、身份信息、回答偏好等。
举个例子,你告诉 Agent:“我是 Java 后端开发,回答问题时请用 Java 相关技术栈。”这句话就会被提炼成长期记忆,存储在 Markdown 文件中。下次对话时,龙虾会自动检索到这条记忆,按照你的偏好回答。
老王追问:“那长期记忆和短期记忆之间是怎么转换的?”
我说:“王哥,有研究啊。”
02、记忆是如何自动转换的?
“记忆转换有两种触发机制。”
机制一:session-memory Hook
当用户执行/new命令重置会话时,OpenClaw 会触发 session-memory Hook,自动将上一个会话的关键内容转换为 Markdown 文件。
这个过程是自动化的,不需要手动干预。系统会分析 JSONL 文件中的对话内容,提取出关键信息,比如用户的偏好、重要的上下文、需要长期记住的事实等,然后写入memory/YYYY-MM-DD.md文件。
机制二:Memory Flush
这是一个非常关键的自动化机制。
当 Session 接近 context 上限时,OpenClaw 会触发 Compaction 机制。Agent 会分析当前 Session 的内容,提取重要信息,写入 Memory。

真诚点赞 诚不我欺
热门评论
2 条评论
回复