Spring Boot + JDBC Agent Memory
这个方案解决的是“普通多轮聊天已经不够,需要把 Agent 会话本身持久化下来”。
1. 适合什么场景
ReAct Agent- 带工具调用的业务 Agent
- 多轮任务代理
- 需要跨实例恢复的 Agent session
和 ChatMemory 场景不同,这里关心的不只是历史对话,还包括:
- 工具结果
- runtime state
- 压缩后的摘要
- 任务持续性
2. 核心模块组合
这条方案的主链是:
ai4j-agentai4j-spring-boot-starterJdbcAgentMemoryWindowedMemoryCompressorDataSource / MySQL
它已经不再是“基础聊天持久化”,而是进入通用智能体 runtime 的会话层。
3. 这条方案的优点
- 工具调用结果能跨轮保留
- Agent 状态可跨进程恢复
- 适合逐步引入压缩策略
- 比手写 session state 更贴近 runtime 真相
4. 什么时候不该直接上它
如果你只是普通聊天,没有:
- 工具调用
- runtime state
- 会话级任务持续
那应先看:
先从轻方案起步,往往更稳。
5. 先补哪些主线页
6. 继续看实现细节
如果你要看:
sessionId绑定方式JdbcAgentMemory工厂WindowedMemoryCompressor接法- Agent 构造与 Controller 示例
继续看深页:
7. 关键对象
这条方案最值得继续看的对象通常是:
agent/memory/JdbcAgentMemoryWindowedMemoryCompressor- Agent session 相关对象
- Spring 容器中的
DataSource
它们共同决定 Agent 会话如何被持久化、压缩和恢复。
8. 和 ChatMemory 方案的真正区别
与基础聊天记忆相比,这里持久化的不只是消息历史,还包括:
- 工具交互后的上下文
- runtime 相关状态
- 更接近任务执行语义的会话骨架
因此这条方案不只是“把 ChatMemory 换成 JDBC”,而是进入了更重的运行时层。
9. 落地时的第一优先级
建议优先验证:
sessionId与业务会话绑定是否稳定- 压缩策略是否不会破坏后续工具推理
- 重启或跨实例后,Agent 是否能恢复到预期语义状态