短期/长期记忆模型与 Redis 结构
约 397 字大约 1 分钟
布欧-Lewyon
2026-06-08
首页 › Agent Spring Boot › Memory 对话记忆
子项目:agent-memory
在 agent-function-calling 上增加 Redis 双轨记忆,仍手写注入,不用 Spring AI ChatMemory / Advisor。
两类记忆
| 类型 | 键 | 结构 | 用途 |
|---|---|---|---|
| 短期 | session:{sessionId} | LIST(JSON 消息) | 本轮对话上下文 |
| 长期 | memory:{userId}:{memoryId} | HASH | 用户画像、偏好 |
| 长期索引 | memory:{userId}:index | ZSET | 按时间排序 |
| 关键词 | memory:{userId}:kw:{word} | SET | 倒排检索 |
配置项(application.yml)
memory:
short-term:
max-messages: 20
session-ttl-minutes: 120
long-term:
max-memories: 200
search-top-k: 5与 LLM 无状态特性的关系
模型 API 本身不记历史。本项目两种注入方式:
- messages 数组 — 短期
user/assistant历史 - system 提示词 —
MemoryManager.buildSystemPrompt()注入长期记忆摘要
中间带 tool_calls 的 assistant 消息不写入 Redis,只存最终 user/assistant 文本。
学习点
- 短期 = 会话级;长期 = 用户级,跨 session 保留。
- Redis LIST + LTRIM 实现滑动窗口;EXPIRE 刷新会话 TTL。
- 长期记忆用 HASH + ZSET + 关键词 SET,无向量也能 keyword 检索。
小结
agent-memory自定义 Redis 记忆,分 short-term / long-term 两套键设计。- 短期进
messages[],长期进system动态拼接。 - 不用 Spring AI Advisor,逻辑透明,便于面试讲清。
