智能体一开始往往只需要记住当前对话,但当任务变成长流程、多轮协作,或者需要跨会话保持用户偏好时,单靠上下文就会变得混乱。记忆机制的选型,核心不是“记得越多越好”,而是判断哪些信息值得保留、应该保存多久,以及在什么条件下重新提供给模型。
“短期记忆”“长期记忆”和“外部存储”经常被放在一起讨论,但它们解决的其实不是同一个问题。
对话内短期记忆解决的是“这一次任务正在发生什么”;用户长期档案解决的是“这个用户长期稳定地具有什么特征”;外部向量或数据库存储解决的是“如何保存和检索大量、复杂、可持续更新的信息”。
三者可以组合使用,也可以只选择其中一种。真正需要避免的是没有区分信息类型,最后把所有内容都直接塞进模型上下文。
短期记忆通常包含当前会话中的用户问题、智能体已经做出的判断、任务进度、待处理事项和最近的工具结果。它的价值在于让智能体能够连续理解上下文,而不是每一轮都从零开始。
例如,用户先要求智能体制定一份短视频选题计划,后面又补充目标受众、发布频率和内容风格。这些信息都属于当前任务的组成部分,保留在对话上下文中,智能体才能继续修改方案,而不是重新询问。
这种方式适合以下任务:
它的主要优势是实现简单,信息与当前任务天然相关,也不需要额外设计复杂的保存和检索流程。对于刚开始搭建的智能体,短期记忆通常应该是第一个加入的能力。
但它并不适合承担长期档案的角色。对话越来越长时,上下文会变得臃肿,模型需要处理大量已经不再重要的内容;如果把历史记录全部保留,还可能增加处理成本,并让旧信息干扰当前判断。
因此,短期记忆更像是工作台,而不是档案室。任务结束后,除非其中部分内容经过筛选,否则不应默认永久保存。
长期档案记录的是跨会话仍然有价值的用户信息,例如内容方向、表达偏好、常用工作方式、长期目标或明确提出的固定要求。
比如,用户多次要求输出简体中文,并且长期制作面向新手的人工智能教程。这类信息在后续任务中可能持续发挥作用,就比某次对话中的临时措辞更适合进入长期档案。
长期档案适合保存的内容,通常具备三个特点:相对稳定、未来可能重复使用、使用时能够明显改善结果。它可以帮助智能体减少重复询问,也能让不同会话之间保持一定的一致性。
不过,长期档案不应该成为用户所有行为的自动记录。一次随口提到的计划、临时情绪、尚未确认的个人信息,都不一定值得长期保存。尤其涉及身份、联系方式、财务、健康和家庭等敏感内容时,更需要明确保存范围和使用目的。
长期档案的关键不是“记住用户的一切”,而是让用户知道智能体记住了什么,并且能够修改或删除这些内容。没有管理入口的长期记忆,容易从便利功能变成隐私负担。
当智能体需要处理大量知识、历史记录、项目资料或结构化数据时,仅靠对话上下文和少量用户档案就不够了。这时可以考虑把信息放到外部存储中,再根据当前任务检索相关内容。
向量存储通常适合处理语义相近但表达方式不完全相同的文本。例如,用户询问“之前关于摆摊成本的建议”,系统可以尝试从历史资料中找到语义相关的内容,而不要求用户复述原句。数据库则更适合保存结构明确、需要准确筛选和更新的数据,例如任务状态、用户设置或记录之间的关联关系。
外部存储适合这些场景:
它的代价也更明显。系统不仅要考虑存什么,还要考虑如何切分、如何标记来源、如何检索、如何处理过期内容,以及检索结果是否真的与当前问题相关。存储的信息越多,错误召回、重复内容和过时资料带来的风险也越大。
向量检索并不等于“理解了一切”。它只能帮助系统找到可能相关的内容,智能体仍然需要判断这些内容是否适用。如果某些数据需要精确匹配、严格更新或明确权限,不能只依赖模糊检索。
这里的“成本”不只是存储费用,也包括系统复杂度、调试时间、数据治理和隐私管理。一个简单的个人问答助手,未必需要外部存储;一个长期管理项目资料的智能体,如果只依赖上下文,反而会越来越难维护。
可以先从任务本身提问,而不是从技术方案开始。
如果用户提供的内容只服务于当前一次任务,例如临时的文章主题、当天的活动要求或正在修改的文案,优先使用短期记忆。任务完成后,可以丢弃大部分上下文,只保留必要的结果。
如果这类信息在未来会反复出现,再进入下一步判断,而不是一开始就永久保存。
如果信息跨会话仍然有效,并且用户希望智能体持续遵循,例如输出语言、内容方向或固定格式,可以放入长期档案。
这里最好增加“确认”环节。智能体可以询问用户是否希望记住某项偏好,或者只对明确表达为长期要求的信息进行保存。对于不确定、敏感或可能变化的信息,不要自动升级为长期档案。
如果资料数量较少,而且每次任务都能直接提供给智能体,暂时不必引入外部存储。只有当资料需要长期积累、反复查询,或者多个任务需要共享时,外部存储才真正有价值。
此时还要判断数据类型:需要精确筛选和更新的内容,更适合结构化数据库;需要根据语义寻找相关片段的内容,可以考虑向量检索。两者也可以配合使用,而不是二选一。
隐私边界应该在保存之前确定。可以把信息按风险分成三类:
判断标准很简单:如果这条信息被错误召回、长期保留或被其他任务使用,会不会造成明显影响?影响越大,越不应该默认进入共享记忆。
大多数实用型智能体不需要在三种方案中只选一个。比较稳妥的组合是:短期记忆负责当前任务,长期档案负责少量稳定偏好,外部存储负责大量资料和可检索记录。
例如,一个内容创作智能体可以在当前会话中保存本次选题、文章结构和修改意见;在长期档案中保存用户习惯使用的语言和内容方向;把已经确认的资料、历史文章和项目记录放入外部存储。这样既不会让每次对话都背负完整历史,也不会让长期档案变成杂乱的资料仓库。
组合时还应区分“记忆内容”和“记忆索引”。外部存储中保存的是原始资料、结构化记录或历史内容,长期档案中可以只保留少量稳定结论。不要把一整篇对话压缩成一段模糊总结,再把这段总结当成永久事实。
第一个误区是把所有信息都塞进上下文。这样做看似省事,实际会让当前问题被无关历史包围。智能体应该在任务开始时只接收与当前目标有关的内容,而不是机械拼接全部记录。
第二个误区是把每句话都写入长期记忆。长期记忆一旦混入临时想法、过期偏好或未经确认的信息,后续任务就可能被错误内容影响。保存之前至少要判断信息是否稳定、是否重复有用、是否获得用户允许。
第三个误区是依赖单一记忆方案。只用短期记忆,智能体无法保持长期一致性;只用长期档案,信息容易过度概括;只用外部向量存储,又可能出现召回不准、内容过期和权限混乱的问题。
第四个误区是只设计“写入”,不设计“更新和删除”。记忆系统必须能够处理用户改口、偏好变化、资料失效和错误记录。没有清理机制的记忆,使用时间越长,越可能积累冲突信息。
第五个误区是把检索结果当成事实。外部存储返回的内容只是候选资料,智能体仍然需要结合时间、来源、任务范围和用户当前要求进行判断。对于相互矛盾的记录,应优先确认,而不是直接选择其中一条。
如果你的智能体只需要完成一次任务或一段连续对话,先使用短期记忆,不必急着建设完整的长期系统。
如果它需要记住少量、稳定、经过确认的用户偏好,就加入长期档案,并提供查看、修改和删除的方式。
如果它需要管理大量资料、跨会话检索内容,或者让多个任务共享信息,再引入外部向量或数据库存储。外部存储不是记忆能力的起点,而是当信息规模和管理需求确实增长后,再增加的一层基础设施。
好的记忆机制不是让智能体保存更多内容,而是让它在正确的时间取得正确的信息,同时知道哪些内容不该保存、哪些内容已经失效,以及哪些内容必须先向用户确认。
Δ
Ctrl+D