# Как работает память

> Что персонаж удерживает, что забывает и как заставить что-то закрепиться.

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

Разговор вперёд тянут три разные вещи: сырые сообщения, всё ещё стоящие в окне, скользящая сводка тех, что из него выпали, и хранилище памяти с долговечными фактами. Ведут они себя по-разному, и когда персонаж что-то «забыл», стоит понимать, которая из трёх отпустила.

## Три слоя \[#the-three-layers]

| Слой                     | Где живёт                                                                  | Сколько держит                                                                                                                                                                                                                                         |
| ------------------------ | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Живые сообщения          | Сам разговор                                                               | Зависит от [детализации памяти](https://reverie.im/ru/docs/chatting/memory#memory-detail). На уровне по умолчанию, **Сбалансированная**: последние 10 000 токенов — или 25% контекстного окна модели, смотря что меньше — и не больше **50 сообщений** |
| Сводка разговора         | Тот самый чат, на вкладке **Память** боковой панели → **Память разговора** | Три уровня: **Недавняя сводка**, затем **Объединённая сводка**, затем **Долговременная память**                                                                                                                                                        |
| Сохранённые воспоминания | Вкладка **Память** на боковой панели, по персонажу и глобально             | **100** записей на область плюс **20** закреплённых, каждая до **500 символов**                                                                                                                                                                        |

Живое окно намеренно отвязано от выбранной модели. Взять модель с миллионом токенов контекста не значит удержать в игре больше сырых сообщений; меняется лишь то, что ещё поместится вокруг них.

Когда сообщения выпадают из живого окна, после завершения хода их сводят, по нескольку кусков за раз. Четыре недавние сводки сливаются в одну, а четыре объединённые становятся одной долговременной — на любом уровне детализации памяти, и всё это заперто в пределах того одного чата. Читать, **изменять** и **пересобирать** их можно на вкладке **Память** боковой панели → **Память разговора**; там же видно, сколько сообщений ещё не попало в сводку.

## Детализация памяти \[#memory-detail]

**Детализация памяти** — в самом верху раздела **Память разговора** — задаёт, сколько сюжета удерживает сводка разговора. Настройка сохраняется для каждого персонажа и действует в ваших веб-чатах с ним; боты в Discord и Telegram всегда используют уровень **Сбалансированная**. Всё, что содержит сводка, отправляется с каждым сообщением, так что больше подробностей — больше кредитов за каждый ответ.

| Уровень                             | Хранится дословно                | Что удерживают сводки                                                                                                                       |
| ----------------------------------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| **Ключевые события**                | До 6 000 токенов и 30 сообщений  | Основной сюжет, отношения, обещания и устойчивые факты. Подробности сцена за сценой опускаются, поэтому старые подробности тускнеют быстрее |
| **Сбалансированная** (по умолчанию) | До 10 000 токенов и 50 сообщений | Важные события, обещания и то, как всё менялось, с умеренной детализацией                                                                   |
| **Подробная**                       | До 16 000 токенов и 80 сообщений | Больше сцен и второстепенных деталей и более длинная хронология в долговременной памяти                                                     |

На модели с маленьким контекстным окном любой уровень хранит дословно не больше 25% этого окна.

У долговременной сводки тоже есть предел размера: около 4 000, 8 000 или 16 000 токенов на уровнях **Ключевые события**, **Сбалансированная** и **Подробная**. Когда она заметно его превышает, её сжимают: самые старые строки хронологии сворачиваются в короткие строки по периодам, и остаётся только то, что ещё важно, — незакрытые обещания, точные имена и числа и текущее состояние. Исправления и правила, записанные из ваших сообщений, всегда сохраняются слово в слово.

Новый уровень действует с вашего следующего сообщения. Уже написанные сводки сохраняют свою детализацию, пока не объединятся с более старой памятью. Чтобы сразу применить новый уровень ко всей истории, пересоберите память разговора кнопкой **Пересобрать**: панель предлагает это сразу после переключения, с оценкой стоимости. **Уведомление о высоком расходе кредитов**, которое показывается один раз за чат после необычно дорогого ответа, тоже позволяет сменить уровень.

Пересборка продолжается в фоне, даже если вы закроете панель или уйдёте из чата, а когда она закончится, придёт уведомление. До тех пор работает текущая память, а новые сообщения попадут в сводку после пересборки. Если она не сможет завершиться — например, закончились кредиты, — вы получите уведомление и сможете продолжить её или начать заново в разделе **Память разговора**. После смены уровня в окне **Уведомление о высоком расходе кредитов** оно тоже предложит **Пересобрать на этом уровне**.

## Где живут сохранённые воспоминания \[#where-saved-memories-live]

Воспоминание принадлежит одной из двух областей, и выбирается она при добавлении: **Воспоминание для конкретного персонажа** или **Глобальное воспоминание** (его видит каждый персонаж). Вся модель областей этим и исчерпывается.

> **Память не разгорожена ни по персонам, ни по чатам, ни по веткам.** Смена
> [персоны](https://reverie.im/ru/docs/chatting/personas), новый разговор или
> [ответвление](https://reverie.im/ru/docs/chatting/forking) не изолируют ничего: каждый ваш чат с
> персонажем читает и пишет одно и то же хранилище. Факт, выученный в ветке,
> тут же виден в оригинале — и под любой вашей персоной.

Два побочных следствия: в [групповом чате](https://reverie.im/ru/docs/chatting/group-chats) персонаж читает объединение воспоминаний всех участников плюс глобальные, а если персонажа когда-нибудь удалят, подшитые под него воспоминания станут глобальными, а не исчезнут.

На каждом ходе персонаж получает все закреплённые записи плюс до 100 незакреплённых — сначала новые, равномерно размазанные по задействованным областям, с пометкой «недавнее» на всём, что обновлялось за последние 7 дней.

## Как что-то сохраняется \[#how-something-gets-saved]

| Путь                                                         | Кто это делает | Примечания                                                                                     |
| ------------------------------------------------------------ | -------------- | ---------------------------------------------------------------------------------------------- |
| Персонаж сохраняет посреди ответа                            | Модель         | Нужна модель с инструментами. Она может и обновлять, и удалять собственные прежние записи      |
| **Добавить воспоминание**                                    | Вы             | Наберите факт, выберите область                                                                |
| **Инициализировать воспоминания** → **Создать воспоминания** | Вы, затем ИИ   | Отвечает на «Что должен помнить персонаж?» по описанию, которое вы напишете, до 1 000 символов |
| **Сохранить из диалога**                                     | Вы, затем ИИ   | Выберите до 20 сообщений, затем **Составить с ИИ** или **Оставить как есть**                   |
| Глубокая память                                              | Ваша подписка  | См. ниже                                                                                       |

> **Создать воспоминания не читает ваш чат.** Оно работает только по описанию,
> которое вы вбили в поле. Функция, читающая разговор, — это **Сохранить из
> диалога**: отметьте важные сообщения (обещание и ответ на него обычно идут
> вместе), просмотрите до пяти черновиков и сохраните. Всё сохранённое этим
> путём приходит **закреплённым**.

Если перегенерировать ход, записи в память, сделанные этим ходом, откатываются вместе с ним. Закреплённые записи не трогают.

## Закрепление \[#pinning]

Закрепление — это способ сделать что-то постоянным. Закреплённая запись:

* уходит персонажу **целиком, каждый ход**, и её никогда не вытесняют новые;
* имеет собственный лимит — **20 на область**, сверх тех ста незакреплённых;
* **не может быть изменена или удалена ИИ**, только вами;
* переживает отмотку и перегенерацию разговора;
* остаётся на месте при первом запуске **Очистить все воспоминания**.

У незакреплённых записей этой защиты нет: персонаж может их переписать или стереть, и фоновый проход тоже. Если факт важен — как к вам обращаться, где граница, датированное обещание, — закрепите его.

## Глубокая память \[#deeper-memory]

**Требуется активная подписка.** Каждый раз, когда кусок старых сообщений сводится и уходит из живого окна, Reverie перечитывает этот кусок в поисках долгоиграющих деталей и подшивает их как воспоминания. Она работает **во время** разговора, в фоне, сразу после уплотнения, которое её вызвало, — не ночью и не по расписанию. Ответы её никогда не ждут, и ваши кредиты она не тратит.

Проход нарочно ограничен: за раз он вносит лишь несколько правок, закреплённых записей не касается вовсе, и ему нужен накопившийся отрезок новых сообщений. Работает только в веб-чатах — не в Discord и не в Telegram — и никогда в чатах с наградным испытанием. Когда это к вам относится, панель показывает **Глубокую память** со значком **Активна**.

На бесплатном аккаунте автоматического прохода нет. Персонаж по-прежнему сохраняет воспоминания посреди ответа, и панель по-прежнему работает.

## Когда память выключена \[#when-memory-is-off]

* **Обучение из чата** — переключатель на уровне персонажа, по умолчанию включён. Его выключение останавливает и сохранение, *и* чтение: персонаж не учится и не видит существующих воспоминаний.
* На модели без поддержки инструментов персонаж не может сохранять посреди разговора; сохранённые воспоминания всё так же используются, и проход глубокой памяти у подписчика всё так же идёт.
* В чате наградного испытания память отключена полностью, так что каждая попытка начинается с одного и того же чистого листа.
* Без входа в аккаунт не сохраняется ничего.

## Память или сводка? \[#memory-or-summary]

Память держит факты, остающиеся верными неделями: предпочитаемое имя, день рождения, аллергию, прямо данное обещание. Продвижение сюжета, сегодняшнее настроение и меняющиеся отношения — это дело сводки разговора. Если сказанного вами нет в памяти, загляните в сводку, прежде чем добавлять вручную.

> **Очистить все воспоминания** удаляет каждую незакреплённую запись этой
> области, и отменить это нельзя. Ваши закреплённые записи первый проход
> переживают; затем Reverie отдельно спросит, удалять ли и их — «Это моменты,
> которые вы отметили сами и защитили от ИИ.»

## Смежное \[#related]

* [Персоны](https://reverie.im/ru/docs/chatting/personas) — почему смена персоны не даёт вам вторую память
* [Связи](https://reverie.im/ru/docs/chatting/bonds) — сами отношения, в отличие от фактов о вас
* [Ответвления разговоров](https://reverie.im/ru/docs/chatting/forking) — что ветка копирует, а что делит с оригиналом
* [Книги мира](https://reverie.im/ru/docs/writing/world-books) — знания о мире, в отличие от фактов о вас
* [Решение проблем чата](https://reverie.im/ru/docs/chatting/troubleshooting) — когда персонаж что-то забывает
* [Ограничения](https://reverie.im/ru/docs/reference/limits) — все пределы в одной таблице
