跳到主要内容

对话记忆(多轮对话记忆)

功能简介

对话记忆让 AI 机器人记住当前会话中聊过的内容

没有记忆时,机器人每次都"失忆"式地单独回答——您先问"这个多少钱",再问"那运费呢",它根本不知道"这个"指的是什么。开启对话记忆后,机器人回答前会先回顾之前的对话,追问、指代都难不倒它:

访客:我叫张三,想查一下我的订单。 机器人:您好张三!请告诉我您的订单号。 访客:我忘了,我是谁来着? 机器人:您是张三。您也可以在"我的订单"页面找到订单号……

对话记忆对开启了大模型对话的机器人默认开启,凡是通过微语 AI 网关接入的模型都支持,包括 DeepSeek、智谱 GLM、阿里云百炼(通义千问)。记忆还能跨会话延续:同一访客再次咨询同一工作组或机器人时,会接着使用同一本“记忆本”。

工作原理(大白话)

可以把机器人想象成一位随身带小本子的客服:

  1. 随手记——会话中的每一轮问答(访客问了什么、机器人答了什么)都会自动记到"记忆本"上,保存在您自己的数据库里。
  2. 答前翻——新问题来临时,机器人先翻一翻最近的记录,把它们连同新问题一起交给大模型,回答就能接得上前文。
  3. 只翻最近几页——机器人只重读最近 N 条消息(即"上下文消息数",默认 10 条),既记得住,又不会因为塞太多内容导致变慢、变贵。
  4. 一位访客、一个服务入口,一个本子——记忆按“服务入口 + 访客身份”(即会话主题)记录。不同访客之间互不干扰,绝不会把 A 客户聊的内容串到 B 客户那里;而同一访客再次咨询同一工作组或机器人时,仍会写进同一个本子——机器人因此记得之前的咨询。
小知识

记忆可以跨会话延续:同一访客开启新会话,只要还是同一工作组或机器人,会话主题就不变,机器人依然记得之前聊过的内容(最近 N 条以内)。访客身份保存在浏览器中,清除浏览器数据或换设备后会被识别为新访客,记忆重新开始。

chat_memory

你能做什么

  • 按机器人开关记忆——在管理后台的机器人设置中,"高级功能"里有"多轮记忆"开关(默认开启)。
  • 控制记多少——"上下文消息数"滑块决定每次重读多少条最近消息(默认 10 条,最大 50 条)。
  • 查看机器人记住了什么——超级管理员可以浏览全部记忆记录,按会话 ID、消息类型、内容关键词筛选查询,并点开查看详情。
  • 让机器人忘掉——一键删除某个会话主题下的全部记忆,立即生效:该访客后续的提问将不再携带任何上文。

快速上手

  1. 前提:机器人已开启大模型对话,并配置了文本模型(DeepSeek、智谱、百炼均可)。

  2. 开启记忆:管理后台 → AI → 机器人 → 编辑机器人 → 展开高级功能 → 确认多轮记忆已开启。

  3. 调节窗口:设置上下文消息数(建议从 10 开始;长对话中机器人"忘得太快"时再调大)。

  4. 验证效果:打开访客聊天窗口,依次发送:

    • "我叫张三"
    • "我是谁?"
    • "我刚才问了你什么?"

    机器人都能答对,说明记忆已生效。

查看与管理记忆

记忆记录在管理后台统一管理:超级管理员 → 消息 → 对话记忆记录(企业版/平台版可见,且需要相应的角色权限)。

每条记录包含:

字段含义
会话 ID这条记忆属于哪组对话——ID 即会话主题,同一访客在同一工作组/机器人下的会话共用同一个 ID(一个 ID 对应多条记录)
序列号该消息在会话中的顺序
类型这句话是谁说的——见下方说明
消息内容消息原文
时间戳记录时间

类型共四种:

  • USER——访客说的话
  • ASSISTANT——机器人的回复
  • SYSTEM——系统设定(如机器人的人设提示词)
  • TOOL——机器人调用工具(如查询订单)的中间过程

使用删除操作可以清空某个会话的全部记忆——例如客户提出数据删除请求,或需要清理测试会话时。

chat_memory_admin

常见问题

哪些模型支持多轮记忆?

凡是通过微语 AI 网关接入的机器人都支持,包括 DeepSeek、智谱 GLM、阿里云百炼(通义千问)。记忆是平台能力,无需在模型厂商侧做任何配置。

记忆保存在哪里?会不会上传到第三方?

记忆保存在您自己服务器的数据库中(SPRING_AI_CHAT_MEMORY 表,部署时自动创建)。除正常调用大模型接口外,不会向任何第三方发送数据。

下次再来咨询,机器人还记得我吗?

记得——只要访客身份不变(保存在浏览器中)且咨询的是同一工作组或机器人,会话主题就不变,机器人会接着同一本“记忆本”,记得最近的交流内容(最多“上下文消息数”条)。清除浏览器数据或更换设备后会被当作新访客,记忆重新开始。客服端中单独创建的 AI 助理对话,每次创建都是新会话,记忆互不共享。

关闭多轮记忆后会怎样?

机器人回退到旧模式:直接从聊天消息记录中读取最近消息来补充上下文。会话仍可正常进行,但不再维护统一的"记忆本",记忆管理页面也不会再产生新记录。

上下文消息数是不是越大越好?

不是。条数越多连续性越好,但 token 成本更高、回复更慢。客服场景建议 10–20 条,只有复杂的长咨询才需要调大。

怎么让机器人忘掉某段对话?

超级管理员 → 消息 → 对话记忆记录 → 找到对应会话 → 删除。下一条回复立即失去该上下文。

最佳实践

  • 窗口保持 10–20 条——客服对话足够用,避免为不必要的 token 买单。
  • 及时清理测试会话——测试机器人会产生记忆记录,删除后统计和列表更干净。
  • 重视隐私合规——若访客可能输入敏感个人信息,请将记忆管理权限只授予可信角色,并支持按需删除。
  • 机器人"失忆"了怎么办——先确认"多轮记忆"开关是否开启,再检查该会话记忆是否被删除;这两者都会导致机器人回答不带上文。

技术背景(选读)

  • 记忆基于 Spring AI ChatMemory 实现:每次模型调用都会经过 MessageChatMemoryAdvisor,由 JDBC 仓储持久化到 SPRING_AI_CHAT_MEMORY 表。会话 ID 即 threadTopic(如 org/workgroup/{wgUid}/{visitorUid}),同一访客 + 同一工作组/机器人的 topic 保持不变,因此记忆天然跨会话延续;AI 助理会话 topic(org/robot/llm/{robotUid}/{userUid}/{randomUid})带随机后缀,每通会话独立。
  • 机器人级开关:RobotLlm.memoryEnabled;窗口大小:contextMsgCount。Advisor 链在 AdvisorChainFactory 中组装;各厂商服务(SpringAIDeepseekServiceZhipuaiServiceDashscopeService)共享同一套基类实现。
  • 查询/删除接口:/api/v1/chat/memory/query/org/api/v1/chat/memory/delete,受 CHAT_MEMORY_* 权限保护。

关联阅读

这页文档对您有帮助吗?