Day 17:跨会话记忆 - 让 AI 拥有长期记忆
🤖 系列:Java工程师转AI Agent 3个月学习计划
👤 作者:宸丶一 | 28岁Java程序员,正在学习 AI Agent 开发中ing…
🎯 今日目标: 跨会话记忆、持久化存储、记忆检索
💬 个人格言: 代码改不改变世界我不知道,但先让我准时下班。
前言
Day 16 搞定了智能上下文管理,今天继续升级 – 跨会话记忆。
说白了就是解决一个问题:AI 怎么在不同对话之间记住你是谁?
你跟 AI 说"我叫宸一,28岁,Java程序员",下次新开对话,它就不记得了。上下文窗口会清空,但记忆可以持久化 – 就像数据库一样,存下来以后查。
今天我们就来学:存什么、怎么存、怎么查。
学习目标
- 搞懂跨会话记忆是什么,为什么需要
- 学会记忆的三种类型:事实、偏好、事件
- 掌握持久化存储:JSON 文件方案
- 学习记忆检索:关键词、相似度、综合搜索
一、什么是跨会话记忆?
先说清楚一个概念:跨会话记忆就是 AI 在不同对话之间记住信息的能力。
你可以把它理解成数据库持久化 – 上下文窗口是内存,用完就清空;记忆是硬盘,存下来一直在。
用 Java 的话说:跨会话记忆 = DAO 层。增删改查,持久化存储。
跨会话记忆工作流程:
为什么需要跨会话记忆?
- 上下文窗口会清空,记忆可以持久化
- 用户的关键信息需要长期保存
- 个性化服务需要记住用户偏好
二、记忆的三种类型
记忆分三种,各有各的用途:
| 类型 | 说明 | 例子 | 过期? |
|---|---|---|---|
| 事实 | 客观信息 | 用户叫宸一,28岁 | 一般不过期 |
| 偏好 | 主观喜好 | 喜欢用 Spring Boot | 可能变化 |
| 事件 | 发生过的事 | 今天学了跨会话记忆 | 可能过期 |
记忆类型关系图:
代码实现:
@dataclass
class Memory:
memory_id: str # 记忆 ID
content: str # 记忆内容
memory_type: str # 类型:fact/preference/event
importance: int # 重要性:1-10
created_at: str # 创建时间
三、持久化存储:JSON 文件方案
最简单的持久化方案:把记忆存成 JSON 文件。
为什么用 JSON?
- 简单直接,不需要额外依赖
- 人类可读,方便调试
- 适合本地存储,数据量不大
持久化存储架构:
代码实现:
class PersistentMemoryManager:
def __init__(self, storage_path):
self.storage_path = storage_path
self.memories = {}
self.load_memories() # 启动时加载
def add_memory(self, content, memory_type, importance):
# 添加记忆并自动保存
memory = Memory(...)
self.memories[memory_id] = memory
self.save_memories() # 立即写入文件
def save_memories(self):
# 保存到 JSON 文件
data = [vars(m) for m in self.memories.values()]
with open(self.storage_path, "w") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
四、记忆检索:怎么找到相关记忆?
记忆存好了,怎么查?三种方法:
| 方法 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 关键词匹配 | 文本包含关键词 | 简单直接 | 不智能 |
| 相似度计算 | 词汇交集比例 | 能找到相关 | 可能不准 |
| 综合搜索 | 加权组合 | 平衡 | 需要调参 |
检索策略选择流程:
综合搜索逻辑:
总分 = 关键词分 x 0.4 + 相似度分 x 0.3 + 重要性分 x 0.3
代码实现:
class SmartMemorySearcher:
def search_combined(self, query, top_k=5):
results = []
for memory in self.memories:
keyword_score = 1.0 if keyword_match(memory.content, query) else 0.0
similarity_score = simple_similarity(query, memory.content)
importance_score = memory.importance / 10.0
total = keyword_score * 0.4 + similarity_score * 0.3 + importance_score * 0.3
if total > 0:
results.append((total, memory))
results.sort(key=lambda x: x[0], reverse=True)
return results[:top_k]
五、运行效果
跑一下代码看看实际效果:
============================================================
Day 17 第一步:记忆基础概念
============================================================
[记忆管理器] 初始化完成
--- 添加记忆 ---
[添加记忆] 用户叫宸一,28岁,Java程序员
[添加记忆] 用户喜欢用 Spring Boot 开发
[添加记忆] 用户有一个异地对象叫刘亦菲
--- 搜索记忆 ---
[fact] 用户叫宸一,28岁,Java程序员
--- 所有记忆 ---
[fact] 用户叫宸一,28岁,Java程序员 (重要性:9)
[preference] 用户喜欢用 Spring Boot 开发 (重要性:7)
[fact] 用户有一个异地对象叫刘亦菲 (重要性:8)
六、记忆注入上下文
搜索到的记忆怎么用?注入到 AI 的上下文中。
记忆注入流程:
注入策略:
- 记忆少:直接拼接
- 记忆多:压缩成摘要
- 按重要性排序,优先注入重要记忆
七、思考题精选
今天的思考题,挑几道有意思的分享:
1. 跨会话记忆是什么?
就是之前聊了一部分东西,新建对话,他还知道你是谁。
上下文是作用在一个对话中的,跨对话就是不同的主键了。
这个"不同主键"的类比很精准 – 每个对话是一个独立的记录,跨会话记忆就是跨记录查询。
2. 记忆需要过期吗?
肯定会过期啊,比如学习记忆。现在学习过程中的记忆,等学习结束,第几天学什么就不重要了。
说得好!事件类记忆确实应该过期,事实类记忆一般不过期。
3. 未来的 AI 记忆系统?
无限记忆,跨设备跨对话同步。你刚跟卧室的贾维斯说完我要上厕所,到厕所再叫他,它应该就知道叫机器人给你送纸了。
这个例子太生动了 跨设备同步 + 上下文感知,就是未来的方向。
八、学习模式的意义
说到这里,我想聊聊我们的学习模式 – 和 AI Agent 一起学习。
为什么这个模式有意义?
- 即时反馈 – 写完代码马上能跑,有问题马上问
- 个性化指导 – AI 会根据你的水平调整难度
- 持续跟进 – AI 记得你的学习进度和卡点
- 降低门槛 – 不用到处查资料,AI 帮你整理好
我们的学习流程
这个模式的核心价值
- 学以致用 – 学完就写文章,加深理解
- 知识沉淀 – 文章就是学习笔记,以后可以回顾
- 分享传播 – 帮助其他学习者
- 持续动力 – 有人陪你学,不容易放弃
九、前 17 天学习复盘
回顾一下我们走过的路:
| 阶段 | 天数 | 主题 | 核心概念 |
|---|---|---|---|
| 基础 | Day 1-5 | API、对话、工具调用 | Agent 的基本能力 |
| 进阶 | Day 6-10 | LangChain、FastAPI、流式输出 | 框架和部署 |
| 深入 | Day 11-15 | 多Agent、人机协作、任务追踪 | 复杂系统 |
| 记忆 | Day 16-17 | 上下文管理、跨会话记忆 | 记忆系统 |
学习路线图
关键突破
- Day 1-5:从零开始,学会调用 API,理解 Agent 是什么
- Day 6-10:学会用框架,能部署自己的 Agent 服务
- Day 11-15:理解多 Agent 协作,学会任务管理
- Day 16-17:掌握记忆系统,让 Agent 拥有长期记忆
十、总结
今天学了 4 个核心概念,用 Java 的话说就是:
| 概念 | Java 类比 |
|---|---|
| 跨会话记忆 | 数据库持久化 |
| 记忆管理器 | DAO 层 |
| 记忆检索 | 搜索引擎 |
| 记忆注入 | 数据拼接 |
一句话总结:跨会话记忆 = 让 AI 拥有长期记忆,像数据库一样持久化存储。
下一步
Day 18 可能的主题:
- 记忆自动提取:从对话中自动提取记忆
- 记忆衰减:旧记忆逐渐遗忘
- 记忆共享:多个智能体共享记忆
写在最后
17 天了,从一个 Java 程序员,慢慢摸到了 AI Agent 的门道。
学习这件事,最难的不是知识本身,而是坚持。
有人陪你学,有人给你反馈,有人帮你整理 – 这就是和 AI Agent 一起学习的意义。
继续加油
🤖 系列:Java工程师转AI Agent 3个月学习计划
👤 作者:宸丶一 | 28岁Java程序员,正在学习 AI Agent 开发中ing…
💬 个人格言: 代码改不改变世界我不知道,但先让我准时下班。如果觉得有帮助,点个赞再走呗!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)