返回文章列表
技术解析

MemGPT 技术解析:把 LLM 当成操作系统来管内存

一篇 2023 年的 Berkeley 论文如何定义了「有状态 Agent」:虚拟上下文管理、自编辑记忆与中断机制的设计细节,以及它与今天 Letta 的关系。

2026-05-2815分钟
论文:《MemGPT: Towards LLMs as Operating Systems》(arXiv 2310.08560,UC Berkeley,2023-10-12)
项目现状:2024-09-23 起正式更名为 Letta,论文作者团队成立同名公司继续推进

MemGPT 是「有状态 Agent」这条路线上的奠基性工作。它提出的核心类比至今仍是理解各类分层记忆架构的最短路径:把 LLM 当作 CPU,把上下文窗口当作物理内存,把外部存储当作磁盘。

要点速览:主内存里有一块模型可读写的「草稿纸」,换页时机由模型自主决定而非应用代码;中断机制让一次请求内部跑多步——今天 Agent 循环的雏形。代价同样清楚:额外 LLM 调用、行为不稳定、架构偏重。

一、为什么需要这个类比

操作系统面对的问题是:物理内存有限,但进程需要的内存可以无限大。解法是虚拟内存——把不活跃的页面换出到磁盘,需要时再换入,进程完全感知不到。

LLM 面对的是同一个结构性问题:上下文窗口是硬上限(论文写作时的模型普遍只有 4K–8K),但对话历史、文档、工具输出可以无限增长。简单截断的代价是丢失早期信息,而早期信息往往包含任务设定与用户身份。

二、两级内存结构

论文把 LLM 可访问的信息分成两级:

层级论文称法内容访问方式
主内存Main Context系统指令、工作上下文、FIFO 消息队列直接出现在 prompt 中
外部内存External Context召回存储(对话历史)、归档存储(文档/知识)需通过函数调用检索

主内存中的「工作上下文」是一块可读写的草稿纸:Agent 自己决定往里写什么。这构成了 MemGPT 与「检索增强」的根本区别——它不只是把外部信息读进来,还把内部信息主动写出去。

三、分页与 self-editing:谁来决定换页

传统 RAG 的检索时机由应用代码决定(每轮固定检索一次)。MemGPT 把决定权交给模型本身:

  1. 主内存接近容量上限时,系统向 LLM 发出内存压力警告
  2. LLM 自主决定:把哪些内容写入归档、如何修改工作上下文、是否需要调用检索
  3. 需要历史细节时,通过 conversation_search 一类函数把内容换回主内存

这套机制被论文称为 self-editing memory(自编辑记忆)。

四、中断机制:一次请求内跑多步

MemGPT 还引入了一个今天看起来理所当然、但在当时很关键的机制:中断(interrupt)。

普通 LLM 调用是「一次输入 → 一次输出」。MemGPT 允许模型在生成过程中请求函数调用,系统执行后把结果作为新的中断塞回,模型继续推理,直到产出面向用户的最终回复。这意味着一次用户请求内部可以包含多次 LLM 调用与记忆操作,Agent 因而具备了「先检索、再反思、最后回答」的多步能力。

这实际上是今天 Agent 循环的雏形。

五、架构层级对照

层级容量约束访问速度典型用途
主内存(工作上下文)受窗口硬限最快,无需额外调用当前任务状态、系统指令
召回存储中等中等,需函数调用历史对话检索
归档存储不受限最慢文档、知识库

六、局限与代价

  • 额外 LLM 调用:每次记忆操作都是一次模型往返,延迟与成本都高于固定流水线式的检索。
  • 行为不稳定:换页时机由模型判断,不同模型/提示词下的表现差异明显,调优成本高。
  • 复合错误风险:记忆调度出错会污染后续所有轮次,排障比无状态链路困难。
  • 架构较重:它更像一个 Agent 运行时,而非可以随手插入的记忆 API。把已有应用「放进」这个框架,改造量远大于接入一个外部记忆服务。

七、从论文到 Letta

项目更名 Letta 后,定位从「论文原型」转向「具状态智能体平台」:提供 Agent SDK、CLI、多后端部署(云端/本地/自托管)与自我改进能力。记忆在这里不再是一个独立组件,而是 Agent 运行时的一部分。

这也决定了它的适用边界:给现有项目外挂记忆,用 Mem0 这类方案成本更低;从零构建一个需要长期运行、持续自我演化的 Agent,Letta 的框架价值才成立。

参考来源

本文基于论文原文与官方文档整理。论文发表于 2023 年,当时的上下文窗口规格与今天差异较大,文中容量相关描述已按论文原始设定保留。