文章目录
-
- 一、核心三大概念(最通俗区分)
-
- [1. 用户(User)](#1. 用户(User))
- [2. 会话(Session)](#2. 会话(Session))
- [3. State(LangGraph专属)](#3. State(LangGraph专属))
- 二、四类存储介质分工(必背)
-
- [1. 长期记忆(归属用户)](#1. 长期记忆(归属用户))
- [2. 短期记忆(归属会话)](#2. 短期记忆(归属会话))
- [3. 业务数据表(前端展示用)](#3. 业务数据表(前端展示用))
- [4. State运行时(内存临时)](#4. State运行时(内存临时))
- 三、三张核心建表结构(最简落地版)
-
- [1. 用户表 user(存账号业务数据)](#1. 用户表 user(存账号业务数据))
- [2. 用户长期记忆表 user_long_memory(纯给AI用)](#2. 用户长期记忆表 user_long_memory(纯给AI用))
- [3. 会话表 user_session(存会话列表)](#3. 会话表 user_session(存会话列表))
- 四、Redis存储规则
-
- Redis:存储会话短期记忆
- [4. 短期记忆(Redis)→ 跟着会话走(完整版)](#4. 短期记忆(Redis)→ 跟着会话走(完整版))
- 五、终极禁止规则(重点)
- 六、最简单流程总结
一、核心三大概念(最通俗区分)
1. 用户(User)
- 定义:真实的人,永久身份
- 跟随范围:跨会话、跨时间、永久保留
- 对应记忆:长期记忆
- 类比豆包:你本人
2. 会话(Session)
- 定义:单独一个聊天窗口、单次对话流程
- 跟随范围:仅当前窗口,新建会话即清空本轮上下文
- 对应记忆:短期记忆
- 类比豆包:左侧每一条对话窗口
3. State(LangGraph专属)
- 本质 :运行时容器、数据传输载体,本身不是数据
- 作用:多Agent、节点之间唯一传数据的方式
- 内部组成:长期记忆 + 短期记忆 + 临时运行字段
- 持久化规则 :永不存完整State,只拆分有效字段落地
二、四类存储介质分工(必背)
1. 长期记忆(归属用户)
- 存储位置:独立数据库表/向量库
- 存储内容:用户偏好、人设、重要摘要、个人背景、禁忌
- 特点:更新慢、不随会话删除、给LLM做人格识别
- 禁止存放:聊天记录、任务列表、会话信息
2. 短期记忆(归属会话)
- 存储位置:Redis(按session_id区分)
- 存储内容:messages聊天记录、task_list任务列表、工具返回结果
- 特点:每轮对话新增、会话删除即作废、做滑动窗口裁剪
3. 业务数据表(前端展示用)
- 作用 :记录会话列表、会话数量,不给AI推理使用
- 内容:session_id、会话标题、创建时间、所属user_id
4. State运行时(内存临时)
- 保留字段:长期记忆、短期记忆
- 临时字段(不持久化):current_agent、运行状态、中间临时变量
三、三张核心建表结构(最简落地版)
1. 用户表 user(存账号业务数据)
特点:不含任何AI记忆
| 字段 | 作用 |
|---|---|
| user_id | 用户唯一主键 |
| nickname | 昵称 |
| create_time | 创建时间 |
| device_id | 游客模式标识(无需注册) |
2. 用户长期记忆表 user_long_memory(纯给AI用)
| 字段 | 作用 |
|---|---|
| id | 主键 |
| user_id | 关联所属用户 |
| profile | 用户人设、个人资料 |
| preference | 用户偏好、习惯 |
| summary | 历史对话浓缩摘要 |
3. 会话表 user_session(存会话列表)
注意:不存聊天内容,只存业务信息
| 字段 | 作用 |
|---|---|
| session_id | 会话唯一ID |
| user_id | 归属用户 |
| session_title | 会话标题(前端展示) |
| create_time | 创建时间 |
四、Redis存储规则
Redis:存储会话短期记忆
- Key格式:
session:{session_id} - Value内容:messages、task_list、工具结果
- 过期策略:可设置会话过期时间
4. 短期记忆(Redis)→ 跟着会话走(完整版)
存储位置 :Redis
Key :session:{session_id}
存储结构(JSON):
json
{
"messages": [{"role":"user","content":"..."}],
"task_list": [{"task":"...","status":"done"}],
"tool_results": []
}
五、终极禁止规则(重点)
- 禁止把完整State存入任何数据库/Redis
- 禁止把长期记忆塞进用户业务表
- 禁止把会话列表、数量存入AI记忆
- 禁止临时运行字段持久化(current_agent、status等)
- 短期记忆存全量,推理切窗口:存储完整记录,LLM只用最新片段
六、最简单流程总结
- 用户进入 → 识别user_id(游客自动生成)
- 选中会话 → 识别session_id
- 加载数据 → 长期记忆(数据库) + 短期记忆(Redis) 塞入State
- Agent运行 → 临时字段在State流转,不落地
- 会话结束 → 只更新短期记忆、长期记忆,临时数据全部丢弃