# 记忆是怎么工作的

> 角色留下什么、忘掉什么，以及怎么让一件事记牢。

Source: https://reverie.im/zh/docs/chatting/memory
Language: zh

把一段对话往前推的是三样分开的东西：还留在窗口里的原始消息、掉出窗口那些消息的滚动摘要，以及存放耐久事实的记忆库。它们的行为不一样，角色“忘了”某件事的时候，值得弄清是哪一层松了手。

## 三层 \[#the-three-layers]

| 层     | 它住在哪儿                             | 能装多少                                                                                                                                      |
| ----- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| 实时消息  | 对话本身                              | 由[记忆详细程度](https://reverie.im/zh/docs/chatting/memory#memory-detail)决定。默认的**平衡**档：最近的 10,000 token——或者模型上下文窗口的 25%，取更小的那个——并且最多 **50 条消息** |
| 对话摘要  | 那一个聊天里，在侧边栏的**记忆**标签页 → **对话记忆**下 | 三级：**阶段摘要**，然后**合并摘要**，然后**全程记忆**                                                                                                         |
| 保存的记忆 | 侧边栏的**记忆**标签页，按角色以及全局             | 每个范围 **100** 条，外加 **20** 条置顶的，每条最多 **500 字符**                                                                                             |

实时窗口是刻意和你选的模型脱钩的。选一个上下文有一百万 token 的模型，并不会让更多原始消息留在场上；它改变的是消息周围还能塞进什么。

消息掉出实时窗口后，会在一个回合结束之后被摘要，一次几块。四条阶段摘要合成一条，四条合并摘要再变成一条全程记忆——无论记忆详细程度是哪一档都是如此，并且全都只限于那一个聊天。你可以在侧边栏的**记忆**标签页 → **对话记忆**下读它们、**编辑**和**重建**，那里也会显示还有多少条消息没进摘要。

## 记忆详细程度 \[#memory-detail]

**记忆详细程度**位于**对话记忆**的最上方，决定对话摘要保留多少剧情。它按角色保存，作用于你和这个角色的网页版聊天；Discord 和 Telegram 机器人始终用**平衡**。摘要里的全部内容都会随每条消息一起发出，所以越详细，每次回复花的积分就越多。

| 档位         | 逐字保留                     | 摘要留下什么                                      |
| ---------- | ------------------------ | ------------------------------------------- |
| **仅重要事件**  | 最多 6,000 token 和 30 条消息  | 主线剧情、人物关系、约定和长期不变的事实。逐场景的细节不保留，所以较早的细节淡出得更快 |
| **平衡**（默认） | 最多 10,000 token 和 50 条消息 | 重要事件、约定以及事情是怎么变化的，细节适中                      |
| **详细**     | 最多 16,000 token 和 80 条消息 | 更多场景和支线细节，全程记忆里的时间线也更长                      |

在上下文窗口小的模型上，每一档逐字保留的都不超过那个窗口的 25%。

全程记忆也有篇幅上限：**仅重要事件**、**平衡**、**详细**分别约 4,000、8,000、16,000 token。明显超出后会被压缩：最早的时间线条目合并成简短的阶段概述，只留下仍然要紧的未了约定、确切的名字和数字以及当前状态。从你那里记下的纠正和规则始终逐字保留。

新档位从你的下一条消息起生效。已经写好的摘要会保持原来的详细程度，直到被合并进更早的记忆。想让新档位一次性作用于全部历史，就**重建**对话记忆：切换之后，面板会马上提议重建，并附上预估花费。**积分消耗提醒**也能让你换档——它在某次回复贵得反常之后出现，每个聊天只出一次。

关掉面板或离开聊天后，重建仍会在后台继续，完成时你会收到通知。在那之前，当前的记忆照常工作，新消息要等重建完成后再进摘要。如果没能完成——比如积分用完了——你会收到通知，可以在**对话记忆**里继续或重新开始。在**积分消耗提醒**里换档之后，它同样会提供**按此档位重建**。

## 保存的记忆住在哪儿 \[#where-saved-memories-live]

一条记忆属于两个范围之一，添加时就选好：**角色特定记忆**或**全局记忆**（每个角色都看得到）。整个范围模型就这么多。

> **记忆不按人设、聊天或分支切分。** 换[人设](https://reverie.im/zh/docs/chatting/personas)、开一段新对话或者[分支](https://reverie.im/zh/docs/chatting/forking)，都隔离不了任何东西：你和一个角色的每一段聊天，读写的都是同一个库。在分支里学到的事实，在原始那条里立刻就看得见，在你用的每一个人设下也一样。

两个副作用：在[群聊](https://reverie.im/zh/docs/chatting/group-chats)里，角色读到的是每个成员的记忆的并集，再加上全局的；而如果一个角色被删掉了，挂在它名下的记忆会变成全局的，而不是消失。

每一回合，角色会收到所有置顶条目，外加最多 100 条非置顶的，最新的在前，并且在当前生效的几个范围之间均匀铺开，最近 7 天内更新过的会被标为“近期”。

## 一件事是怎么被保存下来的 \[#how-something-gets-saved]

| 路径                     | 谁来做      | 备注                                  |
| ---------------------- | -------- | ----------------------------------- |
| 角色在回复中途自己存             | 模型       | 需要支持工具调用的模型。它也能更新或删掉自己先前写的条目        |
| **添加记忆**               | 你        | 把事实打进去，选个范围                         |
| **一键初始化记忆** → **生成记忆** | 你，然后是 AI | 从你写的一段描述里回答“你希望角色记住什么？”，最多 1,000 字符 |
| **从对话保存**              | 你，然后是 AI | 挑最多 20 条消息，然后 **AI 提取** 或 **使用原文**  |
| 深度记忆                   | 你的订阅     | 见下文                                 |

> **生成记忆不会读你的聊天。** 它只从你打进框里的那段描述工作。真正读对话的功能是**从对话保存**：选出要紧的消息——一个承诺和对它的回应通常该放在一起——看看最多五份草稿，然后保存。那样存下来的东西一律是**置顶**的。

如果你重新生成一个回合，那个回合写下的记忆会跟着回滚。置顶条目不受影响。

## 置顶 \[#pinning]

置顶是你让一件事变永久的办法。一条置顶条目：

* 每一回合都会**完整发给角色**，永远不会被更新的条目挤掉；
* 有自己的额度——**每个范围 20 条**，在那 100 条非置顶的之上；
* **AI 不能编辑也不能删除**，只有你能；
* 在回退或重新生成对话时存活；
* 第一次运行**清空所有记忆**时会被留下。

非置顶条目没有这些保护：角色可以改写或删掉它们，后台那一遍也可以。如果一件事要紧——你希望被怎么称呼、一条边界、一个有日期的承诺——就把它置顶。

## 深度记忆 \[#deeper-memory]

**需要有效订阅。** 每当一批较早的消息被摘要出实时窗口，Reverie 就会重读那一批，找出持久的细节并归档成记忆。它在对话**进行中**跑，在后台，就在触发它的那次压缩之后——不是夜里跑，也不是按时间表跑。回复从不会等它，它也不花你的积分。

这一遍是被刻意限制住的：它每次只做少量改动，从不碰置顶条目，而且要积累到一段新消息才会动。它只在网页版聊天里跑——Discord 和 Telegram 不跑——而且在悬赏挑战的聊天里从不跑。适用于你时，面板上的**深度记忆**会带一个**已启用**徽章。

免费账号上没有自动的那一遍。角色仍然会在回复中途保存记忆，面板也照常能用。

## 记忆关掉时 \[#when-memory-is-off]

* **从聊天中学习**是个按角色的开关，默认开着。关掉它会同时停掉保存*和*读取——角色既不学，也看不见已有的记忆。
* 在不支持工具调用的模型上，角色没法在对话中途保存；保存过的记忆照样会被用上，订阅用户的深度记忆那一遍也照样跑。
* 在悬赏挑战的聊天里，记忆被完全禁用，所以每一次尝试都从同一张白纸开始。
* 没登录时，什么都不会保存。

## 记忆还是摘要？ \[#memory-or-summary]

记忆留的是几周之内都还成立的事实——一个偏好的称呼、一个生日、一项过敏、一个明确的承诺。剧情进度、今天的心情和变动中的关系，属于对话摘要。如果你说过的某件事在记忆里找不到，先去摘要里看看，再动手加。

> **清空所有记忆**会删掉那个范围里每一条非置顶条目，而且无法撤销。你的置顶条目会在第一遍里活下来；Reverie 随后会另外问一次要不要把它们也删了——“这些是你亲手标记、并且不让 AI 改动的重要时刻。”

## 相关 \[#related]

* [人设](https://reverie.im/zh/docs/chatting/personas) —— 为什么换个人设并不会给你第二份记忆
* [羁绊](https://reverie.im/zh/docs/chatting/bonds) —— 关系本身，而不是关于你的事实
* [分支对话](https://reverie.im/zh/docs/chatting/forking) —— 分支复制什么，又共享什么
* [世界书](https://reverie.im/zh/docs/writing/world-books) —— 关于世界的设定，而不是关于你的事实
* [聊天排障](https://reverie.im/zh/docs/chatting/troubleshooting) —— 角色忘了事情的时候
* [限制](https://reverie.im/zh/docs/reference/limits) —— 所有上限一表看齐
