找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3045

积分

0

好友

413

主题
发表于 6 小时前 | 查看: 4| 回复: 0

最近有朋友提到,阿里淘天今年开发岗的实习面试,AI Agent 开发成了高频考点,而且很多题目不再局限于前端或后端的传统分野。其中一道经典的一面试题便是:请你介绍一下 AI Agent 的记忆机制?

这其实触及了智能体设计的核心。一个没有记忆的 AI 助手,每次对话都像初次见面,既无法记住你的偏好,也无法完成复杂的多步任务。今天,我们就来深入拆解这个问题。

💡 核心要义

Agent 之所以需要记忆,是为了在两个层面实现突破:在多步任务中保持连贯状态,以及跨任务积累和复用知识。其记忆机制通常借鉴人类认知系统,分为四个层次:

  1. 感知记忆:当前输入的原始内容。
  2. 短期记忆:Context Window 内的对话历史。
  3. 长期记忆:存储在外部数据库、支持语义检索召回的知识。
  4. 实体记忆:结构化提取的关键事实。

在实际工程化时,需要围绕三个核心问题展开设计:存什么怎么存、以及什么时候取用,并根据信息类型匹配合适的存储介质与检索策略。

🤔 没有记忆的 Agent 有多难用?

要理解记忆的重要性,不妨先感受一下“失忆”Agent 的糟糕体验。

假设你今天告诉 Agent:“我喜欢代码风格简洁、变量命名用英文、不要过度注释”。它很好地遵循了这些要求,完成了任务。

但当你明天重新打开对话,让它编写一个新功能时,它输出的代码可能又变回了老样子:变量名冗长,充满了中文注释。你感到困惑,但对 Agent 而言,昨天的对话从未发生,每一次互动都是全新的开始,所有约定随风而逝。

无记忆Agent的问题示例

这还只是“偏好记忆丢失”的问题。更严重的是“任务状态丢失”。当一个 Agent 执行“先查资料,再整理报告”这类多步任务时,如果没有短期记忆来维持状态,它根本不知道上一步查到了什么,当前进行到哪个阶段,已经收集了哪些信息。任务链条会因此断裂。

记忆,是 Agent 从“单次问答工具”蜕变为“真正助手”的关键分水岭。它使 Agent 能够积累对你的了解,保持多步任务的连贯性,并沉淀跨任务的知识。

🧠 四种记忆类型(从短暂到持久)

我们可以将 AI Agent 的记忆机制类比为人类的记忆系统,从瞬间到永恒,大致分为四个层次。

AI Agent四种记忆类型图解

第一层:感知记忆

  • 定义:当前单次调用的原始输入,如用户消息、上传的截图或文档。
  • 生命周期:仅存在于本次调用处理期间,处理完即消失,不会主动保留。
  • 人类类比:就像你刚听到的一句话,如果没有刻意去记,几秒后便会遗忘。它是信息进入模型的“入口”。

第二层:短期记忆

  • 定义:Context Window 内的 messages 列表,记录了当前任务执行的全过程,包括用户输入、模型输出和工具调用结果。
  • 生命周期:任务进行中一直存在,任务结束(如对话关闭)即被清空。
  • 人类类比:如同你的“工作台”,桌上摆着正在处理的所有材料。工作台大小有限(受 Token 上限限制),满了就需要清理。其特点是“随时可见”,无需额外查找。

第三层:长期记忆

  • 定义:跨任务保留的信息,存储在外部数据库(如向量数据库、关系数据库)中。任务结束信息不丢失,需要时可检索调用。
  • 人类类比:这就是你的“档案室”,资料存入后便永久保存,但使用时需要主动去翻阅查找。其核心技术是向量数据库支持的“语义检索”,它不依赖精确的关键词匹配,而是根据意思的相似性找到相关内容,灵活性极高。

第四层:实体记忆

  • 定义:比长期记忆更精炼,它并非存储原始对话,而是主动从中提取关键实体和事实,并以结构化字段的形式保存。例如“用户偏好Python”、“项目预算5万”。
  • 人类类比:类似医生的“病历卡”,记录的不是问诊录音,而是结构化的“主诉、诊断、用药”结论。信息密度高,查询速度快,且不受原始表述方式影响。

四层记忆对比一览:

类型 载体 容量 生命周期 访问方式
感知记忆 当次输入 极小 单次调用 即时访问
短期记忆 Context Window 受 Token 限制 一次任务 直接读取
长期记忆 向量/关系数据库 近乎无限 持久 语义检索
实体记忆 结构化存储 近乎无限 持久 精确查询

⚙️ 设计记忆模块的三个核心工程问题

理解了四种类型后,在实际构建记忆模块时,我们还需要解决三个关键的工程问题。

1. 存什么?(决策依据)

并非所有内容都值得写入长期记忆。 indiscriminate 地存储一切只会引入噪音,降低检索精度。一个简单的判断标准是:“这条信息,如果在下次任务开始时被Agent知晓,是否能帮助它做得更好?”

长期记忆存储决策依据

  • 高价值记忆(建议存入)
    • 用户偏好与习惯(语言风格、技术栈偏好、工作模式)。
    • 任务关键结论与决策(例如:“调研发现竞品A采用按用量收费的定价策略”)。
    • 外部知识(产品文档、FAQ、历史案例)。
  • 低价值噪音(建议抛弃)
    • 中间推理过程。
    • 工具返回的原始冗长日志数据。
    • 与业务无关的闲聊内容。
      存入这些噪音只会稀释高价值记忆,导致检索的信噪比下降。

2. 怎么存?(存储策略)

应根据信息类型选择合适的存储介质,而非一刀切地塞进向量数据库。

AI Agent数据存储策略

  • 需要语义检索的内容(如文档知识、对话摘要):存入向量数据库。利用 Embedding 存储,依靠相似度进行检索。
  • 结构化的用户偏好与状态字段(如语言偏好、项目配置):存入关系数据库或 Key-Value 数据库。支持精确查询,速度快。
  • 整段文档或知识库:存入向量数据库,配合 RAG(检索增强生成) 技术进行召回。

混合存储是当前的主流实践:用关系库管理结构化偏好,用向量库处理非结构化知识,两者协同工作。

3. 什么时候取用?(检索策略)

主要有两种策略,实践中常结合使用:

主动检索与被动触发结合策略

  • 主动检索:在任务开始前,系统就以当前任务描述为查询词,主动检索相关记忆(用户偏好、历史背景),并将结果注入 System Prompt。这样,Agent 从一开始就带着“历史经验”进入工作,用户无需重复交代背景。
  • 被动触发(按需检索):在任务执行过程中,当 Agent 推断当前步骤需要特定专业知识时,主动发起检索。通常将“查记忆”封装成一个 Tool,由 Agent 自行决定调用时机。这种方式更灵活,但依赖于模型对检索需求的准确判断。

最佳实践是两者结合:Session 开始时执行一次主动检索,加载用户偏好与背景;任务执行中,在需要特定知识时触发按需检索。

🔄 完整记忆模块的协作流程 (“读 -> 用 -> 写”)

将四层记忆与三个核心问题整合,一个完整的任务周期中,记忆系统的协作可以分为三个阶段。

第一阶段:任务开始前,先「读」记忆

任务开始前读取记忆

用户发起新请求后,Agent 并非立即行动,而是先“翻阅档案”:

  1. 实体记忆中精确取出用户的结构化偏好(语言、风格、过往决策)。
  2. 以任务描述为查询词,对长期记忆执行语义检索,获取最相关的历史背景。
  3. 将这两部分信息拼接入 System Prompt 开头。
    至此,Agent 已携带完整的“用户画像”进入任务,无需用户重复背景信息。

第二阶段:任务执行中,持续「用」记忆

任务执行中使用记忆

任务执行的核心循环由短期记忆(Messages 列表)支撑:

  • 用户消息、模型输出、工具返回结果被持续追加到 Messages 中。
  • 每次调用大模型都携带完整的对话历史,确保 Agent 始终知晓任务进度与已有发现。
  • 若某个步骤需要特定专业知识(如查询API文档),Agent 可临时调用“查记忆” Tool,以当前上下文为查询词检索长期记忆,并将结果注入当前步骤的 Context 中,用完即走,不永久占用宝贵的 Context 窗口。

第三阶段:任务结束后,主动「写」记忆

任务结束后写入记忆

任务完成后,系统将本次产生的新知识写回持久化存储:

  1. 更新实体记忆:如果用户表达了新偏好(如“以后函数都要加类型注解”),则更新对应的结构化字段。
  2. 写入长期记忆:如果任务产出了有价值结论(如“竞品A定价是按用量收费”),则将其摘要进行 Embedding,存入向量数据库。
  3. 清空短期记忆:Messages 列表被重置,“工作台”恢复洁净,准备迎接下一个任务。

完整记忆模块“读用写”协作流程图

“读 -> 用 -> 写”形成了一个完整的增强闭环。每次任务都始于历史经验的加载,依托短期记忆保持执行连贯,终于新知识的沉淀。正是在这个循环中,AI Agent 得以越用越“聪明”,真正成为一个了解你、懂业务的智能助手。

理解并设计好记忆机制,是构建实用化 AI Agent 的关键一步,也是在当前 技术面试 中展现你深度思考能力的绝佳话题。




上一篇:Harness Engineering:AI 不会解决你的文档与流程债务,只会让你加倍偿还
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-7 13:46 , Processed in 0.715843 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表