乐于分享
好东西不私藏

AI 记忆系统全景:让 Agent 从工具变成搭档

AI 记忆系统全景:让 Agent 从工具变成搭档

一、背景与意义

1.1 什么是 AI 记忆系统

你和 AI 聊了一周,告诉它你在学 Python、最近在减肥、不喜欢被催——下次打开对话框,它对这些一无所知,你得从头介绍自己。这不是 AI 不够聪明,而是它的架构里本来就没有"记性"。

没有记忆系统,AI 永远只是个工具——每次对话都是第一次,功能再强也只能处理当前输入,对面前这个人一无所知。记忆系统要解决的,是让 Agent 从工具进化为搭档:随着交互积累,越来越懂你,越来越能在你没有明说的情况下给出你真正需要的东西。

1.1.1 在智能体通用架构中的位置

记忆不是智能体的一个附属功能,而是让它从"每次都是第一天"变成"越用越懂你"的关键基础设施。

要理解记忆系统的价值,得先看清楚它在智能体(AI Agent)整体架构里处于什么位置。

图中可以看到一个典型的智能体架构全貌。智能体居于中心,向四个方向延伸出四大核心模块:

  • 右侧是决策(想),负责反思、任务规划和过程推理;
  • 左侧是执行(做),对接搜索、编程、外部工具调用等能力;
  • 底部是感知(看),连接其他智能体,接收来自外部环境的信息输入;
  • 顶部是记忆(记),是跨越时间的,它把过去发生的一切沉淀下来,随时为当下的决策提供背景信息

这个共识正在被整个行业验证:2024~2025 年,记忆相关的学术论文数量大幅增长,主要 AI 厂商相继推出自有记忆产品,专注 Agent 记忆的第三方独立创业公司也越来越多。

围绕记忆的讨论,衍生出一个新说法:上下文工程。它的核心命题是:智能体每次执行任务所需的所有输入——历史对话、用户偏好、可用工具、参考资料、执行规范——都属于"上下文"的范畴。

上下文工程就是研究如何为智能体的每一步行动,精准地准备"恰到好处"的信息来填充上下文窗口,既不遗漏关键内容,又不浪费宝贵的Token。记忆系统,正是上下文工程中管理"历史信息"这一维度的核心组件。

1.1.2 记忆系统 vs 上下文窗口

AI 记忆系统是插在 AI 应用与大语言模型之间的一层专用软件,专门负责跨会话地存储、整理和调取历史信息。它相当于给 AI 配了一本持续更新的私人笔记本——不只是当次对话的草稿纸,而是能在多次对话之间保留的长期档案。

理解记忆系统,需要先区分两个经常被混淆的概念:

概念
类比
特点
上下文窗口
会议现场的白板
只在本次会话内有效,会话结束就清空
AI 记忆系统
随身带的笔记本
跨越多次会话,持续积累,可随时翻出

上下文窗口是 LLM 每次回答时能"看到"的内容范围。记忆系统是给它提供更长时间跨度信息的基础设施。没有记忆系统,再聪明的 AI 也只是一个失忆的天才——每次会话都是它的第一天。

从架构上看,有没有记忆系统,对应的是两种截然不同的智体状态:

无状态智体有状态智体
会话关系
每次独立,互不感知
在既往基础上持续延续
历史记忆
无,每次从零开始
跨会话保留,持续积累
用户体验
重复、低效、健忘
连续、个性化、持续进化

这个区别,正是记忆系统存在的意义。

1.1.3 狭义与广义的记忆系统

"记忆系统"这个词本身有宽窄之分。狭义的记忆系统,只指跨会话存储和检索用户相关事实——比如"用户不吃辣"、"正在学 React"——Mem0、MemoryOS 等开源框架都属于这个范畴。广义的记忆系统范围更大,RAG 也算其中一种——它从外部知识库检索文档片段注入上下文,本质是无状态的知识增强:

  • 事实:用户偏好、历史对话、个人背景
  • 知识库:智能体执行任务所需的领域知识、参考资料、企业内部文档
  • 技能:可复用的操作规则和工作流,比如发周报的固定步骤、常用工具的调用模板

1.2 人类记忆模型:AI 设计的底层灵感

AI 记忆系统的设计,大量借鉴了认知科学(Cognitive Science)对人类记忆的研究。理解人是怎么记东西的,有助于理解 AI 记忆系统为什么要这样设计。

1.2.1 三阶段记忆模型

心理学家阿特金森和谢夫林(Atkinson & Shiffrin)在 1968 年提出,信息在人脑中经历三个存储阶段:

三个阶段各有职责,核心差异如下:

记忆阶段
持续时长
容量
核心特点
日常例子
感觉记忆
0.5 ~ 3 秒
无限但瞬逝
感官输入的原始缓冲,大多数被丢弃
路上擦肩而过的陌生人的脸,几秒后就消失了
短期记忆
20 ~ 30 秒
约 4 ~ 7 个信息块
当前工作区,主动处理的部分又称工作记忆
别人报了个电话号码,你一边重复一边去找纸——放下注意力就忘了
长期记忆
数年乃至终身
近乎无限
经过编码后稳定存储,分外显与内隐两大类
你妈的生日、骑自行车的方法——几十年不练也不会忘

1.2.2 长期记忆的内部分类

长期记忆不是一个大仓库,而是按内容性质分成两大类、四种形式:

外显记忆是可以主动说出来的记忆,有两种:

  • 情节记忆:对具体事件的回忆,有时间线和场景。比如"上周三在咖啡馆和朋友聊起了那本书"——你能回忆起是哪天、在哪里、和谁,整个场景历历在目。这是心理学家恩德尔·图尔文(Endel Tulving)在 1972 年的重要发现。
  • 语义记忆:从大量经历中提炼出的稳定事实和规律。比如"北京是中国首都"、"我不喜欢吃辣"——你不需要想起是什么时候学到的,直接就知道了,和具体事件无关。

内隐记忆是在无意识状态下影响行为的记忆:

  • 程序记忆:骑车、打字、开车——十年不练上去就会,从来不需要主动"回忆"动作步骤。
  • 启动效应:看到"医生"这个词,处理"护士"的速度会加快,是一种无意识的影响,你自己感知不到。

情节记忆和语义记忆的区别对 AI 系统设计很关键:情节记忆对应"保留原始对话和事件"(你能回溯当时说了什么),语义记忆对应"从中提炼出稳定的用户事实"(只记结论,不记过程)。存哪种、怎么存,是记忆系统最核心的设计决策之一。

1.2.3 短期记忆与长期记忆之间:遗忘曲线

信息如何从短期记忆进入长期记忆,以及为什么会遗忘?德国心理学家艾宾浩斯(Hermann Ebbinghaus)在 1885 年给出了答案——他以自己为实验对象,记录在不同时间间隔后能回忆多少内容,发现了著名的遗忘曲线

其中  是记忆保留率, 是经过时间, 是记忆强度(强度越高,遗忘越慢)。

遗忘有三个核心规律:

  • 先快后慢:学习后 1 小时内,大部分遗忘已经发生;之后衰减速度逐渐放缓
  • 间隔效应:把练习分散在较长时间内,比集中突击效果好得多
  • 复习强化:在快要遗忘前复习,效率最高,每次复习都能延长记忆的半衰期

语言学习平台多邻国基于这套理论,开发了半衰期回归模型(Half-Life Regression,HLR)——用机器学习为每个用户的每个单词预测"何时该复习",使平台日留存率提升了 12%。

1.2.4 对 AI 记忆系统设计的映射

人类记忆的这几种类型,不是每种都能在 AI 里找到对应——有的能,有的没有:

人类记忆
AI 对应情况
说明
短期记忆 / 工作记忆
✅ 上下文窗口
当次对话的原始文本,会话结束即清空;例:"我最近在学 React,卡在 useEffect 上了"
长期记忆(情节)
✅ 时序存储
带时间戳的完整对话片段;例:[2025-03-10] 用户提到准备换工作
长期记忆(语义)
✅ 用户画像 / 事实列表
提炼后的稳定事实;例:用户不吃辣职业:前端工程师
程序记忆
✅ 任务执行记录
步骤和断点,用于中断续做;例:步骤3发邮件✗(权限不足,上次在此中断)
遗忘曲线
✅ 记忆衰减与淘汰
低频访问的记忆逐渐降权;例:去年提过的一次性计划,180 天无访问后自动清除
感觉记忆
❌ 无对应
感觉记忆在人脑中只维持 0.5~3 秒,AI 没有这个阶段——原始输入进入上下文窗口后立即参与计算,不存在独立的"瞬时缓冲层"
启动效应
❌ 不在记忆系统层
启动效应是先前接触对后续处理的无意识影响,在 AI 里体现为训练参数里沉淀的隐式关联(比如模型"见过"大量医学文本后对医学词汇更敏感),但这不是记忆系统管理的内容,而是模型权重本身的性质

感觉记忆和启动效应的"缺席"并不是遗漏,而是 AI 架构的真实边界:记忆系统管理的是可以显式存储和检索的信息,而模型参数里的隐式知识不在它的管辖范围之内。


1.3 大模型自身的记忆限制

有人会问:现在模型能力越来越强,上下文窗口越来越大,甚至往后一兆Token的上下文窗口可能成为主流——有了这么长的上下文,是不是就可以不需要记忆系统了?

答案是不行。即使支持百万Token的上下文窗口,仍然面临四个根本解决不了的问题,这是上下文窗口架构本身的天花板,不是把窗口扩大就能突破的:

  1. 物理容量的硬上限
  2. 注意力分布不均导致的准确度下降
  3. 历史越长越贵的成本爆炸
  4. 散落信息无法整合的认知碎片化。

1.3.1 物理容量:窗口再大也有硬上限

上下文窗口是 LLM 每次回答时能读到的内容总量,以 Token 计量——大致一个汉字对应 1.5 个Token,一篇 1000 字的文章约 1500 个Token。即使是目前上限最高的百万Token窗口,换算成实际对话量,大约等于一个每天与 AI 交流 1000 字的用户连续 18 个月的完整历史。对重度用户或企业 Agent 场景,这个上限来得比想象中快。

更根本的问题不是"多久会超出",而是上下文窗口本身的结构性质:它是每次请求独立的临时工作台。每次调用大模型,必须把所有需要参考的内容重新塞进去——上周的对话、上个月的决策、早期建立的用户画像,每次都要原封不动地"带上",模型才能看到。这意味着:

  • 历史越积越多,每次请求的负载就越来越重
  • 会话结束后上下文立刻清空,下次从零开始——这不是 bug,而是当前架构的基本特性
  • 超出上限后,必须强制截断或压缩,哪部分被丢掉,取决于系统策略,而非内容重要性

扩大窗口并不能解决这个结构性问题,只是在延缓它。窗口扩大 10 倍,只是让上限晚来 10 倍,持续积累的历史迟早还是会超出。

1.3.2 准确度下降:"迷失在中间"与压缩失真

学术论文《迷失在中间:语言模型如何使用长上下文》(Lost in the Middle)揭示了一个反直觉的规律:即使上下文窗口足够大,模型对其中不同位置信息的注意力严重不均匀——对开头和结尾表现很好,对中间部分会出现系统性遗漏。这和人类记忆的"首因效应"和"近因效应"高度相似。

这意味着:单纯靠扩大上下文窗口无法解决记忆问题,窗口越大,中间被忽视的内容越多。

长上下文带来的准确度问题,在 Agent 执行长程任务时还有一种更隐蔽的失效形式:上下文压缩(Compaction)引发的信息失真。当 Agent 运行过程中上下文接近Token上限,系统会强制对历史内容做压缩摘要。但压缩不是无损的——关键的技术约束(如接口认证参数、特定配置值、早期确认的边界条件)极易在压缩中丢失,导致 Agent 在任务后期做出与前期决策完全矛盾的行为。这个问题在调试 AI 应用时尤其难以定位,因为从最终输出看不出压缩发生在哪一步。

1.3.3 成本爆炸:历史越长越贵

以一个有 1000 轮对话历史的用户为例(每轮约 500 Token,历史总量约 50 万Token),如果每次回答都把所有历史塞进上下文:

场景
每次消耗Token
年均成本估算(1 万用户)
全量历史方案
~50 万Token
极高,难以商业化
记忆系统方案
~6000 ~ 8000 Token
降低约 85%,可持续

这个问题正在变得更紧迫——主流模型的定价在持续上涨,越好用的模型越贵。把所有历史信息一股脑塞给大模型,成本必然随用户历史积累持续上涨。

长上下文带来的三个问题——准确度下降、成本飙升、性能变慢——互相咬合。为了提高准确率而保留更多历史,会同步推高成本和延迟;为了压成本而做上下文压缩,又会损失准确度

记忆系统要做的,不是在三者中间做取舍,而是从根本上打破这个约束——精炼存储和精准检索,用极少的Token携带最有价值的信息。

1.3.4 认知碎片:有数据也看不出全貌

上面三个问题——窗口装不下、中间内容被遗忘、全量历史成本高——本质上都是"容量和成本"层面的限制,只要能塞进去就能用。但还有第四类问题,即使历史全在、数据完整,照样存在:认知碎片化

用户的偏好、决策、习惯散落在数十次会话的各个角落,彼此之间没有连接。AI 每次处理的只是当前输入,它不知道这个人是谁,不知道他在乎什么,更无法把零散的信息串成一个完整的人物画像。结果就是:装不下是一个问题,记不住是一个问题,但即使装得下、记得住,串不起来也是同样致命的问题。

装不下、记不住、串不起——这三句话准确概括了没有记忆系统时 AI 面临的三类本质困境。前两类是容量与持久性问题,第三类是认知整合问题,也是最难用简单工程手段绕过去的那一类。


1.4 记忆系统的技术价值

记忆系统 = 认知引擎 + 检索引擎。前者决定"存什么、怎么理解",后者决定"找什么、何时用"。两者缺一不可:认知做得再好,检索跟不上等于白存;检索再精准,认知没提炼,找出来的也是噪声。

1.4.1 RAG 的局限:有知识,没记忆

Agent 开发早期,一个非常自然的过渡方案是:给大模型外挂一个检索增强生成(RAG)服务。把文档、历史对话、知识库等内容存入向量数据库,用语义向量支持查询,作为大模型专业知识的补充。从某种角度说,这也是一种"记忆"——它确实解决了"没有相关知识"的问题。

但随着 Agent 场景越来越复杂,RAG 的局限逐渐暴露出来:它只解决了"找知识"的问题,并没有解决"记忆"的问题。

RAG 是「无状态的知识检索」,不是记忆。RAG 是图书馆——知识写进去就定在那,不会进化;Memory 是大脑——它随时间演化,不是一成不变的东西。

RAG 的局限集中在四个方面:

局限
表现
为什么纯 RAG 解决不了
时序推理弱
无法追踪事件发生的先后顺序
向量库没有原生时间戳语义,"上周说的"和"去年说的"在向量空间里距离差不多
冲突无法解决
新旧事实并存,读取时不知道信哪条
RAG 只负责"找到",不负责判断哪条信息更新、更权威
信念无法演化
无法追踪用户观点的变化过程
用户从"想换工作"到"决定留下"的演变,RAG 会把两条都召回,无法判断当前状态
记忆孤岛
每个 Agent 独立知识库,跨会话、跨 Agent 无法共享
RAG 库通常按项目/应用隔离,没有统一的用户记忆层

真正的记忆系统需要在 RAG 的基础上额外解决:时序感知(知道什么先发生、什么后发生)、冲突消解(新信息优先,或保留演变轨迹)、信念追踪(记录观点如何变化,而不只是记录事实),以及跨会话的统一用户画像。这四点恰好是向量检索架构本身解决不了的。

1.4.2 四个维度的技术收益

技术维度
没有记忆系统
有记忆系统
典型数据
回答准确率
每次仅凭当前输入,对用户一无所知
命中历史相关记忆,回答更有针对性
LoCoMo 准确率从 35% 提升至 52%~92%
上下文成本
全量历史塞入提示词,Token消耗线性增长
精炼记忆注入,消耗大幅压缩
优秀方案可压缩至全量的 8%~15%
检索性能
无记忆或全文检索,延迟高
向量 + 关键词混合检索,毫秒级响应
P95 延迟从 17 秒降至 1.44 秒
跨上下文连续性
会话结束即失忆,长任务频繁断线
跨会话保留进度、偏好和上下文背景
多 Agent 协同任务可无缝接续

1.5 记忆系统的业务价值

Agent 的「失忆困境」在企业场景里普遍存在,共性问题只有一个:会话结束 = 记忆归零。靠扩大上下文窗口(128K / 1M)无法根本解决,因为跨会话记忆、时序与关系推理、信念演化这三类能力不是上下文窗口能提供的,且成本会随历史积累线性攀升。

业务场景
没有记忆系统
有了记忆系统
客服 Agent
每次工单独立,用户反复描述历史,情绪逐渐失控
关联历史工单和偏好,第一句话就切中要点,主动提及上次未解决问题
销售 Agent
不记得预算、异议、偏好,沟通从头再来,成单周期拉长
延续上次沟通进展,直接切入用户关心的点,减少无效重复
企业知识助手
上周的讨论结论下周全部遗忘,团队决策无法积累
沉淀历次讨论结论、已排除方案、决策依据,形成组织记忆
个人助理
每次重建上下文,像陌生人聊天
记住工作习惯、偏好、进行中的任务,越用越懂你
智能体长期任务
任务中断后无法续做,重头再来
记录执行历史,中断后从断点继续,支持跨天跨周的复杂任务

二、记忆系统概览与选型对比

行业背景:不同于数据库领域已有 SQL 这样被广泛采用的事实标准,Agent 记忆目前还没有统一的实施规范——"用什么方案设计出来的记忆服务就一定是最好的",业界尚无定论。这也是为什么当前出现了多个路线并行、各有侧重的开源方案,各自探索自己认为最合理的设计取舍。

用两个维度可以大致给现有方案做个分类:

  1. 纵轴是存储结构,从结构化(提炼成事实、图谱、时序)到扁平(原始文本直接存);
  2. 横轴是管理方式,从被动存取(系统隐式处理,用户感知不到)到主动管理(Agent 显式读写,行为可控可审计)。
存储结构
管理方式
特点
代表产品
结构化
被动存取
记忆提炼成条目存入数据库,系统自动管理,开发者无需干预
Mem0、Cognee、HydraDB
结构化
主动管理
以人可读可编辑的文件形式存储,记忆对开发者透明,便于调试
OpenClaw、Zep、MemOS
扁平
被动存取
依赖模型自身上下文能力,记忆由模型自主决定,用户几乎无感知
ChatGPT、Claude.ai
扁平
主动管理
记忆管理逻辑内嵌在 Agent 行为中,Agent 显式读写,行为可审计
Claude Code、OpenViking

2.1 记忆系统的核心能力模型

一个完整的记忆系统,必须回答四个基本问题:怎么存、记什么、怎么找、怎么维护。每项能力的缺失都会导致不同类型的失效——存储不好,成本失控;写入不好,垃圾进垃圾出;检索不好,有记忆也用不上;更新不好,记忆库越来越乱。

2.1.1 记忆存储:怎么存决定成本与保真的平衡

存储解决的是"以什么形式保管记忆"的问题,核心是在压缩率和信息保真度之间找平衡。压缩越重,成本越低,但细节丢失越多;保留越完整,准确率越高,但成本和噪声也越高。

这个权衡体现在三个关键选择上:

  1. 结构化还是非结构化——是保留自然语言原文,还是提炼成事实条目、标签、图谱节点;
  2. 原文还是事实——存原文真值永久保留但噪声大,存提炼后的事实检索干净但一旦提炼出错就不可逆;
  3. 分层与分类的粒度——所有系统都同时涉及按热度/时效分层(管理记忆的生命周期)和按内容性质分类(隔离不同类型的记忆),差别只在深浅,有的只有一层几个类,有的多达三层十几个类型。

这三个选择直接决定了系统在准确率、Token 消耗和部署复杂度上的表现差异。

2.1.2 记忆写入:记什么决定质量上限

一次对话可能有几十轮,真正值得长期保留的信息往往只占少数,其余都是过渡性的闲聊、重复确认、一次性事件。写入要解决的问题就是:从这堆原始内容里,把有价值的东西准确识别出来。

写入的设计分歧主要集中在三点:

  1. 要不要提炼——用大语言模型把对话蒸馏成精炼的事实条目,检索时干净利落;或者原文全部保留,把"判断哪些有用"的压力留给检索侧处理;
  2. 提炼粒度——每条记忆只记一个独立事实,检索最精准,但信息容易过碎;保留段落粒度,上下文更完整,但噪声也更高;
  3. 写入时机——对话结束后同步提炼会增加响应延迟,异步处理流程更流畅,但刚说过的内容在写入完成前有短暂的"盲窗"。

写入是整个系统的质量上限——进去的是噪声,后面再精妙的存储和检索也救不回来。

2.1.3 记忆检索:怎么找决定记忆能不能被用上

存得再好,找不到也是白费。检索的麻烦在于:用户问问题的方式,和记忆当初存进去的方式,往往对不上——"我说过不喜欢辣的"对应的记忆可能是"用户饮食禁忌:辣",字面差很远但意思一样;而"GoLand 那个问题"里的专有名词,语义向量又容易识别不准。

检索的主要设计权衡有三个:

  1. 检索路数——语义向量擅长理解同义词,关键词匹配擅长精确命名实体,两者各有盲区;主流方案是两路并行加实体加权,融合打分后取最优;
  2. 单次还是多轮迭代——简单问题一次检索就够,但"当初那个项目后来怎样了"这类需要跨多条记忆推理的问题,一次往往答不全;多轮迭代准确率更高,代价是延迟和成本随轮次上升;
  3. 每轮都查还是按需触发——每轮对话都触发检索,召回稳定但消耗高;只在系统判断"这个问题需要查历史"时才触发,节省成本但可能漏掉隐性关联。

检索不只是"找到",而是"找对"——上下文窗口有限,塞进去的每一条记忆都要值这个位置。

2.1.4 记忆维护:怎么更新决定长期可靠性

记忆库不是写完就不动的数据库。用户状态会变,同一件事会在不同对话里被反复提到,新旧信息之间会产生矛盾。不做维护,库只会越来越乱——同一个用户"想换工作"和"已经入职"同时存在,系统根本不知道该信哪条。

维护涉及的核心问题有三个:

  1. 只增不减还是允许删改——永远追加是最保守也最安全的策略,旧记忆不会被误删,但会持续堆积干扰检索;允许更新和删除能保持库整洁,但大语言模型判断失误的代价是信息永久丢失;
  2. 矛盾信息怎么处理——新旧冲突时,是让两条并存靠时间戳区分优先级,还是主动判断哪条更新、让旧的降权或作废;
  3. 要不要设衰减——长期不被命中的记忆永久保留会让库无限膨胀,引入遗忘曲线自动淘汰可以控制规模,但阈值调不好会把有用的东西也清掉。

维护是各方案设计差异最大的一环,也往往是系统上线后最先出问题的地方。


2.2 核心评测方法

记忆系统的设计选择多、取舍复杂,光看架构描述很难判断好坏。评测的意义在于把记得准不准、成本高不高、够不够快这几个核心问题量化出来,让不同方案之间可以横向比较,也让选型有数字依据而不只是定性判断。评测的基本思路是固定底座、换记忆方案,在标准数据集上对比结果。

2.2.1 主流评测数据集

评测记忆系统,核心是用标准数据集检验它"记得准不准、记得住多久"。目前行业里常用的有两个:一个考单次超长对话内的记忆能力,一个考跨多次会话的事实积累。

长对话建模数据集(LoCoMo) 模拟持续数月的真实人际对话,内容涵盖工作进展、个人爱好、家庭变化等多条话题线,对话轮数通常在 300 轮以上。给定这段超长对话历史,要求回答关于其中内容的问题——从"用户职业是什么"这样的单步事实,到"当年那个项目后来结果如何"这样的跨时间多跳推理,难度逐级递增。

举个例子:对话里两个月前提到"准备换工作,投了几家公司",一个月前说"终于拿到 Offer 了",现在问"他现在在哪家公司"——需要跨多轮、跨时间线把信息串起来才能回答。

长记忆评测数据集(LongMemEval) 的思路完全不同——不是单个超长对话,而是多次独立会话中散落的事实积累。这更接近真实助手的长期使用场景。

举个例子:用户在第一次对话里提到自己对花生过敏,隔了几天的第四次对话问"推荐个下午茶甜点",AI 应该记得主动避开含花生的选项——没有记忆系统的话,两次会话之间什么都不留,推荐出问题也发现不了。它还有一个单会话变体,专门考察在同一次超长对话内的信息整合能力。

2.2.2 可以评测哪些指标

核心三个指标可量化、可横向对比,选型时最先看:

指标
考察什么
参考数字
准确率
回答问题的正确率
优秀方案在 LoCoMo 上可达 78% ~ 92%
Token 消耗
每次回答调用的 Token 数
全量上下文约 2.5 万/次;优化方案可压缩至 900 ~ 6700
检索延迟
从提问到拿到记忆的耗时(看 P95)
全量方案约 17 秒;优秀方案可做到 1.44 秒

三个指标要一起看——高准确率如果靠堆 Token 换来,不算好方案;低延迟如果是靠牺牲准确率,同样不可取。

其次还有两类难以量化但值得关注的维度:

  • 使用成本:写入时是否调用 LLM 做提取(每条记忆都要花钱)、检索走向量库还是全量扫描、存储用什么数据库——这些策略决定了系统真实的运营成本,不只是回答时的 Token 数
  • 架构复杂度:是否依赖图数据库、向量库等特殊组件,接入和维护的工程量有多大

2.2.3 怎么跑评测

固定一个底座,换不同记忆方案对比,有两种常见思路:

底座
基线
对照组
典型例子
大语言模型
裸模型,不接任何记忆
开源记忆系统 / ChatGPT 自带记忆
裸模型 LongMemEval 得分约 30+,接上记忆系统后跳到 90+
智能体框架
框架原生记忆(如 OpenClaw 自带)
替换为第三方记忆系统
OpenClaw 原生完成率 35%,换专用记忆系统后升至 52%,Token 消耗反而降低

2.3 开源方案对比

本节对比五个开源方案:Mem0、MemMachine、MemoryOS、OpenViking、PowerMem

Mem0MemMachineMemoryOSOpenVikingPowerMem
存储结构
向量库 + 结构化条目
原文 + 派生索引(图/向量)
向量库
文件系统 + 向量
数据库 + 向量
写入方式
LLM 提炼为事实条目
直接存原文,不做提炼
LLM 提炼 + 热度分层
ReAct 循环:先读后写
LLM 提炼 + 三层去重
检索方式
语义向量 + BM25 + 实体加权
派生索引 + Agent 多轮迭代(≤3 轮)
向量检索(按层筛选)
三层索引(全局→目录→内容)
向量 + 关键词混合
其他策略
热度降权
热度衰减驱动层间升降
热度 × 时效评分
Ebbinghaus 遗忘曲线
记忆分类
事实记忆、程序记忆
短期记忆、情节记忆、语义记忆、程序记忆(预留)
10 种(用户/智能体两空间)
工作记忆、短期记忆、长期记忆
记忆分层
短期→中期→长期(三层)
L0→L1→L2(三层索引)
工作→短期→长期(三级)
评测-准确度
LoCoMo 91.6%;LongMemEval 94.8
LoCoMo 91.6%;LongMemEval 93%
LoCoMo F1 +49.11% vs 基线
LoCoMo 52.08% 任务完成率
LoCoMo 78.70%
评测-时延
P95 1.44s
P95 1.44s
评测-Token 占用
~6,700/次
~Mem0 V1 的 1/5
比 LanceDB 低 92%(LoCoMo10)
~900/次
社区热度(2026.05)
54k+
4.7k+
1.3k+
23k+
500+
  • Mem0:写入侧用 LLM 一次提炼为结构化事实条目,只追加不删改;检索侧三路并行(语义向量 + BM25 + 实体加权)融合打分。设计上追求最小接入成本,没有分层、没有遗忘机制,记忆库随时间单向增长。

  • MemMachine:核心取舍是完全不做 LLM 提炼,原文直接存储,避免写入引入失真,且历史数据可随时用更好的模型重新索引。代价是检索侧需要维护派生索引,并用检索 Agent 做多轮迭代定位答案,复杂度高于其他方案。

  • MemoryOS:把记忆按热度分成三层(短期→中期话题聚类→长期抽象画像),层间流动由检索次数、内容量、时间衰减综合打分驱动。相比 Mem0 的扁平结构,话题边界更清晰,但热度阈值是系统行为的关键变量,需要针对场景调参。

  • OpenViking:把记忆、资源、技能统一用文件系统范式管理,结构对开发者可见可编辑。写入侧是五方案中唯一强制"先读再写"的——ReAct 循环先读取现有记忆再生成精确增删改操作,避免重复写入;检索侧用三层语义索引(全局→目录→内容)逐级收窄范围,Token 消耗因此大幅低于传统平铺向量检索。

  • PowerMem:把记忆从上下文剥离出来独立管理,引入 Ebbinghaus 遗忘曲线给每条记忆计算保留率,长期未命中的自动衰减淘汰。写入时做三层去重(哈希→语义→LLM 聚类)控制库膨胀,检索时只取高权重条目,是五方案中唯一做完整记忆生命周期管理的。


2.4 云厂商方案对比

核心结论: 截止5.8调研的结果,可提供服务的厂商有三家:阿里、OceanBase 和百度,字节和腾讯暂未上线,综合比较:百度 > OceanBase > 阿里

  • 成本上:阿里 >> 百度 ≈ OceanBase,阿里需要部署一套PorlarDB集群,其余都是开箱即用;
  • 稳定性:百度 > 阿里 > OceanBase,百度有专人团队运维,阿里也是一套成熟的向量数据库集群,但需要专人运维,OceanBase由大数据和开源社区共同运维;
  • 效果上: 由于测试数据、测试方法各家都不太一致,无法根据公开结果给结论;
  • 技术上:百度 > OceanBase > 阿里,百度采用四层记忆和多维度存储,相比OceanBase和阿里策略更丰富,OceanBase参考阿里采用的Mem0 1.0开发,相比阿里更强。
维度
字节 OpenViking
腾讯 Agent 记忆系统
阿里 PorlarDB 记忆系统
OceanBase PowerMem
百度 Agent 记忆系统
技术架构存储
:三层存储系统(L0目录摘要、L1文件摘要列表、L2记忆文件)写入:ReAct Agent执行,先读记忆,再添加或更新查询:两路召回(全文+向量),分层递归检索
存储
:动态智能短期记忆+四层长期记忆(L0原始对话、L1结构事实、L2项目的记忆摘要、L3用户画像)写入:LLM 记忆压缩+事实提取查询:两路召回(全文+向量), agent 动态分层召回
存储
:向量+图(可选)写入:LLM 事实提取+图提取查询:三路召回(全文+向量+图)
存储
:向量+图(可选)写入:LLM 事实提取+图提取查询:三路召回(全文+向量+图),遗忘曲线
存储
:四层长期记忆(事实、经历、观察和画像)+ 向量 + 图 + 时序写入:LLM 事实提取+图提取+时序提取、记忆演化查询:四路检索(全文+向量+图+时序)
是否开源
开源
即将开源
闭源
开源
闭源
接入成本
预计6月底上线云版本
预计6月底上线云版本
使用成本
-
-
前期无成本;千万数据量:1500/月
限时免费
合规与安全
-
-
未分享
自部署,数据不出网
传输加密、存储加密
稳定性
-
-
效果-准确度
基于LOCOMO评测OpenClaw1. 原生记忆:35.65%2. OpenClaw + OpenViking:52.08%
基于PersonaMem评测OpenClaw1. 原生:47.9%2. mem0:71.0%3. 腾讯:76.1%
同开源 Mem0 1.0
LOCOMO评测OpenClaw1. 对比原生:+49%
LongMemEval评测OpenClaw1. 原生:62%2. 百度:78%LongMemEval评测大模型1. Mem0(2.0):57%2. 百度:87%基于LOCOMO评测OpenClaw1. 原生记忆:78%2. Mem0(1.0):36%3. 百度:78%
效果-TOKEN
基于LOCOMO评测1. 原生记忆:24,611,5302. OpenClaw + OpenViking:4,264,396(-82.7%)
-
同开源 Mem0 1.0
LOCOMO评测OpenClaw1. 对比原生:-97%
LongMemEval评测大模型1. Mem0(2.0):17w2. 百度:16w
效果-时延
-
-
同开源 Mem0 1.0
LOCOMO评测OpenClaw1. 对比原生:+92%
LongMemEval评测大模型1. Mem0(2.0):写入1000s,检索0.25s2. 百度:写入300s,检索3s

三、记忆系统的核心工作机制

一个可以真正工作的记忆系统,必须回答四个问题:记忆放在哪里、什么值得被记住、怎么从历史里找到需要的信息、信息过时了怎么处理。四个问题对应四套机制,从外到内构成四层架构。

3.1 整体架构

在拆解每个机制之前,先把整个系统的层次看清楚。记忆系统要同时面对多种接入方式、驱动多条处理流程、对接多种底层存储——把这些功能堆在一起会让系统极难维护和扩展。分层的意义正在于此:让每一部分只负责自己的事,互不干涉。

四层架构的核心逻辑是关注点分离:每层只向相邻层说话,不跨层调用。换一套底层存储,不用改引擎;换一套检索算法,不用改服务接口。每层都可以独立演进。

从上到下,四层各有明确的定位:

层次
职责定位
核心组件
服务层
统一接入,屏蔽底层差异
HTTP 接口 · 管理控制台 · SDK · MCP
引擎层
驱动记忆的四条独立核心流程
写入引擎 · 检索引擎 · 遗忘引擎 · 巩固引擎
能力层
组织与调度策略,连接引擎与存储
分层存储 · 记忆路由 · 召回协调 · 作用域隔离
存储层
数据持久化,各引擎按需读写
向量数据库 · 实体索引 · 关系型数据库 · 图数据库

服务层是外部请求的统一入口:HTTP 接口供开发者同步读写,管理控制台用于可视化管理,SDK 封装常用调用,MCP 让 AI Agent 直接读写记忆。

引擎层的四个流程各自独立运行:写入引擎提炼结构化记忆,检索引擎多路召回融合重排,遗忘引擎按热度衰减淘汰陈旧条目,巩固引擎去重合并防止无限膨胀。

能力层定义引擎依赖的四项策略:分层存放、三类路由写入、双路并行检索、跨用户作用域隔离。引擎只调用能力层接口,不直接操作存储。

存储层四类介质各司其职:向量数据库按语义余弦检索,实体索引精确命中专有名词,关系型数据库记录时间戳和热度分值,图数据库维护实体关联与知识图谱。

四层从上到下是"离用户越来越远、离数据越来越近"的关系。服务层只管接入,不关心记忆存哪里;存储层只管持久化,不关心业务逻辑。引擎层和能力层是中间的粘合剂,把两端连起来。


3.2 存储:记忆放在哪里

3.2.1 两层设计:工作台与档案室

记忆系统把记忆分成两层:一层是当前对话的上下文,另一层是跨会话长期保留的个人历史。

短期记忆长期记忆
存什么
本次对话的原始消息,按顺序排列
从对话提炼出的结构化知识
生命周期
仅当前会话,会话结束即清空
跨会话永久保留
检索方式
顺序读取,无需向量化
语义向量检索,按"意思"匹配
容量
有限(上下文窗口约束)
无上限,需遗忘和巩固机制管理
类比
对话的草稿纸,用完即扔
用户的个人档案,持续积累

短期记忆给系统一个"当下":用户说"帮我继续完善那个方案",短期记忆告诉系统"那个方案"是指什么;用户提到"他",短期记忆告诉系统指代的是谁。没有这层上下文,系统每次回复都像是第一次见面。

长期记忆保存的是提炼后值得长期保留的内容:用户的偏好、经历过的事、做过的决策、执行过的任务步骤。以语义向量形式组织,检索时按意思而非关键词匹配——用户说"我对辛辣食物过敏"和"我不吃辣"在语义上是同一件事,都能被命中。容量没有上限,这正是为什么需要专门的遗忘和巩固机制来管理它的质量。

举个例子:用户在一次对话里说了三件事——问了一道菜的做法、提到自己不能吃辣、又问了一个和辣椒无关的代码问题。三件事都进了短期记忆,系统回答时都能参照。但会话结束后,"不能吃辣"会被提炼进长期记忆,菜谱和代码问答则不一定——它们是一次性内容,没有跨会话保留的价值。

3.2.2 三类记忆内容:存什么决定怎么找

长期记忆里存放的内容按性质分为三类,分类决定了它们怎么被存、怎么被找到。

类型
核心特征
时间戳
可压缩
典型例子
事实记忆
稳定结论,与时间无关
"用户不吃辣"、"职业:前端工程师"
事件记忆
具体经历,依赖时间坐标
"上周拿到 Offer"、"三月在学 React"
程序记忆
Agent 执行步骤序列
文件整理 Agent 已完成的第 1~3 步

事实记忆不带时间戳——"用户不吃辣"、"职业是前端工程师"、"有两个孩子",这类结论和什么时候说的无关,今天成立、明年也成立。检索时不需要考虑时间,按语义相似度找即可:问"用户有什么饮食限制",就能命中"不吃辣"这条事实。

事件记忆的核心价值在于时间线索。"上个月提到正在学 React"、"上周告知已经拿到 Offer"——状态会变,学 React 可能已经学完,Offer 可能已经入职。如果去掉时间坐标,只保留"用户在学 React",等到三个月后用户再次对话时,这条记忆就变成了误导。保留了时间信息,AI 才能追踪状态演变,回答"他现在在做什么",而不是把过时信息当成当前事实。

程序记忆记录的是 Agent 执行任务的完整步骤历史。比如一个用来整理文件的 Agent 执行到一半被中断,这些已完成步骤的记录就是程序记忆——Agent 重启后能从中间继续,而不必从头来过。和前两类有一个根本区别:程序记忆不能被压缩或提炼,必须保留每一步的原始输出,因为任意一步的结果都可能是后续步骤的输入。

快速判断方法:这条记忆能不能脱离时间独立成立?"用户不吃辣"永远成立 → 事实记忆;"上周用户说在学 React"依赖时间点 → 事件记忆;Agent 的执行步骤记录 → 程序记忆的专属领地。


3.3 写入:什么值得被记住

对话结束后,最直接的做法是把原文全部推进数据库——简单、无损、零延迟。但这条路走不通。

3.3.1 直接存原文的问题

真实对话充满噪声,比如:

"嗯对,我之前说的那个,就是我不太喜欢辣,昨天去吃串串结果辣到不行,对了你帮我记一下我老家在成都。"

这段话里有情绪表达、一次性事件和真正值得长期保留的事实混在一起。如果原文直接存进去,下次检索"用户饮食偏好"时,整段话都会被拖出来——噪声极大。随着对话积累,同样的信息被反复提到,检索质量只会越来越差。

主流的解法是在写入前加一道提炼,把写入流程分成三个阶段:短期实时缓存、异步事实提炼、按类型路由写入长期存储。

图中三个阶段从上到下串联:第一阶段同步执行,把对话追加到短期缓冲队列;第二阶段在后台异步运行,调用 LLM 提取关键事实并去重,不阻塞主对话;第三阶段按事实 / 事件 / 程序三种类型分别路由,写入长期记忆库。

3.3.2 事实提炼:用大语言模型做一道蒸馏

主流的做法是在写入前加一道提炼步骤:用大语言模型从原始对话中提取真正有价值的信息,把上面那段话转化成:

  • 用户不喜欢辣食
  • 用户老家在成都

两条干净的事实,噪声消失,检索时也更精准。这个过程叫事实提炼,是写入环节最核心的一步。

3.3.2.1 提取什么:七类值得记录的信息

提示词把要记录的内容划分为七个类别:

类别
说明
例子
个人偏好
喜好、厌恶、各类偏好
"不吃辣"、"喜欢极简风格"
重要个人信息
姓名、关系、重要日期
"老家成都"、"女儿叫小美"
计划与意图
即将发生的事、目标、打算
"下个月要去日本"、"想学 Rust"
活动与服务偏好
餐饮、出行、爱好习惯
"跑步用 Nike 跑鞋"、"只订靠窗座位"
健康与饮食
饮食限制、运动习惯、健康相关
"乳糖不耐受"、"每天早上跑5公里"
职业信息
职位、工作习惯、职业目标
"前端工程师"、"在准备跳槽"
其他
喜欢的书影音、品牌、杂项细节
"最爱《三体》"、"习惯用机械键盘"

提取范围不只是用户的话——助手消息同样扫描:用户消息揭示个人事实和偏好,助手消息包含用户之后可能引用的建议和计划(比如"助手推荐了哪家餐厅")。

3.3.2.2 记忆质量标准

质量维度
错误示范
正确做法
语境丰富
"用户有只狗"
"用户有只叫 Poppy 的狗,每天早晨遛狗是一天中最开心的时刻"
自包含
"她说下周要去"
"用户(小华)计划下周去成都拜访父母"
精确不泛化
"读了一本厚书"
"用户正在读《百年孤独》,已读到 416 页"
意义保真
"睡到凌晨2点"
"凌晨2点才上床睡觉"
字数适度
塞进一句话
15-80词;细节密集时宁可拆成多条

具体细节是记忆有用的原因所在——把"航空运动"泛化成"运动",这条记忆就废了。

3.3.2.3 时间词必须在写入时锚定

对话中的相对时间表达必须在写入时转换成绝对日期:

原始表达
6个月后的含义
正确处理方式
"用户上周去了巴黎"
完全无法判断是何时
"用户于 2024-05-07 前后去了巴黎"
"昨天刚拿到 Offer"
到底是哪天?
"用户于 2024-05-13 收到录用通知"
"最近在学 React"
现在还在学吗?
"用户于 2024 年 5 月开始学习 React"

锚定时用对话发生的日期,不用系统当前日期——两者可能相差数月甚至数年。

3.3.2.4 提炼时的三条原则

原则
常见失误
正确做法
宁多勿少
主话题把旁支信息盖住,饮食偏好、兴趣被忽略
每个独立话题单独提取,10 条以上对话通常应产出 5-15 条记忆
保留时序
把"上周"、"昨天"保留原样或直接丢弃
锚定到绝对日期,时间坐标是事件记忆的核心
捕捉意图
只记已发生的事
计划和意向同样值得记录,即使还没发生
值得记录
不值得记录
持久偏好和背景(饮食、技能、工作、目标)
纯粹的情绪表达("今天真烦躁")
重要决定和计划
一次性偶发事件("今天天气不好")
重要事件的结果与进展
引导对话的礼貌用语("好的"、"明白了")
偶发细节里的持久信息("问伴手礼" → 记下"老家在成都")
助手的泛泛确认("好的,我明白了")

3.4 检索:怎么从历史里找到对的记忆

记忆写入之后,"找"才是决定系统质量的关键一步。检索面临两个互相矛盾的挑战:用户提问时的措辞,和记忆当初存入时的表达,往往对不上;但专有名词(品牌名、技术术语)又要精确命中,不能被"按意思找"的逻辑稀释掉。任何单一检索策略都无法同时应对这两个场景,混合检索因此成为主流设计。

图中两个阶段:第一阶段语义向量检索和关键词匹配并行展开,各自产出候选集;第二阶段将两路结果加权合并,返回最相关的若干条记忆。

3.4.1 关键词搜索的盲区:字面不匹配就全漏

传统数据库按关键词精确匹配——匹配的是字符序列,不是语义。用户搜"饮食限制",找不到"不吃辣";搜"辣",才能找到"不吃辣";搜"饮食",什么都找不到。这不是检索能力的问题,而是关键词匹配的设计本质决定的。

记忆系统的场景让这个问题更突出:记忆条目用自然语言写成,措辞随机;用户提问也是自然语言,换个说法全漏。系统召回率严重依赖用词是否碰巧一致,而这在真实对话中几乎无法保证。

关键词搜索的短板不在精度,而在召回——字面不重叠的内容,它根本看不到。

3.4.2 语义向量检索的盲区:命名实体被稀释

语义向量检索解决了字面不匹配的问题。每条记忆存入时被转化为高维向量,这个向量捕捉的是文字的意思。"不吃辣"和"对辛辣食物过敏"字面完全不同,但在向量空间里距离很近——检索时按向量距离找最近邻,就是"按意思找"。

但语义向量的弱点恰好相反:命名实体。品牌名、产品名、技术术语在训练数据中出现频率远低于普通词汇,向量表示往往被"稀释"进周围相关词语构成的模糊区域。

比如用户问"GoLand 的那个配置怎么设"——向量检索可能把"IDE 配置"、"编辑器设置"相关的记忆一并召回,但"GoLand"这个精确词未必能命中包含它的那条记忆,因为它和"PyCharm"、"IntelliJ"这些同类工具名在向量空间里距离同样很近,无法精确区分。

两种策略的失败模式刚好互补:关键词漏掉同义词,向量稀释专有名词。

3.4.3 混合检索:两路并行,各取所长

解法是两路并行:语义向量检索负责理解意思,关键词匹配负责精确命中专有名词。两路独立召回候选集后,按加权公式融合打分:

两个权重可以根据场景调整——日常对话倾向向量权重更高,精确名称查询时关键词权重更高。最终取综合得分最高的若干条返回。

检索方式
擅长
不擅长
语义向量检索
同义词、近义词("不吃辣" ≈ "对辛辣食物过敏")
精确命名实体(品牌名、技术术语)
关键词匹配
精确词命中,专有名词不丢失
换个说法就漏掉("饮食限制"找不到"不吃辣")
混合检索
两类场景都覆盖
权重需要调优,实现复杂度略高

3.5 更新:记忆怎么保持可靠

记忆库不是写完就不动的数据库。用户的状态会变,同一件事会被反复提到,新旧信息之间会产生矛盾。随着对话积累,库里会出现三类问题:

问题类型
例子
影响
过期
记着"Python 初学者",三个月后已是高手;记着"在找工作",实际早已入职;记着"住在上海",实际已经搬去北京
旧标签没清,建议和现实脱节
重复
用户在三次对话里都提到"不吃辣",库里存了三条意思相同的条目;每次问到饮食偏好都追加一条,越堆越多
检索时召回大量相似条目,有效信息被噪声淹没
冲突
库里同时有"喜欢跑步"和"最近不运动了";既有"对花生过敏",又有"上次吃花生没事";"预算充足"和"最近手头紧"并存
系统不知道该信哪条,回答前后矛盾,甚至给出危险建议

面对这三类问题,有两种取向截然不同的策略。

图示对比两种取向对同类问题的不同处置:激进策略追求记忆的整洁,但依赖模型判断是否删除;保守策略接受一定冗余,换取信息不丢失的安全性。

3.5.1 激进策略:自动清理,风险在误删

激进策略让系统自动判断哪些该删、哪些该合并,目标是保持库的干净和精简。

问题类型
处理方式
潜在风险
过期信息
检测到状态变化后,自动删除旧条目
用户只是暂时改变,旧状态仍有参考价值
重复信息
相似度超过阈值,自动合并或删除副本
相似不等于相同,合并可能丢失细节差异
冲突信息
保留最新条目,删除被覆盖的旧条
"旧的"不代表"无效的",历史轨迹被抹掉

核心弱点在于:大语言模型在做删除决策时,倾向于把"最近没被提到"误判为"不再需要"。而用户的信息往往有长尾价值——六个月前提到的过敏史,不会因为近期没再说就失效。一旦删错,无法追回。

3.5.2 保守策略:只增不减,冗余优于缺失

主流系统的选择是保守策略,核心原则是绝不主动删除

问题类型
处理方式
实际效果
过期信息
新条目追加,旧条目保留,检索时以时间戳决定优先级
历史轨迹完整,状态演变可追溯
重复信息
内容合并进已有条目,原条目不删
信息密度提升,不因合并失去原始记录
冲突信息
新旧并存,检索时优先返回最近的条目
不强行裁决谁对谁错,由时间自然排序
主动清除
仅支持用户手动触发,系统不自动决策
清除权始终在用户手里,误删风险归零

以冲突信息为例:用户三月说"想换工作",六月又说"已经入职新公司了"。系统不删掉三月那条,两条都留——检索职业状态时优先返回六月那条,三月那条作为背景记录保留,方便追踪完整的经历轨迹。

误删代价远高于冗余代价。存多了可以慢慢清,删错了无法追回——这是几乎所有生产系统都倾向保守策略的根本原因。


四、前沿探索

第三章描述的是记忆系统的共性基础架构——写入提炼、混合检索、保守更新。在这个共同基础之上,各方案都在不同维度做了深入探索:有的针对检索精度,有的引入认知科学模型,有的专注写入质量控制,有的解决记忆安全问题。这一章梳理各方案的独特设计,以及领域内更广泛的研究方向。

4.1 各方案的特色设计

4.1.1 MemMachine:写存分离与多跳检索

MemMachine 解决了一个核心矛盾:存原文意味着检索时要处理大量冗余噪声。它的做法是写存分离——存的时候不动原文,检索侧单独建立派生索引:把每条消息拆分成细粒度片段分别生成向量,检索时用细粒度向量精准定位,再回溯到完整的上下文片段。

除此之外,MemMachine 是目前唯一内置检索智能体的方案。遇到多跳问题("用户当时提到的那个项目现在怎么样了"),不是一次检索就给答案,而是最多迭代 3 轮——每轮检索结果启发下一次检索方向,准确率从单次检索的 84.87% 提升到 91.69%。

4.1.2 MemoryOS:热度驱动的分层升降

MemoryOS 把操作系统的内存分层策略搬进了记忆系统:短期(10 条问答)→ 中期(按话题聚类,最多 2000 个话题)→ 长期(抽象画像,最多 100 条)。话题能否从中期升入长期,由一个综合热度分决定:

三个系数默认均为 1.0,时间衰减半衰期 24 小时,热度超过 5.0 触发提炼并重置热度。只有被反复访问、内容积累量大且最近仍有活跃的话题,才会沉淀进长期记忆——避免了单纯靠时间或频率判断带来的误升降。

4.1.3 OpenViking:分层索引与写入前读取

OpenViking 的核心是两个相互配合的创新。

检索侧

三层语义索引——第零层是全局摘要(约 100 个Token),第一层是目录级索引(约 2000 个Token),第二层才是具体记忆内容。检索时先扫第零层快速排除无关区域,再进第一层锁定目录,最后深入第二层。相当于查书先翻目录再找页面,Token消耗比全量扫描低 92%。

写入侧

写入前读取循环——大语言模型在写入新记忆前,必须先读一遍当前已有的相关记忆,再生成精确的增删改操作,而不是直接追加。配合三种字段保护策略(精确修改、数值累加、首次写入后锁定),防止历史数据被覆盖。

4.1.4 PowerMem:遗忘曲线与记忆生命周期

PowerMem 引入了艾宾浩斯遗忘曲线(Ebbinghaus forgetting curve),每条记忆写入时同时计算一个保留率:

重要性评分从 6 个维度综合打分(关联度、新颖性、情感强度、可行动性、事实性、个人相关性)。不同类型的记忆衰减速率不同:工作记忆衰减最快(0.20)、短期记忆居中(0.15)、长期记忆最慢(0.10)。

每次检索命中触发强化——访问次数累计超过阈值,记忆类型晋升一级,衰减速率随之降低;长期不被命中则保留率自然降到阈值以下,自动清除。记忆库还配备三层递进压缩(哈希去重 → 语义去重 → 大语言模型聚类压缩),防止无限膨胀。

4.1.5 Mem0:实体越热、加权越弱

Mem0 的实体加权有一个反常识之处:一个实体关联的记忆越多,加权效果越弱

当  时加权系数为 0.5,当  时仅剩 0.046。原因是:像"Python"这样极常见的词如果同等加权,任何问题都会把大量记忆拉高,反而找不准。越具体的实体(如某个内部项目代号),关联记忆条数少,加权效果越强——精确命中比广撒网更重要。

4.2 更广泛的研究前沿

除了各方案的独特设计,记忆系统领域还有几个尚在验证阶段的探索方向,代表着下一阶段可能的演进路径。

探索方向
核心思路
代表性工作
强化学习优化记忆策略
从任务结果中自我学习:记了什么、后来有没有被用上
Mem-T:比纯提示词方案准确率高 14.92%,Token消耗低 24.45%
本地化与隐私保护
记忆系统完全运行在用户设备或私有服务器,解决合规风险
MemPalace:长对话评测召回率超过 99%
多模态记忆
存储和检索图片、语音、视频等非文本信息
STaR 框架:机器人的跨时间、跨空间多模态记忆
记忆安全与防攻击
防止恶意内容污染记忆库(记忆投毒攻击)
CognitiveGuard:双重进程防御机制

强化学习和多模态是离实用最近的两个方向:前者让系统从使用反馈中自我优化,后者拓展了记忆的信息边界;记忆安全则是生产部署前必须正视的风险。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-11 20:17:51 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/741254.html
  2. 运行时间 : 0.131855s [ 吞吐率:7.58req/s ] 内存消耗:4,850.34kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=216f4a6540b188f694d3a6b41e70272d
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000498s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000855s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000354s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000278s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000482s ]
  6. SELECT * FROM `set` [ RunTime:0.000191s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000574s ]
  8. SELECT * FROM `article` WHERE `id` = 741254 LIMIT 1 [ RunTime:0.000674s ]
  9. UPDATE `article` SET `lasttime` = 1781180271 WHERE `id` = 741254 [ RunTime:0.001677s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000241s ]
  11. SELECT * FROM `article` WHERE `id` < 741254 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000455s ]
  12. SELECT * FROM `article` WHERE `id` > 741254 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000381s ]
  13. SELECT * FROM `article` WHERE `id` < 741254 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001319s ]
  14. SELECT * FROM `article` WHERE `id` < 741254 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001521s ]
  15. SELECT * FROM `article` WHERE `id` < 741254 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002115s ]
0.135851s