Agent 记忆系统:多轮对话+长期记忆——让 Agent 记住你的上下文
引言 客服机器人上线一周,用户的吐槽集中在一句话上:"它是不是失忆了?" 用户:我上周买的那双跑鞋想换货,订单尾号 8821 Agent:好的,请提供订单号和商品名称。 用户:我刚说了啊,跑鞋,8821! Agent:好的,请提供订单号和商品名称。 每轮对话都是一次独立的 HTTP 请求,模型本身是无状态的——你以为它"记得"上一轮,其实是你的应用每次都得把历史重新喂给它。大多数人实现的第一步也确实是"把对话存数据库",但存了照样失忆:数据库里有历史 ≠ 模型看到了历史。这中间缺的是"记忆注入层"——每次生成前,把该让模型看到的历史和事实,以它能直接利用的格式放进请求。 这篇文章按工程落地的顺序讲清三种记忆:短期记忆(滑动窗口 + Token 裁剪)、长期记忆(偏好向量化 + 检索注入)、会话隔离(userId/sessionId 两级主键),最后用 LangChain4j 实现一个"记得你上次问了什么"的电商客服 Agent。 一、先澄清:模型没有记忆,记忆是你的应用伪造的 1.1 一次请求的真相 // 模型 API 是完全无状态的:每轮对话都要把完整上下文带上 chatMode....