很多人觉得 AI Agent 只是“能调用工具的大模型”,但真正区分普通对话机器人和智能自主Agent的核心,是记忆系统

没有完善的记忆设计,Agent 永远只能做单次问答,无法记住用户偏好、无法承接超长多轮任务、无法实现持续迭代的自主执行。本文结合生产级落地经验,拆解 AI Agent 三级记忆架构、用户隔离规范、多模态存储方案,以及大家最困惑的长会话上下文过载问题,全程贴合工程落地,规避行业通用坑点。

一、AI Agent 三级记忆核心架构(标志性能力)

AI Agent 行业标准记忆体系分为:瞬时记忆、中期会话记忆、长期向量记忆,三者生命周期、存储介质、隔离规则、用途完全不同,缺一不可。

1. 瞬时记忆(上下文窗口记忆)

瞬时记忆是大模型实时推理的内存上下文,也是时效性最短的记忆形态。

核心特性:仅存在服务运行内存中,不落地、不持久化,会话结束自动回收。

存储内容:当前轮次对话上下文、Agent 实时状态、临时推理片段。

隔离规则:天然会话隔离,无需数据库额外处理。每个会话独立内存上下文,不会出现用户数据交叉污染,是最安全、最高效的临时记忆形态。

核心作用:为每一次 LLM 推理提供实时上下文支撑,是 Agent 单次思考、工具调用的基础。

2. 中期记忆(完整会话持久记忆)

中期记忆是业务落地的核心,对应用户可感知的「历史对话记录」,是区别瞬时内存、长期向量记忆的关键中间层。

核心特性:全量持久化存储、支持过期归档、完整还原会话全过程。

存储内容全覆盖:不仅包含用户提问、Agent 最终回答,还完整留存 Agent 内部思考过程、工具调用请求、工具返回结果、会话元数据、模型参数、Token 消耗日志,同时兼容图片、视频、文件等多模态内容。

强制隔离规则(生产刚需):所有中期会话记忆,必须基于三元组隔离:tenant_id + user_id + session_id

  • tenant_id:多租户隔离,避免不同企业/团队数据越权

  • user_id:用户私有隔离,杜绝用户间记忆混淆、隐私泄露

  • session_id:同一用户多窗口隔离,支持用户同时开启多个独立对话,会话数据互不干扰

3. 长期记忆(向量结构化记忆)

长期记忆是 Agent 实现“越用越聪明”的核心,突破单会话限制,实现跨会话、跨周期的能力沉淀。

核心特性:向量化存储、智能召回、可迭代更新、长期留存。

存储内容:用户固定偏好、历史任务结论、业务规则、长期交互经验、高频需求总结。

隔离规范:90% 业务场景(ToC产品、企业私有Agent)必须严格按用户隔离,向量元数据强制携带 user_id,检索时精准过滤。仅团队共享知识库场景,可采用「租户公共记忆 + 用户私有记忆」双层架构,私有记忆永不跨用户共享。

二、生产级记忆数据结构与存储方案(支持多模态)

针对中期会话记忆的复杂内容(文本、思考过程、工具日志、图片、视频、文件),行业通用「Redis 热缓存 + MySQL 冷归档 + OSS 多模态存储」三层架构,兼顾读写性能、数据完整性和合规性。

1. 存储分层策略

  • 活跃会话(7-30 天):Redis 缓存全量会话消息,支撑前端实时加载、高频对话读写,低延迟高性能。存储结构例子:采用 Redis ZSet 有序存储,Key 规范为 agent:session:msg:tenant001:user123:session456,score 为消息时序序列号,value 为单条消息精简 JSON(含文本内容、工具信息、多模态 URL),可快速分页加载对话历史、追加新消息。

  • 过期/归档会话:MySQL 持久化落地,用于历史查询、审计溯源、数据导出。存储结构例子:对应 agent_session 会话主表 + agent_session_message 消息流水表,以 tenant_id+user_id+session_id 为唯一隔离维度,完整归档每轮对话的用户提问、Agent 思考、工具调用、返回结果、Token 消耗、模型版本全量数据,支持精准溯源、合规审计。

  • 多模态资源(图片/视频/文件):二进制资源不入库、不进 Redis,统一上传 OSS/S3 对象存储,数据库仅存储资源 URL、类型、大小等元数据,避免存储膨胀、查询卡顿。存储结构例子:消息表中 multi_modal 字段 JSON 结构,仅存链路元数据,样例如下:
    [
    {“media_type”:“image”,“resource_url”:“https://xxx.oss-cn-beijing.aliyuncs.com/agent/202608/xxx.png”,“mime”:“image/png”,“desc”:“用户上传业务截图”},
    {“media_type”:“video”,“resource_url”:“oss://xxx/agent/video/demo.mp4”,“mime”:“video/mp4”}
    ]

2. 核心数据表设计

采用「会话主表 + 消息流水表」双表结构,完美适配所有会话场景:

(1)会话主表:存储会话全局元数据

核心字段:租户 ID、用户 ID、会话 ID、会话标题、所用模型、系统提示词、会话状态、过期时间、扩展配置(温度、Top P、功能开关)。用于统一管理会话生命周期、权限隔离、批量归档。

(2)会话消息流水表:存储逐条交互全量数据

覆盖所有消息类型:用户文本提问、Agent 对外回复、内部推理思考、工具调用请求、工具返回结果、多模态消息。

核心特色字段:

  • reasoning_content:独立存储 Agent 思考过程,与对外展示内容分离,支持调试、复盘、审计

  • tool_call_info:结构化存储工具调用参数、调用 ID、工具名称,可完整回放执行链路

  • multi_modal:JSON 格式存储图片、视频、文件的 OSS 链接、媒体类型、大小,统一管理多模态资源

  • usage_info:记录 Token 消耗、推理耗时、模型版本,用于成本统计和性能优化

3. Redis 缓存数据结构

  • Hash结构:缓存会话元数据(标题、模型、过期时间、扩展配置)

  • List/ZSet结构:有序存储会话消息,保证对话时序,支持快速追加、分页查询;ZSet可适配消息修改、撤回、分支对话场景

  • TTL过期策略:与会话过期时间对齐,到期异步批量落库MySQL后自动清理,兼顾性能与数据安全

4. 生产级完整极简存储样例(可直接复用)

为方便开发落地,下面给出真实、极简、可直接对标开发的 Redis、MySQL、多模态字段完整存储样例,完全贴合上文分层架构与隔离规则。

(1)MySQL 真实存储样例(会话主表+消息表核心数据)

agent_session 会话主表单条样例数据

{
  "tenant_id": "corp_001",
  "user_id": "user_89757",
  "session_id": "sess_20260815_001",
  "title": "交易数据分析与风险排查对话",
  "model_name": "qwen3-max",
  "system_prompt": "你是专业金融数据分析Agent,严谨合规、数据溯源、精准排查风险",
  "status": 1,
  "expire_time": "2026-09-15 23:59:59",
  "extra_meta": {
    "temperature": 0.1,
    "top_p": 0.9,
    "enable_tool": true,
    "enable_summary": true
  }
}

agent_session_message 消息流水表单条完整样例(含思考+工具+多模态)

{
  "tenant_id": "corp_001",
  "user_id": "user_89757",
  "session_id": "sess_20260815_001",
  "msg_id": "msg_99887766",
  "parent_msg_id": null,
  "msg_type": 2,
  "role": "assistant",
  "content": "已完成近30日交易数据排查,发现3笔异常小额高频交易,已生成风险明细。",
  "reasoning_content": "用户核心需求为排查月度交易风险,首先调用数据库工具查询交易明细,过滤测试数据、零值数据,筛选高频小额异常订单,统计风险等级后整理结论,无需继续调用工具。",
  "tool_call_info": {
    "tool_name": "db_query_trade",
    "tool_params": {"start_time": "2026-07-15", "end_time": "2026-08-15"},
    "tool_status": "success"
  },
  "multi_modal": [
    {
      "media_type": "image",
      "resource_url": "https://xxx.oss-cn-beijing.aliyuncs.com/agent/202608/risk_report.png",
      "mime": "image/png",
      "desc": "交易风险统计截图图表"
    }
  ],
  "usage_info": {
    "prompt_tokens": 1280,
    "completion_tokens": 360,
    "total_tokens": 1640,
    "cost_time_ms": 1260
  },
  "seq": 16,
  "created_at": "2026-08-15 14:30:22"
}
(2)Redis 完整存储样例(活跃会话热数据)

① Redis Hash:会话元数据缓存 Key

Key:agent:session:meta:corp_001:user_89757:sess_20260815_001

title: 交易数据分析与风险排查对话
model_name: qwen3-max
system_prompt: 你是专业金融数据分析Agent,严谨合规、数据溯源、精准排查风险
expire_time: 2026-09-15 23:59:59
session_summary: 用户持续排查月度交易风险,已完成数据查询、异常筛选,当前待输出风险报告
extra_meta: {"temperature":0.1,"enable_tool":true}

② Redis ZSet:有序消息缓存 Key(核心上下文)

Key:agent:session:msg:corp_001:user_89757:sess_20260815_001

score = 消息时序序号,member = 单条精简消息JSON(仅保留推理必要字段)

{
  "msg_id": "msg_99887766",
  "role": "assistant",
  "content": "已完成近30日交易数据排查,发现3笔异常小额高频交易,已生成风险明细。",
  "reasoning_content": "用户核心需求为排查月度交易风险,首先调用数据库工具查询交易明细,过滤测试数据、零值数据,筛选高频小额异常订单,统计风险等级后整理结论,无需继续调用工具。",
  "tool_call_info": {"tool_name": "db_query_trade","tool_status": "success"},
  "multi_modal_urls": ["https://xxx.oss-cn-beijing.aliyuncs.com/agent/202608/risk_report.png"]
}

Redis 过期策略:整体Key TTL=30天,到期前异步全量落库MySQL,落库成功后删除Redis热数据,完美实现冷热数据分离。

核心样例设计规范(落地重点)
  1. 严格三元组隔离:所有数据强制携带 tenant_id、user_id、session_id,杜绝越权、数据混流

  2. 冷热分离:Redis只存精简热数据用于推理和前端展示,MySQL存全量原始数据用于审计归档

  3. 多模态轻量化:图片、视频不存二进制、不存Base64,仅存OSS可访问URL,极致优化存储与接口性能

  4. 思考与输出分离:reasoning_content 独立存储,业务对外展示content,内部可完整复盘推理链路

三、关键核心问题:长会话是否需要回传全量历史?

这是 Agent 落地最大的误区:前端展示需要全量会话,但 LLM 推理绝对不需要回传全部历史

超长会话(上百轮交互)如果每次新提问都回传全量数据,会导致 Token 成本暴涨、推理延迟飙升、触发上下文超限报错;但直接粗暴截断早期消息,又会让 Agent 丢失初始任务目标、业务约束,出现“失忆”问题。

生产级最优解决方案:分层上下文压缩策略

核心逻辑:存储全量数据,推理用精简数据,二者完全分离

1. 会话摘要压缩(核心方案)

当会话 Token 超过阈值(常规4000Token),自动将早期久远对话压缩为结构化摘要,保留最近8-12轮原始消息,最终送入LLM的上下文结构为:会话历史摘要 + 近期原始对话 + 新用户提问

同时缓存会话摘要,仅当会话发生大幅更新时增量刷新,避免重复生成摘要造成额外开销。既保留早期核心业务目标,又大幅降低上下文长度。

2. 滑动窗口策略

轻量场景适配,固定保留最近N轮对话,舍弃超早期无效消息,实现简单、性能极高,仅适用于短平快的问答类Agent,不适合复杂任务规划场景。

3. 长期记忆联动召回

跨会话、超长期对话场景,无需堆砌历史上下文,通过向量库召回用户长期偏好、历史核心结论,精准注入当前推理流程,替代冗余的原始会话内容。

4. 超大工具结果单独优化

工具返回的大报表、长日志、批量数据,不完整塞入上下文,仅存储全量数据至数据库,推送摘要信息至 Prompt,需要明细时按需查询。

三、关键核心问题:长会话是否需要回传全量历史?

这是 Agent 落地最大的误区:前端展示需要全量会话,但 LLM 推理绝对不需要回传全部历史

超长会话(上百轮交互)如果每次新提问都回传全量数据,会导致 token 成本暴涨、推理延迟飙升、触发上下文超限报错;但直接粗暴截断早期消息,又会让 Agent 丢失初始任务目标、业务约束,出现“失忆”问题。

生产级最优解决方案:分层上下文压缩策略

核心逻辑:存储全量数据,推理用精简数据,二者完全分离

1. 会话摘要压缩(核心方案)

当会话 Token 超过阈值(常规4000Token),自动将早期久远对话压缩为结构化摘要,保留最近 8-12 轮原始消息,最终送入 LLM 的上下文结构为:会话历史摘要 + 近期原始对话 + 新用户提问。同时缓存会话摘要,仅当会话发生大幅更新时增量刷新,避免重复生成摘要造成额外开销。既保留早期核心业务目标,又大幅降低上下文长度。

2. 滑动窗口策略

轻量场景适配,固定保留最近 N 轮对话,舍弃超早期无效消息,实现简单、性能极高,仅适用于短平快的问答类 Agent,不适合复杂任务规划场景。

3. 长期记忆联动召回

跨会话、超长期对话场景,无需堆砌历史上下文,通过向量库召回用户长期偏好、历史核心结论,精准注入当前推理流程,替代冗余的原始会话内容。

4. 超大工具结果单独优化

工具返回的大报表、长日志、批量数据,不完整塞入上下文,仅存储全量数据至数据库,推送摘要信息至Prompt,需要明细时按需查询。

四、工程落地高频避坑要点

  1. 严禁记忆混存:长期记忆必须携带 user_id 过滤,仅租户公共场景可无用户隔离,杜绝全局混存导致的数据泄露、回答错乱

  2. 区分展示上下文与推理上下文:前端渲染用全量会话数据,LLM推理用压缩后精简数据,绝对不直接透传前端原始历史数据

  3. 禁止二进制资源入库:图片、视频、文件仅存OSS链接,杜绝Base64存储,防止数据库、Redis存储膨胀,接口响应卡顿

  4. 强制三元组查询隔离:所有会话查询必须携带 tenant_id + user_id + session_id,禁止仅通过session_id查询,避免跨租户越权风险

  5. 记忆分层迭代:中期会话记忆支持过期归档,长期记忆支持重要性打分、自动遗忘,避免数据无限膨胀

五、总结

AI Agent 的核心竞争力不在于模型本身,而在于可控、分层、安全的记忆体系

  • 瞬时记忆保实时推理,天然隔离、高效低耗;

  • 中期记忆保会话完整,三元组隔离、全量溯源、兼容多模态;

  • 长期记忆保能力沉淀,用户私有隔离、跨会话迭代优化;

  • 长会话采用摘要压缩+滑动窗口组合方案,彻底解决上下文过载与Agent失忆的矛盾。

这套架构完全适配企业级、SaaS多租户、金融合规类Agent落地,兼顾性能、安全、成本、可扩展性,是目前行业标准的生产级记忆解决方案。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐