---
title: "MemGPT：谁来决定什么留在窗口"
description: "MemGPT 把读写交给模型自己：像操作系统换页一样，决定什么留在窗口、什么存到外面。"
---

## 这一页为什么在这里

第三站的第三个决策点：窗口满了，谁来决定什么留下？固定规则还是模型自己？MemGPT 借操作系统的分层存储，让模型自己调用函数把信息存出去、读回来。这一页让学生看到“谁来放”从设计者移到了 agent 自己。右下角出口接第 10 讲。

## 上屏

- 第 1 步：题面：窗口满了，谁来决定什么留下：固定规则（比如截掉最早的），还是模型自己？两张卡并排：固定规则（比如截掉最早的）｜模型自己。
- 第 2 步：MemGPT 的结构（2023）。主上下文（像内存）：系统指令（只读）｜工作上下文（可读写）｜消息队列（先进先出，附被挤出消息的递归摘要）。外部上下文（像硬盘）：归档存储｜回忆存储。
- 第 3 步：五步示意日志：1 用户：“我生日是 3 月 14 日”｜2 窗口用到 70%，系统插入“内存压力”警告｜3 模型写入工作上下文：用户生日 3/14（写）｜4 窗口写满：队列挤出一半旧消息、写递归摘要，旧消息留在回忆存储｜5 几十轮后用户问“我生日哪天？”，模型从工作上下文读到，答 3 月 14 日（读）。右下角出口：→ 第 10 讲｜一个 agent 自己管窗口。

## 讲

### 第 1 步 · 教师可说的话

谁决定窗口里留下什么

窗口满了，总得有人决定什么留下。可以写死一条规则，比如截掉最早的；也可以交给模型自己。2023 年 10 月，MemGPT 押了后者。

#### 指图与比较

先比较固定规则与模型自己两张卡。

### 第 2 步 · 教师可说的话

内存与硬盘类比

它的思路是把模型当成操作系统：窗口像内存，外部存储像硬盘，装不下就换页。

#### 指图与比较

对照主上下文的三个部分与外部上下文的两种存储，说明像内存、像硬盘的类比。

### 第 3 步 · 教师可说的话

模型自己决定存取

关键是谁来决定换什么：模型自己。在这个生日例子里，它把生日写入工作上下文，几十轮后再从这里读到；存在外面的东西，仍然要被取回到窗口里才能起作用。

#### 指图与比较

沿五行日志看第 3 行“写”和第 5 行“读”，注意生日保存在工作上下文，旧消息留在回忆存储。

### 本页衔接

读写都能自动了。能写，就会写错。

### 连续教师稿原文

窗口满了，总得有人决定什么留下。可以写死一条规则，比如截掉最早的；也可以交给模型自己。2023 年 10 月，MemGPT 押了后者。

它的思路是把模型当成操作系统：窗口像内存，外部存储像硬盘，装不下就换页。

关键是谁来决定换什么：模型自己。在这个生日例子里，它把生日写入工作上下文，几十轮后再从这里读到；存在外面的东西，仍然要被取回到窗口里才能起作用。

### 讲授出口

→ 第 10 讲｜一个 agent 自己管窗口。可以展开：改一个大代码库时，哪些文件留在窗口、哪些存到外面、什么时候再读回来？编程智能体每天都在做 MemGPT 式的换页。

## 完整推理

**两难。** 窗口满了，总得有人决定什么留下。固定规则（截掉最早的、按时间压缩）简单可预测，但不知道哪些信息以后有用；交给模型自己，它可能更懂哪些重要，但多了出错和花费的可能。

**MemGPT 的押法（2023-10）。** 借操作系统的分层存储和换页：窗口像内存，外部存储像硬盘。主上下文里有三块：系统指令（只读）、工作上下文（模型可以用函数读写的一块，放关键事实）、消息队列（先进先出，旧消息被挤出时附上递归摘要）。外部上下文有两块：回忆存储（全部历史消息，可搜索）和归档存储（任意长的文本，可搜索）。模型通过函数调用在两层之间搬运信息。

**系统给的提示。** 当窗口用到一定比例（原文举例 70%），系统往输入里插一条“内存压力”警告，提醒模型把重要的东西存好；写满时，队列管理器挤出一部分旧消息（原文举例为窗口的 50%），生成新的递归摘要，原消息仍可在回忆存储里检索到。

**日志怎么读。** 画面里的生日例子是课件构造的：它展示“写”（模型把生日写进工作上下文）和“读”（几十轮后从工作上下文读出来）两个动作，以及被挤出的旧消息并没有消失，只是移到了外面。

**和前面的关系。** 第一站，设计者决定每题查一次；第二站，模型决定何时查；这里，模型连自己的窗口也自己管。代价是模型的每一次存取决定都可能出错，而且这些决定会影响以后的所有对话。

## 学生可能的回答与误区

- 第 1 步｜多数人选“模型自己”。追问：模型怎么知道哪条以后有用？它决定错了，谁来发现？
- 第 2 步｜“外部上下文就是聊天记录。”回忆存储是全部历史消息，归档存储是任意文本，两者都要通过函数检索才会回到窗口。
- 第 3 步｜“挤出去的消息就丢了。”在 MemGPT 里，旧消息仍在回忆存储里，可以再检索；丢的是它们在窗口里的位置。

## 教学构造与出处

- 教学构造：第 1 步 的两张卡和 第 3 步 的生日日志是课件编的示意，不是原文的对话记录。
- [MemGPT · Towards LLMs as Operating Systems](https://arxiv.org/abs/2310.08560)：Packer 等（加州大学伯克利分校），arXiv 2310.08560v2；读 §2–§3：主上下文的三块（系统指令、工作上下文、先进先出队列与递归摘要），外部上下文的回忆存储与归档存储，内存压力警告（例 70%）与挤出（例 50%），函数调用读写。来源支持。

[在课堂中打开](/slides/memgpt-context-control)
