
微信机器人没有长期记忆每次对话都像第一次认识用户——上周说过敏感肌这周问面膜还要重新说。会话上下文窗口解决单次对话内的记忆长期记忆解决跨会话的记忆——用户说过什么、偏好什么、承诺过什么跨次对话都能记住。长期记忆不是全量存全量加载是选择性存储、按需检索、管理时效。一、记忆存储结构——存什么不存什么长期记忆不能什么都存。存所有历史对话检索时信息过载重要记忆被淹没。只存关键事实肤质敏感肌、用户偏好价格敏感/品牌偏好、承诺记录承诺过的优惠。闲聊和已完成的一次性查询不存。存储用结构化而非原始文本。用户说我是敏感肌上次买的面膜过敏了结构化存为{肤质:敏感肌, 体验:{面膜:过敏}, 时间:xxx}。结构化的价值是按字段检索而非全文搜索速度快且准确。会话历史和记忆存储的接口在 Eyun 开发文档 中有对应支撑。二、记忆检索——按相关性Top-K而非全量加载长期记忆不能每次对话都全量加载——记忆越多加载越慢大部分和当前对话无关。检索机制是按当前对话相关性找记忆——用户问面膜时检索肤质记忆和面膜体验记忆不检索物流偏好。工程实现是相关性评分。当前对话提取关键词和意图和记忆库做相关性匹配——肤质记忆和面膜话题相关度高物流偏好和面膜相关度低。按相关度排序取Top-K加载到上下文。K值不宜过大——加载太多和全量加载没区别靠效果数据调。三、记忆时效管理——有些记忆会过期记忆不是永久有效的。承诺记忆有时效——优惠下周到期过了就失效。偏好记忆会变——去年偏好A品牌今年可能偏好B。事实记忆相对稳定——肤质不频繁变。时效管理的核心是给记忆加过期时间和置信度。工程实现是元数据维护。每条记忆附带来源时间、过期时间、置信度。检索时先过滤过期记忆再用置信度排序。冲突记忆——前后说法矛盾上周说敏感肌这周说油皮以最新为准但降低置信度用前最好确认。记忆管理和过期淘汰的接口在 Eyun 开发文档 中有接口能力。长期记忆三环节对照环节处理对象核心原则工程价值存储结构关键事实偏好承诺结构化非原始文本检索高效检索机制当前对话相关记忆按相关性Top-K避免全量加载时效管理记忆过期与冲突加过期时间置信度淘汰失效记忆长期记忆存储检索与时效管理实现class LongTermMemory: def __init__(self): self.memories {} # 记忆库 def store(self, raw, session): # 结构化提取原始消息→关键事实 facts self.extract_facts(raw) for f in facts: self.memories[f.key] { value: f.value, expire: f.expire, # 过期时间 confidence: f.conf, # 置信度 } def retrieve(self, raw, k5): # 相关性检索按当前对话找Top-K记忆 scored [] for key, mem in self.memories.items(): if self.is_expired(mem): # 过滤过期记忆 continue rel self.relevance(raw, key, mem) scored.append((key, mem, rel)) scored.sort(keylambda x: -x[2]) return scored[:k] # 取Top-K def resolve_conflict(self, new_fact): # 冲突记忆以最新为准降置信度 old self.memories.get(new_fact.key) if old and old[value] ! new_fact.value: new_fact.conf 0.6 # 可能随口说错 self.memories[new_fact.key] new_fact落地建议记忆存储从关键事实做起——肤质、偏好、承诺三类最有价值闲聊不存。检索K值从3-5起步——太少漏关键记忆太多和全量加载没区别。时效管理别忽略——过期承诺不淘汰用户拿过期优惠来问会引发纠纷。冲突记忆以最新为准但降低置信度用前确认。微信侧的会话历史、记忆存储和上下文加载由 Eyun 这类个人微信API平台 提供记忆检索和时效管理在自建服务实现接口字段以平台开发文档为准。