深入学习openclaw之记忆基础
缘起
是到了更深入的学习openclaw架构的时候了,也是为了更好的使用openclaw。
我们日常所说的“养龙虾”,就是俩件事:
1、不断的给他安装各种工具(SKILLS),让他能精准高效的完成特定的工作
2、不断的给龙虾以记忆,好让他在与你的沟通中,不再需要说一大堆提示词,例如:
假如你需要与一个完全没有记忆的AI,完整有效的提示词应该是: “今天下午6点钟下班后约刘亦菲去鼓楼车站东巷里的乱世佳人酒吧喝一杯长城干红葡萄酒”,
而当你和一个养成的龙虾,只需要说:“下班了去喝一杯!” ,剩下的信息,会从之前的记忆中搜索,由openclaw补全提交处理
今天就记录一下龙虾记忆的基础知识。
会话
在理解openclaw的记忆之前,得先了解会话的概念。
会话就是A与B之间的对话,就是用户与openclaw之间的对话,但是openclaw还在其中加入了一个区分的维度:渠道
所以用户A与openclaw的对话,可以是
- 用户A直接通过控制ui和openclaw对话
- 用户A通过飞书与openclaw对话
- 用户A通过QQ与openclaw对话
- 。。。
但是,对于用户A来说,渠道只是我使用openclaw的方式,隔离了对话也许并不是本意啊,就好像:我刚打电话和女朋友聊的好好的,换个微信聊就假装不认识我了。。。
所以openclaw是可以通过配置,来控制私信隔离的策略:
配置参数位于openclaw.json:
"session": {
"dmScope": "main"
},
dmScope这个配置有4个选项,分别简单了解一下:
- main
所有对话共享一个会话内容:这个非常适合私人龙虾,就我一个人用,当然希望所有的渠道和对话共享内容:打电话、发短信、聊微信,那头还是那个女朋友
- per-peer
跨渠道的按照发送者ID隔离
- per-channel-peer
渠道+发送者隔离:这个非常适合用于企业环境的openclaw,例如通过飞书接入的所有员工,各自隔离
- per-account-channel-peer
账户 + 渠道 + 发送者隔离: 这个最严格,可以理解为企业员工+公私分离的方式使用同一个openclaw,办公通过飞书接入,下班私人信息通过qq接入,可以做到信息隔离。
会话存储:
所有的会话存储在一个文件:
~/.openclaw/agents//sessions/sessions.json
而会话记录存储在:
~/.openclaw/agents//sessions/.jsonl
看一下我的龙虾的记录:
记忆
openclaw的记忆,以markdown文本文件存储
先看看一下实例的存储位置:
默认: ~/.openclaw/workspace
记忆系统分为2个层次:
1、精选长期记忆(MEMORY.md)
2、每日日记(memory/YYYY-MM-DD.md)
长期记忆一般记录一些规则、偏好、重要决策、经验之类的:
例如,给他起个名字,告诉他使用说明时区:
再闲聊点不重要的事情:
然后来看看这俩记忆文件,分别记忆了什么:
长期记忆:
流水账:
这个就真大是流水账了,按照时间记录
小结
今天只是简单的记录一下openclaw的记忆系统的基础概念,下次再学习一下记忆的高级部分:
1、记忆的高级部分:会话映射、修建、压缩、生命周期
2、向量记忆
欢迎关注、欢迎留言交流学习!