小林是一位刚入职的行政助理。入职第一天,他的办公桌干净得像一面镜子;到了下午,桌上就堆满了客户资料、会议纪要和各种便利贴。最尴尬的是,接待一位重要客户时,他完全忘了客户半小时前刚说过“只喝温水不喝咖啡”,只好灰溜溜地去换了一杯。问题出在哪?不是小林记性差,而是他的“桌面”太小了。 AI Agent 也面临着同样的难题。所谓“上下文窗口”,就是大模型的办公桌面——大小固定,塞得越多越拥挤。用户多聊几轮,早前的信息就被挤出桌面,Agent 就“失忆”了。 MemGPT(现名 Letta)的解法,是给 AI Agent 请来一位经验丰富的办公室主任:把正在用的文件放在桌面(核心区),把旧资料归档进文件柜(归档区),把每天的工作写进日志(召回区),甚至让 Agent 自己决定什么时候该收拾、什么时候该翻档案。这套“操作系统式”的分层记忆架构,让长对话不再丢上下文。这篇文章将从一张办公桌说起,带你完整理解 MemGPT 的设计思想、Letta 的落地方式,以及如何选型。
对 AI 从业者而言,掌握 MemGPT 的分层记忆设计,能直接指导你解决 Agent 长对话丢上下文、跨会话记忆持久化等真实痛点,是构建稳定 Agent 应用的必备技能。
可视化演示
动态演示MemGPT分层记忆架构与L的核心机制,通过概览/流程/对比/趋势四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
MemGPT分层记忆架构与L:MemG MemGPT的核心设计动机 核心区存放当前工作记忆 核心机制可视化 MemGPT分层记忆架构与L整体架构与关键组件
记忆痛点
小林第一天上班,办公桌干净得像一面镜子。可到了下午,桌上堆满了打印资料、便利贴、客户名片。想找早上记的会议要点,得翻半天。更糟糕的是,接待客户时,他完全忘了客户上午刚说过“只喝茶不喝咖啡”——因为那条信息被埋在了文件堆底下。
AI Agent 也面临同样的窘境。大语言模型(LLM)的上下文窗口就是它的“办公桌面”——空间固定,塞得越满越容易丢东西。用户和 Agent 多聊几轮,旧信息就会被挤出窗口,或者因为太长而不得不做粗暴的“摘要压缩”,细节在压缩中流失。再加上窗口越长,显存占用和推理延迟越高,成本也随之水涨船高。
具体来说,LLM 的上下文窗口大小有限,从几千到几十万 token 不等。小型 Agent 应用如果每轮都把所有历史对话塞进去,成本会迅速膨胀;滑动窗口只保留最近几轮,又会把早前关键信息忘掉。这就是所谓的“上下文窗口限制”——它不是一个可绕过的工程小坑,而是 Agent 应用的底层瓶颈。
小林后来明白,问题不在于他记性差,而在于“桌面”只有那么大。AI 也一样——它缺的不是一张更大的桌子,而是一套把文件搬进搬出的方法。这正是 MemGPT 存在的理由。
- 分子 usedTokens当前对话、工具返回、系统提示里所有 token 的总和,即“桌面上已经堆了多少文件”。
- 分母 windowSize模型支持的最大上下文长度,即“办公桌的物理面积”。
- 比值 ctxUsage上下文占用率,衡量“桌面还有多少空位”。
虚拟内存思想
小林去请教经验丰富的办公室主任陈姐。陈姐的办公桌同样不大,但她永远能在三秒内找到资料。秘密是:陈姐把旧资料全部归档到文件柜,桌面上只放手头正用的三份文件。要用旧资料时,打开文件柜取出一个文件夹,用完再放回去。
操作系统解决内存不足的思路,与“陈姐的文件柜”如出一辙。虚拟内存让程序仿佛拥有无限内存,实际只在物理内存(RAM)中保留常用数据,把不常用数据“换出”到磁盘,用时再“换入”。这是计算机系统中最成熟的分层存储思想之一。
MemGPT 团队将此思想迁移到 AI Agent:把 LLM 的上下文窗口视为“物理内存”,把外部存储视为“磁盘”。当上下文快满时,Agent 将低优先级信息“页面置换”到归档区;当需要旧信息时,再按关键词或语义搜索“召回”。于是,Agent 的有效记忆范围远超模型的窗口大小。
小林学会了陈姐的“虚拟记忆法”——桌面放不下,就把旧资料送进文件柜。从此他的小桌子也能承接一年的工作。对 Agent 来说,这套“换入换出”的调度策略,就是打破上下文墙的钥匙。
- coreSize常驻在上下文窗口内的记忆量,相当于“桌面能放的文件数”。
- hitRate_archive归档信息的检索命中率,即平均每十次查询能命中几次。
- 乘积项归档区为有效记忆兜底,能否“查到”决定整个公式的成败。
三层记忆架构
陈姐的“虚拟记忆法”其实有三个抽屉:桌面、文件柜、工作日志。桌面放正在处理的事务;文件柜存长期资料;工作日志则记录了每一天见过谁、办过什么事。三个抽屉各司其职,缺一不可。
MemGPT 将 Agent 的记忆划分为三层:核心区(Main Context)、归档区(Archival Storage)、召回区(Recall Storage)。核心区就在 LLM 的上下文窗口内,始终被模型“看见”;归档区是外部持久化存储,存放长期事实和知识;召回区是对话历史的自动日志,方便随时回溯。
三层的生命周期各不相同。核心区内容每轮都在变化,由 Agent 自己决定保留什么;归档区数据由 Agent 通过工具写入,可跨会话持久化;召回区则自动记录每一次交互,不占用主窗口。三层协同,让 Agent 既有“工作记忆”又有“长期记忆”。
三个抽屉定位清晰:桌面放正在用的,文件柜存不常用的,日志记发生过的。小林照着做了之后,再也没出现“忘了客户不喝咖啡”的尴尬。三层记忆架构,就是 AI Agent 的“三个抽屉”。
- core 分量当前上下文窗口内的明文信息,模型每轮推理都能直接读到,相当于“桌面上的文件”。
- archive 分量外部持久化存储,模型不能直接读,需通过检索工具访问,相当于“文件柜里的档案”。
- recall 分量历史消息的完整流水,可搜索、可回放,帮助 Agent 回忆“当时怎么说的”。
自我编辑机制
陈姐最厉害的不是整理,而是“判断”。她不会等桌面堆成山才开始收拾,而是每处理完一个项目就顺手归档;每次感受到“桌子快满了”,就立刻行动。这套自动化的“整理节奏”,就是她的自我编辑能力。
MemGPT 的 Agent 也具备这种“自我编辑”能力:它通过函数调用来读写记忆。当上下文快满时,系统会给 Agent 发送一个中断信号,Agent 可以主动调用记忆工具,把旧信息移入归档区,或者从归档区检索需要的内容。整个决策过程由模型自主完成,无需人工干预。
核心工具包括:core_memory_append 追加核心记忆、core_memory_replace 替换核心记忆、archival_memory_insert 写入归档、archival_memory_search 检索归档、conversation_search 搜索历史对话。“何时用哪个工具”由 Agent 根据系统指令自行判断——这是真正的“让模型管理自己的记忆”。
小林学到的“整理节奏”,正是 MemGPT 的自我编辑机制。不等桌面爆满就行动,才能让长期使用不失控。Agent 的记忆管理,从“被动溢出”变成了“主动调度”。
- 条件判断Agent 每次处理完消息后检查上下文占用率,判断“桌面是否快满了”。
- 阈值 θ系统设定的换出阈值,如 70%,对应“桌面用到七成就该收拾了”。
- 输出 g_arch决策结果——true 则调用档案写入工具执行归档。
系统指令设计
陈姐给小林打印了一份《办公桌管理 SOP》:什么时候归档、什么时候查档案、什么内容绝不能丢——写成一页纸贴在显示器边上。小林照着做,效率立刻提升。那份 SOP,就是系统指令。
MemGPT 的系统提示词里也嵌入了“记忆管理 SOP”,明确告诉模型:你可以访问记忆工具,你的上下文窗口是有限的;当 context 快满时,应把死信息移入归档区,把关键信息写进核心记忆。这个“指令层”与模型权重无关,却显著改变了记忆行为。
系统指令还包括“自我反省提示”:每轮交互后,Agent 要检查自己的记忆是否过期、是否需要更新。“分页控制”让 Agent 把超大内容拆成小块存储,避免一次塞爆窗口。“优先级保护”确保用户名、安全限制等核心记忆不会被冲掉。
没有 SOP 的整理是碰运气,有了 SOP 才有章法。系统指令就是贴在小林显示器上的那张纸,让 Agent 的每个记忆决策都“有法可依”,而不是靠模型临场发挥。
- recency_i第 i 条记忆的时效性,最近用过的记忆更容易再次被使用。
- importance_i重要程度,如用户身份、任务目标等,通常由开发者或模型标注。
- 加权求和α、β 是预设权重,决定“新”和“重要”哪个更占优势。
Letta落地实践
理论学完,小林正式上岗。公司给他配了办公软件和权限,他把 SOP 录入系统,开始接待客户。让“记忆管理”真正跑起来,就是落地实践。纸上谈兵再完美,也要有趁手的工具把它变成现实。
Letta 是 MemGPT 的工程化框架(MemGPT 已更名 Letta)。它提供 Python API 和可视化控制台,让开发者可以创建 Agent、配置记忆块、接入本地或云端模型。你不需要从零实现“自我编辑逻辑”——Letta 内置了完整的分层记忆引擎,开箱即用。
在 Letta 中,Agent 有一个可编辑的“记忆块”,包含人格、用户信息、身份设定等核心记忆;对话与文档自动进入召回区与归档区。通过 le.Tool 和 le.MemoryBlock 等抽象,开发者可以自定义记忆操作。部署时,Letta 默认将记忆存在本地数据库中,记忆跨会话持久化。
小林的专业度不只靠聪明,更靠把那套 SOP 落到了日常系统里。Letta 就是 Agent 的那套“办公系统”——把记忆管理的理念封装成了可运行的产品。
- C_t 核心记忆块开发者预置与 Agent 运行时更新的核心信息,如用户画像、任务目标。
- A_t 归档存储Agent 通过工具写入的外部知识,持久化保存,不占主窗口。
- I_t 中断指令系统触发的自我反省事件,驱动记忆整理节奏。
应用场景解析
小林的客户越来越多。他发现,长期客户最满意的是“你还记得我上次说要什么”——这正是持久化记忆的价值。不同的客户、不同的需求,考验的是他调度档案的能力。
哪些场景最需要 MemGPT?共同特征是:长对话 + 强上下文依赖 + 跨会话记忆。典型的包括长对话客服助手、多用户个人助理、企业知识问答 Agent。这类场景的共同痛点是:单轮对话不算难,难在把几十轮、上百轮的上下文连贯起来。
客服场景里,Agent 要记住每个用户的历史偏好,MemGPT 可以把用户画像写进核心区,把历史工单放进归档区;多用户场景中,不同用户的记忆天然隔离,按会话切换;知识问答场景中,文档块自动进入归档区,检索召回实现“无限知识库 + 受控上下文”。
小林的客户留存率高,不是因为他记性好,而是因为他有“翻档案”的习惯。Agent 也一样,把记忆调度做好,长对话自然就稳了。选对场景,MemGPT 的价值才能放大。
- 分子有效上下文容量 = 命中率 × 窗口大小,是“实际可用的记忆空间”。
- 分母每轮对话平均消耗的 token 数,包括输入、输出和工具调用开销。
- 商在记忆不溢出的前提下,Agent 能连续稳定对话的轮数。
与Mem0对比
隔壁公司的秘书是另一种风格:不做分层归档,而是把所有客户信息都抄进一个“万能备忘录”,每次接待客户前通读一遍。很省事,但客户一多,通读也要很久。这是两种不同的记忆管理哲学。
Mem0 就是那个“万能备忘录”:它从对话中抽取用户偏好、事实等结构化记忆,存入向量库。每次推理前把相关记忆追加到上下文。而 MemGPT/Letta 则是“操作系统式”分层管理——核心区、归档区、召回区各司其职,由模型自己调度。
两者的定位差异很清晰:Mem0 关注“提取什么记忆”,MemGPT 关注“如何调度记忆”。Mem0 适合快速接入、需求简单的记忆增强;MemGPT/Letta 适合需要长期自主运行、记忆量和复杂度都很高的 Agent。两者也可以组合:用 Mem0 做知识抽取,用 Letta 做上下文管理。
通读备忘录的秘书适合小公司,分层归档的秘书适合大客户长战线。选型先想清楚自己是谁——是快速验证原型,还是构建长期运行的 Agent 系统。
- 检索效率Mem0 基于向量检索,MemGPT 基于分层调度,两者在不同数据量下各有优劣。
- 整合便捷度接入成本、维护成本、与现有系统的契合度。
- 取最大值综合得分最高的方案胜出,也可组合使用。
AI 应用场景
场景1:长对话电商客服助手
阶段:对话记忆管理
解决的问题:传统客服 Agent 每轮对话后遗忘用户偏好,用户需要反复说明自己的尺码、颜色偏好、收货习惯;使用 MemGPT 后,客服 Agent 把用户画像写入核心区,把历史订单放入归档区,需要时自主检索,彻底告别“自我介绍式客服”。
具体案例:某电商平台接入 Letta 后,用户第三次咨询时,Agent 直接说出“您上次换货的那双鞋已经退款到账了,这次还看同款吗?”——记忆跨会话持久化,客服满意度提升 30%。
场景2:多租户个人知识助理
阶段:多会话隔离与记忆检索
解决的问题:一个 Assistant 服务多个用户,但用户之间的信息必须严格隔离。传统方案需要为每个用户单独维护一套记忆,成本极高;MemGPT 天然支持按 Agent 实例隔离记忆,每个用户拥有独立的核心区和归档区。
具体案例:某 SaaS 平台接入 Letta,为 1000 名用户各创建独立 Agent 实例,每个实例拥有自己的记忆块与归档存储。用户 A 的偏好和文件不会被用户 B 查询到,同时每个 Agent 都能记住与各自用户的全部历史交互。
场景3:企业知识问答 Agent
阶段:长期记忆与知识检索
解决的问题:企业文档动辄上万页,传统 RAG 每次检索都全量扫描,延迟高且无法记住用户之前的提问偏好。MemGPT 将文档块写入归档区,通过语义检索精准召回,同时把用户关注领域写入核心区,让回答越来越“懂你”。
具体案例:一家咨询公司将十年积累的项目文档导入 Letta 归档区,Agent 不仅能在 2 秒内找到相关案例,还能记住某个客户“偏好看图表不要看表格”的展示习惯,每次输出自动调整格式。
Python 演示
"""简化版 MemGPT 分层记忆模拟器(教学演示) 三层记忆:核心区(桌面) / 归档区(文件柜) / 召回区(工作日志)""" class AgentMemory: """模拟 MemGPT 的核心区/归档区/召回区三层记忆""" def __init__(self, core_limit=4): self.core_list = [] # 核心区:当前上下文可见 self.archive_map = {} # 归档区:持久化存储 self.recall_list = [] # 召回区:消息流水日志 self.core_limit = core_limit self.event_id = 0 def write_to_core(self, name, content): """写入核心区,超出容量时自动归档最旧项""" entry = {"name": name, "content": content} if len(self.core_list) >= self.core_limit: self._archive_from_core() self.core_list.append(entry) self._log("write", name) def _archive_from_core(self): """把核心区最旧的一条记忆移入归档区""" old = self.core_list.pop(0) self.archive_map[old["name"]] = old["content"] self._log("archive", old["name"]) def recall_from_archive(self, name): """从归档区找回记忆并放回核心区""" if name not in self.archive_map: return None content = self.archive_map.pop(name) self.core_list.append({"name": name, "content": content}) self._log("recall", name) return content def search_recall_log(self, name): """在召回区日志中搜索历史事件""" return [e for e in self.recall_list if e["name"] == name] def _log(self, op, name): """记录一条召回区日志""" self.event_id += 1 self.recall_list.append({"id": self.event_id, "op": op, "name": name}) def snapshot(self): """打印当前三层记忆的状态""" print("核心区:", [e["name"] for e in self.core_list]) print("归档区:", list(self.archive_map.keys())) print("召回区:", self.recall_list) if __name__ == "__main__": mem = AgentMemory(core_limit=3) print("== 写入 5 条记忆 ==") for i in range(5): mem.write_to_core(f"知识{i}", f"这是第{i}条业务知识") mem.snapshot() print("\n== 召回 知识0 ==") result = mem.recall_from_archive("知识0") if result: print("召回内容:", result) mem.snapshot() print("\n== 搜索召回日志中的 知识3 ==") for event in mem.search_recall_log("知识3"): print(event) print("\n== 搜索召回日志中的 recall 事件 ==") for event in mem.search_recall_log("知识0"): print(event)
class AgentMemory:定义一个三层记忆模拟器,对应 MemGPT 的 Agent 记忆管理模块self.core_list = []核心区用列表模拟,始终对模型“可见”,相当于办公桌桌面self.archive_map = {}归档区用字典模拟,按键存取,相当于文件柜write_to_core(self, name, content)模拟 core_memory_append,先检查容量,满了就触发归档_archive_from_core(self)模拟页面置换,把核心区最旧的一条记忆移入归档区recall_from_archive(self, name)模拟 archival_memory_search + 召回,把归档区记忆放回核心区_log(self, op, name)每次操作都写入召回区,形成完整的历史流水mem.snapshot()打印三层记忆状态,直观展示核心区、归档区和召回区的实时构成
常见误区
误区听名字带"GPT",以为 MemGPT 是 OpenAI 发布的某个新模型,换一个更大的模型就能解决长对话问题,不需要额外的记忆框架。
正解MemGPT 不是模型,而是一套“记忆操作系统”。它管理的是 LLM 的上下文窗口,而不是模型自身的权重。它通过函数调用让模型自己决定“什么时候把什么信息搬到哪一层”,类似于给办公桌配了一个智能秘书。模型再大,桌面也是有限的;没有调度机制,大窗口照样会被灌满。
为何常见:名称中的"GPT"太有迷惑性,加上很多科普文章只谈效果不谈实现,导致大家把它当成一个新模型。
误区以为 MemGPT 把历史信息放在显存里,模型每轮都能“看到”全部记忆,所以不会有遗忘,也不会有性能开销。
正解归档区是在外部存储(数据库、向量库)中,模型并不能直接读取。每次访问都要经过工具调用 + 检索的过程,这意味着:有查不到的风险(hit rate 问题),也有额外的延迟开销。MemGPT 的价值恰恰在于“有选择地换入换出”,而不是“全部都在线”。
为何常见:人们容易把“记忆”想象成随时可访问的缓存,而忽略了 MemGPT 的分层本质——只有核心区才是模型每轮都能直接看到的。
误区市面上提到 AI 记忆就绕不开 Mem0 和 MemGPT,初学者常以为它们功能重叠,随便选一个用就行。
正解两者解决的问题层次不同。Mem0 专注“提取什么记忆”——从对话中抽取结构化信息存入向量库;MemGPT 专注“如何调度记忆”——设计了一套上下文窗口的分层管理机制。Mem0 像是把所有客户信息抄进备忘录的秘书,MemGPT 是分层归档的办公室主任。两者完全可以组合使用:Mem0 负责抽取,Letta 负责调度。
为何常见:大家看到“AI 记忆”这个共同关键词,就下意识认为它们是竞品,而忽略了它们分别卡在记忆链条的不同环节。
误区以为接入 MemGPT/Letta 后,Agent 就拥有了无限记忆,任何历史信息都能 100% 准确召回,产品文档可以当证据使用。
正解MemGPT 只是把“遗忘”从突发事故变成了可管理的过程。归档区依赖搜索,搜索就可能漏检;核心区容量有限,该换出的记忆还是要被移走。安全关键信息、合规证据等不能依赖模型记忆,应存到权威数据库,通过硬编码规则读取。工具推荐在场景1、2中都有体现——记忆调度再好,也有检索成本和命中率上限。
为何常见:宣传材料强调“让长对话不再失忆”,让人产生了“零遗忘”的错觉,忽略了任何存储和检索系统都存在物理极限。
面试题
Q1. MemGPT 的分层记忆设计主要借鉴了哪个系统的思想?
- A.数据库索引系统
- B.操作系统虚拟内存← 正确答案
- C.浏览器缓存机制
- D.分布式搜索引擎
答案:B。MemGPT 的核心灵感来自操作系统虚拟内存的分层分页机制——把上下文窗口当“物理内存”,把外部存储当“磁盘”,Agent 自主管理换入换出。数据库索引(A)和浏览器缓存(C)虽然也涉及分层,但不是 MemGPT 的直接借鉴来源。
Q2. 在 MemGPT 的三层记忆中,“核心区”最合适的比喻是什么?
- A.抽屉里的名片夹
- B.正在处理的文件堆← 正确答案
- C.工作日志本
- D.客户通讯录
答案:B。核心区始终在上下文窗口内、模型每轮都能直接读到,对应办公桌上“正在处理的文件堆”。归档区对应文件柜(长期存储),召回区对应工作日志(历史流水),名片夹和通讯录都模糊了这三层的边界。
Q3. MemGPT 的“自我编辑”能力主要体现在哪个方面?
- A.模型微调与权重更新
- B.调用函数读写核心与归档记忆← 正确答案
- C.自动扩展上下文窗口
- D.缓存常用提示词
答案:B。MemGPT 通过函数调用(core_memory_append、archival_memory_insert 等)让模型自己管理记忆,这就是“自我编辑”。它不是修改模型权重(A),也不能突破硬件窗口(C),更不是简单缓存提示词(D)。
Q4. 在 MemGPT 中,召回区(Recall Storage)的主要职责是什么?
- A.存储长期用户画像
- B.记录全部对话流水← 正确答案
- C.存放模型权重参数
- D.缓存工具执行结果
答案:B。召回区记录完整的对话历史流水,支持按关键词搜索“当时怎么说的”,相当于工作日志。长期用户画像归属归档区(A);模型权重与框架无关(C);工具执行结果只是临时数据,不归召回区管(D)。
Q5. 关于上下文占用率公式 ctxUsage = usedTokens / windowSize,下列说法正确的是?
- A.占用率接近 1 时触发归档← 正确答案
- B.占用率永远保持不变
- C.窗口越大占用率越低← 正确答案
- D.占用率只取决于对话轮数
答案:AC。占用率接近 1 时,Agent 会触发记忆换出(A 对);窗口大小增加而 token 数不变时,占用率下降(C 对)。B 错——占用率随对话动态变化;D 错——工具返回、系统提示同样占用 token。
Q6. Letta 是 MemGPT 的什么?
- A.底层基座模型
- B.工程化框架与产品← 正确答案
- C.向量数据库
- D.提示词编译器
答案:B。MemGPT 已正式更名 Letta,提供 Python API、记忆块管理、可视化控制台等工程化能力。它不是模型(A),不是数据库(C),也不是编译器(D),而是把分层记忆理论落地为可用的 Agent 框架。
Q7. 与 Mem0 相比,MemGPT 的典型特征包括哪些?
- A.使用核心/归档/召回分层架构← 正确答案
- B.模型可自我编辑记忆← 正确答案
- C.只做对话摘要压缩
- D.每次推理把全部历史塞进上下文
答案:AB。MemGPT 用三层记忆架构(A 对),并通过函数调用进行自我编辑(B 对)。C 错——摘要压缩是传统方案,不是 MemGPT 的做法;D 错——这正是不采用的做法,MemGPT 的核心理念就是“不全部塞入”。
Q8. 在 MemGPT 的分页控制中,超大内容通常如何处理?
- A.直接丢弃以节约空间
- B.拆分为小块分批存储← 正确答案
- C.加密压缩后存入核心区
- D.原样留在上下文防止丢失
答案:B。分页控制让 Agent 把长文档拆成小块,分批写入归档区,避免一次塞爆主窗口。直接丢弃(A)丢失信息;压缩存入核心区(C)仍占窗口;原样保留(D)没有解决窗口溢出的问题。
Q9. 为什么 MemGPT 比“简单摘要压缩”能保留更多细节?
- A.摘要算法更复杂
- B.原始信息移入外存而非被抹掉← 正确答案
- C.模型记忆能力更强
- D.上下文窗口被自动扩展
答案:B。摘要压缩把旧信息“揉成”摘要,细节永久丢失;MemGPT 把原始信息整体移入归档区,需要时按原样召回,信息无损。摘要算法复杂度(A)不是关键,模型记忆能力(C)和窗口扩展(D)都不是 MemGPT 的方案。
Q10. 以下哪些场景适合选用 MemGPT/Letta?
- A.跨会话持久记忆的客服助手← 正确答案
- B.百万级实时关键词匹配
- C.多用户隔离记忆的个人助理← 正确答案
- D.长期运行的知识管理 Agent← 正确答案
答案:ACD。跨会话持久记忆(A)、多用户隔离(C)、长期知识管理(D)都是 MemGPT 的典型场景。B 是传统搜索引擎/数据库的强项,与记忆分层调度无关,用 MemGPT 反而增加不必要的复杂度和延迟。