当前位置:首页 > 文章列表 > 科技周边 > 人工智能 > AI Agent 记忆为什么要区分短期上下文和长期存储

AI Agent 记忆为什么要区分短期上下文和长期存储

来源:17golang原创 2026-09-09 14:48:26 0浏览 收藏

AI Agent 的“记忆”不是把历次聊天无限追加到提示词里。更稳妥的做法是把当前线程要用的短期上下文,与跨会话复用的长期存储分开:前者保存正在进行的任务,后者只保存经过筛选、带范围和生命周期的事实。这样既能避免上下文越来越长,也能减少旧信息、错误信息跨会话污染答案。

短期上下文回答“这次任务进行到哪里了”,长期存储回答“以后哪些已确认信息值得再次使用”。两者的所有者、保存时间、读取方式和权限边界都不同,不能用一个大聊天记录代替。
要点速览
  • 短期记忆按 thread 隔离,放消息历史、工具调用和当前工作状态。
  • 长期记忆按 user、tenant 或 namespace 组织,只写入稳定偏好、已确认事实和可复用经验。
  • 写入要经过提取、去重、冲突处理;读取要经过相关性、权限和过期判断。

资料入口:https://redis.io/docs/latest/develop/use-cases/agent-memory/

AI Agent 记忆先按会话边界拆开

短期上下文通常属于一个 thread 或 conversation,包含消息历史、工具调用结果、当前目标和中间草稿;长期存储则跨越多个 thread,适合保存用户偏好、已经确认的业务事实或可复用的解决经验。事件日志是另一种有用的记录:它保留按时间排列的动作与观察,便于审计或异步整理,但不应原样塞进每次提示词。

可以先用下面的表做边界设计。它描述的是职责,不是强制要求某一种数据库。

记忆层典型内容读取范围常见策略
短期上下文消息、工具结果、当前目标单个 thread检查点、裁剪、摘要
长期存储偏好、事实、经验用户或租户 namespace结构化存储、语义检索、去重
事件记录动作、观察、错误审计或后台整理按时间保留、归档、限长
浅色工程蓝图展示当前线程、消息历史、工具状态与长期事实、命名空间、检索器的记忆边界
图1:先看短期上下文与跨会话存储的边界,再决定每类 Agent 记忆的生命周期。

短期上下文只服务当前任务

短期记忆的目标是让 Agent 能恢复当前工作,而不是永久保存所有细节。消息过长时,可以保留系统约束、当前目标和最近几轮交互,把更早内容压缩成摘要;工具返回的大段日志也应提取结论后再放回上下文。LangChain 的短期记忆文档把这类状态绑定到 thread,并提供检查点、裁剪、删除和摘要等思路。

如果用框架实现,关键不是类名,而是 thread_id 的来源和隔离规则。下面的伪代码展示最小数据结构,示例没有连接真实模型或数据库:

# 短期状态只跟随当前 thread,不把临时草稿写进长期记忆
short_term = {
    "thread_id": "thread-42",  # 同一任务恢复时使用稳定的线程标识
    "goal": "整理客户反馈",  # 当前任务目标,任务结束后可被摘要替换
    "messages": recent_messages,  # 只保留能支撑当前回答的消息
    "tool_state": {"page": 2, "pending": True},  # 工具调用的中间状态
}

# 接近上下文预算时先压缩旧消息,避免把全部历史重复发送给模型
if token_count(short_term["messages"]) > context_budget:
    short_term["messages"] = summarize_old_messages(short_term["messages"])

检查点应能让同一个 thread 在进程重启或换工作进程后继续;但新 thread 默认不应继承旧 thread 的临时草稿。这个边界能直接挡住“上个客户的未完成任务出现在下个客户对话里”的问题。

长期存储只接收可复用记忆

长期记忆不是聊天记录的备份,而是可在未来任务中复用的数据。适合写入的内容通常具备三个条件:来源明确、未来可能复用、不会因一次临时对话就轻易改变。例如“用户明确偏好简短回答”比“用户刚才问了一个问题”更像长期事实。

写入前建议经过记忆提取器,把事件日志或对话中的候选事实单独列出,再做去重、冲突判断和敏感信息过滤。对于同一用户,namespace 可以像目录一样组织数据;检索时必须同时带上用户、组织或业务空间的过滤条件。LangGraph 的长期存储就是按 namespace 和 key 保存 JSON 文档,并支持在指定范围内搜索。

如果系统只需要精确读取,键值或文档存储就够用;只有当用户不会复述原句、需要按含义找回经验时,才考虑向量索引。不要因为“用了 Agent”就默认所有内容都要向量化。

把写入、检索、过期和权限连成闭环

一套可维护的长期记忆至少要回答四个问题:谁能写,谁能读,什么时候失效,发生冲突时保留谁。TTL 适合处理会自然过期的工作偏好或阶段性项目状态;稳定的用户事实可以采用更长保留期,但仍要支持修改和删除。事件日志则可用限长或归档策略,不应把日志保留规则误当成事实保留规则。

读取时不要只按相似度取前几条。先按租户和用户做授权过滤,再按任务相关性、来源可信度和新鲜度排序;召回结果还要标出来源,方便模型和业务代码判断它是事实、经验还是未经确认的候选。

浅色工程蓝图展示事件日志、记忆提取器、去重器、长期事实、TTL 与租户授权的关系
图2:长期记忆的关键不是存得多,而是让提取、去重、检索、TTL 和租户授权各自有边界。

Redis 的 Agent memory 文档把工作记忆、长期语义召回和有序事件日志分成不同数据职责;这是一种实现参考,不是唯一架构。无论底层选择 Redis、PostgreSQL 还是其他存储,都建议保留类似字段:

{
  "memory_id": "m-001",
  "namespace": "tenant-a/user-42",
  "kind": "semantic",
  "content": "用户偏好简短的中文回答",
  "source": "thread-42",
  "status": "confirmed",
  "expires_at": null
}

上面的 JSON 必须保持有效格式;字段含义紧跟在正文中解释。生产环境还应记录写入时间、更新时间、版本或冲突原因,并把记忆读取和写入纳入审计。

常见误区与记忆边界速查

  • 把全部历史直接拼进 prompt:短期能工作,长期会增加上下文成本,并让无关或矛盾信息干扰当前任务。
  • 让模型直接写长期事实:模型输出应先进入候选区,经过来源、敏感信息、重复和冲突判断,再决定是否晋升。
  • 只建一个全局 namespace:这会让多用户、多组织或多 Agent 共享边界变得模糊;命名空间不是授权本身,仍需服务端校验。
  • 只做向量检索不做保留:相似度高不代表信息仍然正确,TTL、删除、版本和人工修正同样重要。

最后可以用一条简单规则复盘设计:临时状态留在短期上下文,稳定事实进入长期存储,过程动作进入事件记录;任何跨会话召回都必须同时通过范围、相关性和生命周期判断。

相关问题

短期上下文是不是一定不能落库?

不是。为了断点恢复,短期状态可以持久化到检查点;关键是它仍按 thread 隔离,并设置清理或过期策略,不要因为落库就把它当成跨用户共享的长期事实。

长期记忆一定要使用向量数据库吗?

不一定。用户 ID、配置项和明确键值适合结构化读取;只有需要按语义召回历史经验时才增加 embedding 和向量索引,先解决范围与生命周期,再选择检索技术。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go 1.27.1 修复范围涉及哪些数据库和 HTTP 包Go 1.27.1 修复范围涉及哪些数据库和 HTTP 包
上一篇
Go 1.27.1 修复范围涉及哪些数据库和 HTTP 包
Go html/template 中 URL 参数为什么会被转义
下一篇
Go html/template 中 URL 参数为什么会被转义
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    47次使用
  • SuperCLUE中文大模型评测基准:功能、能力维度与应用指南
    SuperCLUE
    SuperCLUE是权威的中文大语言模型综合评测基准,涵盖语言理解、知识应用、AI Agent智能体及安全性等12项核心能力。通过多轮对话与客观测试,定期发布榜单与技术报告,为模型研发、优化及行业选型提供科学依据。
    198次使用
  • C-Eval中文评测基准:大语言模型多学科能力评估指南
    C-Eval
    深入了解C-Eval中文评估套件,涵盖52个学科与4级难度。本文详解其功能特点、Zero-shot/Few-shot使用方法及代码示例,助您全面评测LLM中文理解与泛化能力。
    133次使用
  • AI Prompt Library:免费AI提示词库,助力ChatGPT高效创作与营销
    AI Prompt Library
    探索AI Prompt Library免费资源库,涵盖营销、写作及多场景AI提示词。兼容ChatGPT、Claude等工具,一键复制优化输出,提升工作效率。
    66次使用
  • Generrated:DALL·E 2/3 AI绘画提示词灵感库与图像对比平台
    Generrated
    Generrated汇集9300+张DALL·E生成图像及对应提示词,支持查看完整图集、对比DALL·E 2与3版本差异,是AI绘图新手学习Prompt设计与获取创作灵感的实用工具。
    47次使用