Memory Recall и сводки чата
Любая модель ИИ читает за один раз лишь ограниченный объем текста. Этот объем называют контекстным окном. В длинном чате самые старые сообщения выпадают из него, и ИИ их забывает. В приложении Marinara Engine (далее – Marinara) есть несколько способов вернуть эту историю. В этом руководстве показано, как включить каждый из них и что делать, если он не работает.
Какая функция памяти мне нужна?
Начните с Memory Recall (память чата, поиск по прошлым сообщениям). Эта функция работает без дополнительной настройки, потому что Marinara может использовать встроенную модель эмбеддингов на вашем компьютере. Добавьте сводки, когда чаты станут очень длинными.
| Функция | Что делает | Где работает |
| Memory Recall | Ищет в старых сообщениях места, связанные с тем, что вы только что написали, и добавляет их в промпт. | Во всех режимах |
| Chat Summary (сводка чата) | Заменяет старые сообщения короткими пересказами. | Roleplay |
| Automatic Summarization (автоматические сводки) | Подводит итог каждого дня, затем каждой недели. Работает всегда. | Conversation |
| Advanced Memory Recall (расширенная память чата) | Вместе управляет текущей историей, сводками сцен и извлеченными фрагментами. Включается по желанию. | Roleplay и Game Mode |
Memory Recall и сводки делают разную работу и могут работать одновременно. В Game Mode есть Memory Recall и, по желанию, Advanced Memory Recall (см. В Game Mode). Собственной функции сводок там нет.
Memory Recall
Memory Recall использует эмбеддинги. Эмбеддинг – это числовой отпечаток смысла сообщения. Marinara хранит прошлые сообщения небольшими группами, которые называются фрагментами памяти. Она сравнивает отпечаток вашего нового сообщения с сохраненными отпечатками и добавляет в промпт самые близкие фрагменты.
Включение Memory Recall
- Откройте чат и нажмите Chat Settings (настройки чата).
- Найдите раздел Memory Recall.
- Включите Enable Memory Recall.
Это настройка отдельного чата. Изначально она включена в чатах Conversation, а также в чатах Roleplay и Game, где есть активная сцена. В остальных чатах она изначально выключена. Если ее выключить, поиск прекращается, но сохраненные воспоминания не удаляются.
Если не получилось: функции Memory Recall нужен источник эмбеддингов (следующий раздел). Если вы его не задали, Marinara использует свою встроенную модель, поэтому большинству этот раздел можно пропустить. Проверьте, что раздел Memory Recall вообще появляется. В некоторых контейнерных сборках, известных как Marinara Lite, функция выключена полностью.
Выбор источника эмбеддингов (необязательно)
Функции Memory Recall нужна модель, которая строит отпечатки. Если ничего не задать, Marinara использует встроенную модель эмбеддингов (см. ниже) – для большинства это самый простой вариант. Чтобы вместо нее использовать сервис, задайте его в аккаунте, а не в настройках чата.
Перед началом: нужен аккаунт, который предоставляет эмбеддинги. См. Подключение к провайдеру ИИ.
- Откройте Connections (подключения) и откройте аккаунт для редактирования.
- Найдите раздел Semantic search (embeddings) (семантический поиск).
- Введите название модели эмбеддингов, например
text-embedding-3-small. - Необязательно: задайте Embedding endpoint URL (адрес эндпоинта эмбеддингов), чтобы изменить адрес.
- Необязательно: выберите в поле Embedding provider (провайдер эмбеддингов) другой аккаунт, чтобы позаимствовать его ключ и адрес. Same as this provider (как у этого провайдера) оставляет собственные ключ и адрес этого аккаунта.
Некоторые сервисы эмбеддинги не предлагают. Тогда Marinara просит выбрать отдельный аккаунт для эмбеддингов, например совместимый с OpenAI, Google или встроенную модель.
Чтобы использовать один источник везде, выберите его в пункте Embeddings (эмбеддинги) в Connections → Defaults (подключения → по умолчанию). Его используют аккаунты, у которых нет собственной модели эмбеддингов. Собственная настройка аккаунта по-прежнему важнее.
Если нет ни аккаунта для эмбеддингов, ни значения Embeddings по умолчанию, Marinara переходит на встроенную модель эмбеддингов. Она скачивается один раз и работает на вашем компьютере без ключа API. См. Настройка встроенной модели.
Тот же параметр отвечает и за семантический поиск в лорбуках, так что его достаточно настроить один раз для обеих функций.
Просмотр сохраненных воспоминаний и управление ими
- Откройте Chat Settings → Memory Recall.
- Нажмите Access memories for this chat. Откроется окно Memories for This Chat. Если включена Advanced Memory, просмотр остается внутри выдвижной панели Roleplay.
В окне видно число сохраненных фрагментов памяти и примерный объем в токенах. На карточке каждого фрагмента показаны диапазон дат, число сообщений, время создания и статус.
| Статус | Значение |
| Vectorized | Отпечаток построен и готов к поиску. |
| Waiting for vector | Отпечаток еще создается. |
| Embedding unavailable | Ни один источник эмбеддингов не смог его построить. |
На панели инструментов есть значки экспорта, импорта, перестроения и очистки воспоминаний.
- Значок корзины у фрагмента открывает окно Forget Memory. Подтвердите кнопкой Forget.
- Значок полной очистки открывает окно Clear Memories. Подтвердите кнопкой Clear. Так удаляются воспоминания для поиска, но не сообщения чата.
- Значок обновления перестраивает все фрагменты из текущих сообщений. Пользуйтесь им после смены модели эмбеддингов.
- Экспорт сохраняет файл
.marinara.json. Импорт принимает файлы.jsonили.marinaraи добавляет их к существующим воспоминаниям.
Как ведет себя Memory Recall
- Marinara сохраняет фрагменты в фоне всегда, когда есть источник эмбеддингов, даже если Enable Memory Recall выключен. Переключатель определяет только то, попадают ли воспоминания в промпт.
- Фрагмент создается, только когда накопится не менее 5 новых сообщений.
- Слабые совпадения пропускаются, поэтому поиск может ничего не вернуть, даже когда воспоминания есть. На найденные воспоминания отводится лишь небольшая часть промпта.
- После смены модели эмбеддингов старые фрагменты перестают совпадать. Перестройте их.
- Удаление сообщений чата удаляет и его фрагменты.
Chat Summary (Roleplay)
Chat Summary сжимает старые сообщения в короткие пересказы – записи сводки. Каждую запись может написать ИИ или вы сами, и каждую можно включить или выключить. Функция есть только в чатах Roleplay.
Откройте Chat Settings и разверните раздел Chat Summary под разделом Lorebooks. На компьютере его можно вынести в отдельное окно. См. Обзор панели Chat Settings.
Создание записи сводки
- В блоке Summary Scope выберите Last, чтобы взять самые свежие сообщения, или Range, чтобы задать диапазон сообщений.
- Нажмите Generate, чтобы запись написал ИИ, или Write, чтобы набрать ее самостоятельно.
Каждая запись показывает заголовок, исходный диапазон или число сообщений и примерный размер в токенах. Ее можно включить или выключить, развернуть, изменить кнопкой Edit или удалить кнопкой Delete (удалить). Show Inactive и Hide Inactive меняют то, что показывает список. Activate All и Deactivate All включают или выключают сразу все записи.
Чтобы изменить несколько записей, отметьте их флажками (на компьютере нажмите на запись, удерживая Shift, чтобы выбрать диапазон), затем нажмите Enable selected (включить выбранные) или Disable selected (выключить выбранные).
Если включен Review Agent Outputs (проверять результаты агентов), сводки от ИИ ждут вашего одобрения. См. Одобрение записей агентов и редактор Agent Suite.
Automatic Summaries
Панель Automatic Summaries поддерживает сводки в актуальном состоянии по ходу чата.
- Включите Enabled.
- В поле Every задайте, сколько сообщений пользователя проходит между сводками. По умолчанию 5, диапазон – от 1 до 200.
- Необязательно: нажмите Backfill Summary, чтобы составить сводки для старого чата, у которого их никогда не было. Появится полоса прогресса. Нажмите Stop, чтобы прервать работу раньше.
Промпт сводки, провайдер и размер ответа
- Summary Prompt (промпт сводки): нажмите Edit, чтобы изменить инструкции, которые использует ИИ. Нажмите Templates (шаблоны), чтобы управлять сохраненными промптами кнопками New template, Duplicate, Edit и Delete. Шаблоны – общая настройка: выбор шаблона в одном чате Roleplay меняет промпт во всех чатах Roleplay.
- Summary Provider (провайдер сводок): аккаунт, который пишет сводки. Сначала используется ваш аккаунт для агентов по умолчанию, затем собственный аккаунт чата.
- Maximum output size (максимальный размер ответа): какой длины может быть сводка. По умолчанию 4096 токенов, диапазон – от 1 до 32768.
Параметры отображения
- Hide summarised messages: скрывает исходные сообщения, как только их охватывает сводка. По умолчанию выключено.
- Recent message tail: столько самых новых сообщений остаются видимыми даже при включенном скрытии. По умолчанию 10. Подходит любое целое число от 0. Значение 0 скрывает всю сведенную порцию. Чем больше значение, тем больше и дороже промпты.
- Collapse hidden messages: меняет вид скрытых сообщений в тексте чата.
Этот хвост ограничивает сообщения, уже охваченные сводкой. Охваченное сводкой сообщение старше хвоста сразу исключается из промпта, еще до того, как его скроет следующая сводка. Более старое сообщение, которое еще не охвачено ни одной сводкой, по-прежнему отправляется, потому что иначе оно было бы потеряно. Если такие сообщения есть, Chat Summary показывает их число под полем Recent message tail. Нажмите Backfill Summary, чтобы составить для них сводки.
Объединенные групповые чаты
В объединенном групповом чате один ответ говорит за всех персонажей. Часть записи, написанная для определенных персонажей, например {{#if char == "Kaito"}}…{{/if}}, сохраняется для всех персонажей, к которым она относится, и помечается списком тех, кому она известна, например "known only to Kaito". Части, которые получает только Narrator (рассказчик) в Advanced Memory, не включаются. В групповых чатах, где персонажи отвечают по очереди, и в чатах с одним персонажем каждый персонаж читает записи так же, как раньше, а Narrator читает каждую часть.
Automatic Summarization (Conversation)
Чаты Conversation подводят итог каждого календарного дня, а затем объединяют завершенные недели в недельную сводку. После этого в промпт уходят только недельные сводки, дневные сводки текущей недели и сегодняшние сообщения. Эта функция работает сама, и выключить ее нельзя.
Редактирование сводок
- Откройте чат Conversation и нажмите Chat Settings.
- Найдите раздел Automatic Summarization.
- Нажмите Edit Summaries.
В окне сначала идут недели, а затем дни, еще не собранные в неделю. Разверните запись, чтобы изменить текст Summary и строки Key Details.
Выбор часа, когда заканчивается день
- Day Rollover Hour: час, с которого для сводок начинается новый день. По умолчанию 4 AM. Можно выбрать любой час от 12 AM до 11 AM. Сообщения, отправленные раньше этого часа, относятся к предыдущему дню. Выберите время, когда вы не общаетесь в чате. Если изменить его, когда сводки уже есть, Marinara предупредит, что старые сводки строились по прежнему часу.
- Recent Message Tail: сколько самых новых сообщений за сегодня остаются дословно после того, как попали в сводку. По умолчанию 10. Чем больше значение, тем больше и дороже промпты.
Заполнение пропущенных дней
День может остаться без сводки, например после импорта старого чата. В окне в панели Missing Summaries есть кнопка Backfill. Она повторяет попытку для не более чем 14 недавних дней за раз. Смена модели для сводок не переписывает уже существующие дневные и недельные записи.
Advanced Memory Recall (Roleplay и Game Mode)
Advanced Memory Recall – необязательный режим, который вместе управляет окном текущей истории, сводками для связности и старыми фрагментами. Он делит чат на сцены, составляет сводку каждой завершенной сцены и для каждого ответа извлекает сцены и точные сообщения, которые для него важны. Он работает без переключателя Agents и не требует скачиваемого агента.
Включение
- Откройте Chat Settings → Memory Recall.
- Включите Advanced Memory Recall. Также можно включить Automatic context and memory handling (автоматическое управление контекстом и памятью) под разделом Agents в мастере настройки Roleplay.
- Задайте Maximum allowed context before compression (tokens) (максимально допустимый контекст до сжатия) в пределах контекстного окна вашей модели.
- Задайте Summary and recall budget (tokens) (бюджет сводок и извлечения) в пределах этого предела.
- Необязательно: выберите Helper model (вспомогательная модель).
Для чата, в котором уже есть история, сначала нажмите Prepare existing history (подготовить существующую историю; см. ниже). Настройки и ход работы показываются и в мастере, и в выдвижной панели Chat Settings, на компьютере и на телефоне. Просмотр архива остается в выдвижной панели.
Настройки
| Настройка | По умолчанию | Что делает |
| Maximum allowed context before compression (tokens) | 65 000 | Когда исходящий промпт достигает этого размера, более старый контекст отсекается и получает сводку для извлечения. |
| Summary and recall budget (tokens) | 6 500 | Какая часть контекста отводится под память. Рекомендуется не меньше 10% от максимума. |
| Helper model | аккаунт для агентов, затем аккаунт чата | Принимает решения о сценах, пишет сводки и поддерживает связность. |
| Maximum recalled scenes (максимум извлекаемых сцен) | 3 | Верхний предел сцен, извлекаемых на один ответ. 0 отключает необязательное извлечение сцен. |
| Moving context (подвижный контекст) | 3–5 сообщений | Сообщения в каждом извлеченном фрагменте. 0 для обоих значений дает сводки без фрагментов. |
| Standalone scene check interval (messages) (интервал отдельной проверки сцен) | 5 | Сколько новых сообщений проходит между проверками сцен. |
| Use Decision model (использовать модель решений) | выключено | Позволяет модели решений находить окончания сцен и выбирать воспоминания. |
| Decide who sees new messages (решать, кто видит новые сообщения) | выключено | Только в групповых чатах, где персонажи отвечают по очереди. |
| Character recollections (воспоминания персонажей) | выключено | Дает каждому персонажу собственное воспоминание о сцене. |
Бюджет по умолчанию – 10% от максимума по умолчанию. Последующее изменение максимума его не меняет. Предел охватывает весь исходящий промпт по оценке: инструкции, сообщения, извлеченный контекст, инструменты и вложения. Токены ответа и запас безопасности учитываются отдельно. Это оценка, а не точный подсчет токенизатора и не предел оплаты.
Все запросы сводок памяти используют Chat Summary → Maximum output size, выделяя не менее 8196 выходных токенов, чтобы оставить место для рассуждений.
Подготовка существующей истории
- Нажмите Prepare existing history. Перед началом показываются выбранные модели.
- Подождите. Подготовка обрабатывает старую историю пакетами и показывает текущий этап.
- Нажмите Cancel (отмена), чтобы остановить ее. Выполненная работа сохраняется. Нажмите Resume (продолжить), чтобы продолжить, даже после закрытия панели, перезапуска сервера или обновления приложения.
Неудачный вызов модели сохраняет ранее корректную память и показывает ошибку, чтобы можно было повторить попытку. Не сбрасывайте память после ошибки: Resume повторно использует готовые сводки. Последняя текущая сцена остается открытой и получает сводку, когда закроется.
Если восстановленная история меняет сцену, к которой относится ручная правка, выключите эту память, чтобы сохранить ее текст для справки, или удалите ее, а затем подготовьте историю снова. Fix (исправить) пропускает такую сцену и показывает ее в списке, а не останавливается.
Ветка, созданная из подготовленного чата, например кнопкой Branch from here (создать ветку отсюда), сохраняет его Advanced Memory. Ветка, созданная внутри сцены, снова открывает эту сцену: ее старая сводка отбрасывается, а новая пишется, когда сцена закроется. Чат, импортированный как новая ветка, готовится как обычно.
Исправление проблем с памятью
Когда в памяти чата что-то сломано, на кнопке Chat Settings появляется немигающая точка акцентного цвета, а уведомление сообщает, в скольких сценах есть проблемы. О каждом наборе проблем уведомление появляется один раз, а точка остается, пока они не будут решены. В Chat Settings → Memory Recall проблемы перечислены над настройками. В Access memories for this chat видна та же точка.
Нажмите Fix в уведомлении или в списке, чтобы за один запуск исправить все отмеченные сцены. Fix использует Helper model. Pause processing (приостановить обработку) останавливает работу, а Resume processing (продолжить обработку) возобновляет ее. Fix:
- заново спрашивает вспомогательную модель, кто был в сценах с пометкой Check who was there. Если она по-прежнему не может определить, доступ никто не получает, а сцена попадает в список для вас;
- проверяет, кто был в старых сценах, сохраненных до появления проверки участников;
- пишет новые сводки для сцен, у которых изменились сообщения, скрытые сообщения, имена персонажей или сводки, на которых они основаны, а также для завершенных сцен без сводки. Удаленные вами сводки остаются удаленными;
- возобновляет обработку памяти, прерванную ошибкой.
Fix никогда не переписывает сводку, отредактированную вручную. Такие сводки он добавляет в список need your review и продолжает работу. Изменить настройки за вас он не может: например, диапазон знаний персонажа или работающее подключение модели решений.
По завершении Fix показывает "Advanced Memory fixed N scenes" и номера сцен, которые нужно проверить. Выберите номер, чтобы открыть эту сцену в Access memories for this chat. Если панель Chat Settings была закрыта, туда приведет уведомление с кнопкой Show (показать). О сцене, по которой Fix не смог принять решение, следующий запуск Fix снова не спрашивает, поэтому сохраните доступ персонажей к ней сами.
Повторное сканирование сцен
Если смены сцен были пропущены, например когда сцена так и не закончилась, используйте Re-scan scenes (просканировать сцены заново) в Chat Settings → Memory Recall.
- Введите номера первого и последнего сообщения для проверки. Изначально выбрана текущая сцена.
- Нажмите Re-scan (просканировать заново).
Advanced Memory заново находит смены сцен в этих сообщениях и пишет сводки для изменившихся сцен. Если включено Use Decision model, она использует модель решений, иначе вспомогательную модель. Сцены за пределами диапазона сохраняют свои границы и сводки. Если повторное сканирование изменило бы отредактированную вами сводку, оно останавливается и называет эту сцену.
Необязательная модель решений
Модель решений – это небольшая модель, которая отвечает на вопросы "да или нет". По умолчанию она выключена, а выбор сохраняется отдельно для каждого чата Roleplay.
- Включите Use Decision model в Advanced Memory.
- Выберите модель в списке Memory Decision connection (подключение модели решений для памяти). В группе Built-in model (встроенная модель) он показывает те же модели, что и глобальная настройка Decision model (модель решений). Модель, которая пока не может отвечать, показана серой с указанием причины, а остановленная запускается, когда к ней обращаются. В группе Connections перечислены ваши сохраненные аккаунты модели решений. См. Модели решений.
Этот выбор не зависит от глобальной настройки модели решений по умолчанию.
Модель определяет границы сцен при подготовке истории и проверке текущих сцен. Перед новым ответом она выбирает воспоминания в два прохода. Подробности – в разделе Как работает извлечение с моделью решений.
Аккаунты внешних сервисов получают текст недавнего разговора и отобранные для оценки сводки или сообщения и могут брать плату за несколько запросов на один ответ. Перед отправкой кандидатов поиск отфильтровывает их по доступу персонажей.
Кто видит новые сообщения
В групповом чате Roleplay, где персонажи отвечают по очереди, Advanced Memory может решать, какие персонажи видят каждое новое сообщение. Тогда вам не нужно скрывать каждое сообщение от персонажа, который покинул сцену. В объединенных групповых чатах и в чатах с одним персонажем этой опции нет.
- Включите Decide who sees new messages в Advanced Memory.
Каждое новое сообщение, ваше или персонажа, скрывается от персонажей, которых нет в сцене. Для этого используется то же скрытие Hide from AI (скрыть от ИИ) для отдельных персонажей, что и у кнопки на самом сообщении, поэтому значок перечеркнутого глаза показывает, кому сообщение не видно. Решение по вашему сообщению принимается сразу после его отправки. Решение по предыдущим сообщениям принимается до того, как ответит следующий персонаж.
- Выбранный здесь Narrator и Narrator character (персонаж-рассказчик), выбранный в настройках команд Roleplay, видят все сообщения. Автор сообщения всегда видит свое сообщение. Адресат шепота, которого нет в сцене, все равно получает шепот.
- Если включено Use Decision model, модель решений для каждого персонажа отвечает на вопрос, точно ли он не может видеть или слышать сообщение. Персонаж, которого сюжет ни разу не помещает в сцену, считается находящимся в другом месте. Иначе решает Helper model. Сообщение скрывается, только если модель уверена.
- Модель читает сообщения текущей сцены, написанные к этому моменту, и как минимум несколько последних сообщений перед ней. Она также получает список персонажей, которые говорили с начала сцены. Этот список – лишь подсказка: молча слушающий персонаж все равно считается присутствующим.
- Если вы сами измените Hide from AI у сообщения или примените
/hideили/unhide, ваш выбор сохраняется, и Advanced Memory больше никогда не меняет это сообщение. - Решение по каждому сообщению принимается один раз. Если модель дает сбой или не отвечает вовремя, ничего не скрывается, а ошибка попадает в журнал сервера.
Когда Advanced Memory включена, новый ответ персонажа может сменить сцену или точку зрения строкой-разделителем, например **, --- или . Тогда ответ сохраняется как отдельные сообщения того же персонажа, по одному на каждую часть.
- У каждой части своя аудитория. Decide who sees new messages, Hide from AI и шепоты действуют на каждую часть.
- Автор по-прежнему видит каждую часть. Если ему не положено ее видеть, скройте ее от него сами.
- Строка-разделитель остается в начале следующей за ней части. Разделитель внутри блока кода или блока HTML, например
<details>, не учитывается. - Размышления ответа показываются на первой части. Модели они обратно не отправляются, даже если Exclude Past Reasoning (исключить прошлые рассуждения) выключен.
- Сведения о сообщении, трекеры и результаты агентов относятся к последней части.
- Агенты переписывания, например Prose Guardian, переписывают каждую часть отдельно. Когда включен Hold Message Until Rewrite (не показывать сообщение до переписывания), каждая часть ждет своего переписывания. Если переписать одну часть не удалось, она остается в исходном виде.
- Автовоспроизведение речи читает все части по порядку.
- Свайп или повторная генерация части дает новую версию только этого сообщения. У более ранней части новая версия сохраняет текст до первого разделителя.
- Ответы Continue и Impersonate никогда не разделяются.
Воспоминания персонажей
Включите Character recollections, чтобы у каждого персонажа было собственное воспоминание о сцене. По умолчанию опция выключена.
- Каждый персонаж, который был в завершенной сцене, получает одно короткое воспоминание о ней, примерно 50–100 слов, от первого лица и своим голосом. Что он замечает, определяет его карточка. Narrator, ваша персона и персонажи, которые были в другом месте, воспоминаний не получают.
- Модель может использовать только то, что мог знать каждый персонаж. Воспоминание, которое копирует четыре слова подряд из того, чего его персонаж не мог знать, отбрасывается. От факта, пересказанного другими словами, защищают только инструкции.
Как сохраняется их точность:
- Воспоминание действует, только пока его персонаж может прочитать ровно то же, что мог, когда оно было написано. Если позже какое-то сообщение сцены скроют от него или покажут ему, сгенерированное воспоминание пишется заново. Отредактированное вами не попадает в промпты, пока вы не проверите и не сохраните его снова.
- Воспоминания новой сцены создаются тем же запросом, что и ее сводка. Если карточка персонажа для этого слишком велика, они создаются потом отдельными запросами. Персонаж, чья карточка занимает больше половины места, которое есть у вспомогательной модели для сцены, воспоминания не получает.
- Если включить опцию в чате, где у сцен уже есть сводки, воспоминания добавляются по одной сцене за раз; этот этап показывается как Writing character recollections. Сводки сцен никогда не меняются. Resume повторяет попытку для неудавшихся сцен.
- Если модель не написала ничего пригодного, у сцены остается пустое воспоминание, пока не изменится ее сводка или доступный для чтения текст. Вы можете написать его сами в Access memories for this chat.
Где они появляются и чего стоят:
- Воспоминания персонажей появляются только вместе с извлеченными сценами: под сводкой сцены и перед ее фрагментом, по одной строке на персонажа. В групповом чате, где персонажи отвечают по очереди, персонаж видит только свое воспоминание. В объединенном ответе показываются воспоминания каждого присутствующего персонажа, который помнит сцену, с его именем.
- Они учитываются в Summary and recall budget. Сначала идут сводки, затем воспоминания, затем фрагменты. Сначала сокращаются фрагменты, затем воспоминания убираются целиком. Воспоминание никогда не обрезается.
- Воспоминания персонажей никогда не попадают в Chat Summaries и никогда не определяют, какие сцены извлекаются.
- После изменения сводки сцены ее сгенерированные воспоминания пишутся заново не более чем для трех сцен после каждого ответа, начиная с самых новых. Prepare existing history, Re-scan scenes и Resume обрабатывают их все.
Редактирование и выключение:
- В Access memories for this chat откройте сцену, чтобы прочитать и отредактировать каждое воспоминание. Отредактированное воспоминание помечается как Manually edited и никогда не заменяется. Delete навсегда убирает воспоминание из промптов, но можно вписать новое.
- Если выключить опцию, сохраненные воспоминания остаются, но не попадают в промпты. Экспорт, импорт и ветки включают их.
В Game Mode
В чатах Game Mode Advanced Memory Recall включается так же, в Chat Settings → Memory Recall. Без нее сессия Game отправляет всю свою историю при каждом ходе, пока не достигнет предела контекста, поэтому длинная сессия расходует гораздо больше входных токенов на ход. С ней промпт остается в пределах Maximum allowed context before compression. Текущая сцена отправляется как несжатые сообщения, а более ранние сцены – как сводки вместе с моментами, которые выбирает извлечение.
- Game Master читает все воспоминания. Здесь нет выбора Narrator, диапазонов знаний, автоматического управления видимостью сообщений и воспоминаний персонажей.
- Размещение. Сводки и извлеченные сцены идут после истории, прямо перед инструкциями GM для хода. Инструкции и история перед ними не меняются от хода к ходу, поэтому подключение с кешированием промптов может использовать их повторно. Когда сцена заканчивается, один запрос не попадает в кеш.
- Источник. Сводки следуют истории в том виде, в каком вы ее видите: ваши правки сегментов учитываются, а командные теги GM не включаются.
- Сессии. Новая сессия сохраняет ваши настройки, но начинает собственный архив. GM по-прежнему получает сводки более ранних сессий.
- Модель решений. Необязательна и по умолчанию выключена. См. Необязательная модель решений. Она добавляет небольшие запросы к каждому ходу.
- Стоимость. Вспомогательная модель пишет одну сводку на сцену и раз в несколько ходов проверяет, сменилась ли сцена. Эти запросы невелики по сравнению с повторной отправкой длинной сессии.
- Предпросмотр промпта чата Game пока не показывает Advanced Memory. Используйте итоговый инспектор промпта.
Устранение неполадок
| Проблема | Решение |
| Memory Recall ничего не находит | Проверьте, что источник эмбеддингов настроен. Если у фрагментов стоит Embedding unavailable, задайте модель в разделе Semantic search (embeddings) или используйте встроенную модель. См. Настройка встроенной модели. |
| У фрагментов стоит Waiting for vector | Дайте им время. Отпечатки строятся после ответов. |
| Ничего связанного не находится | Поиск добавляет только тесно связанные воспоминания. Если не добавляется ничего, это нормально. |
| Поиск стал хуже после смены модели эмбеддингов | Нажмите значок перестроения в окне Memories for This Chat. |
| Сводки не генерируются | Чату нужен рабочий текстовый аккаунт. Chat Summary использует Summary Provider. Если не работает ни один, генерация пропускается. |
| Сводки от ИИ не появляются | Возможно, Review Agent Outputs ждет вашего одобрения. |
| Сводка застряла | Неудачные сводки повторяются после паузы. Запустите Backfill Summary (Roleplay) или Backfill (Conversation). |
| Сцена помечена Check who was there | Нажмите Fix или откройте ее в Access memories for this chat и нажмите Edit character access (изменить доступ персонажей). |
Другие проблемы описаны в руководстве Устранение неполадок в приложении Marinara Engine.
Справочник по Advanced Memory
Подробности, которые большинству читателей не нужны. Настройки выше работают и без этого раздела.
Как определяются сцены и составляются их сводки
- Определение сцен выполняется после сохранения главного ответа Roleplay. Когда наберется столько новых сообщений, сколько задает интервал, проверяющая модель получает все сообщения с последней проверки (не больше удвоенного интервала), сообщение, на котором закончилась последняя проверка, инструкции по сценам и формат ответа. Она возвращает точное сообщение, завершающее каждую сцену, или ничего, если сцена продолжается. Учитываются сообщения и персоны, и персонажей.
- При выключенном режиме решений очередная проверка использует общий вызов подходящего трекера после генерации, если позволяют видимость и бюджет контекста. Иначе вспомогательная модель делает собственный вызов. Неопределенный переход оставляет сцену открытой.
- Только обнаруженное окончание запускает фоновую подготовку сводки и индекса сообщений этой сцены. Раздел Chat Settings → Agent activity (настройки чата → активность агентов) показывает ход работы как Advanced Recall, даже когда обычные агенты выключены.
- Каждый запрос сводки сцены содержит инструкции для сводки, доступные сообщения сцены, применимые исправления по диапазонам и формат ответа JSON. Сцены, слишком большие для одного запроса, обрабатываются сохраняемыми порциями, а затем объединяются. Для сводки запрашиваются 2–3 абзаца. Стандартный промпт пишет сводку прошлых событий без раздела о текущей ситуации. Пользовательские промпты, выбранные в Summaries, по-прежнему действуют.
- Первичное определение сцен в истории может использовать основную или вспомогательную модель. Сводки всегда пишет вспомогательная.
- Каждая сводка также записывает, кто участвовал в сцене. Имя участника, которое отличается от карточки, например "Kaito" для Kaito Nakamura, засчитывается, если оно подходит ровно одному персонажу и не является именем вашей персоны. Общие имена, описания вроде "Kaito's sister" и имена с пометками вроде "(mentioned)" доступа не дают. Если вспомогательная модель не сказала, кто участвовал, сцена становится доступна всем персонажам, а в групповом чате помечается как Check who was there. Сцена, в которой были только вы, остается доступной только рассказчику. Сцены, сохраненные до появления проверки участников, остаются доступными только рассказчику, пока их не проверят Fix или Prepare existing history. Каждый ответ, завершающий сцену, также проверяет до трех таких сцен.
- В старом групповом чате, где персонажи отвечают по очереди, один раз подтвердите отсутствующие диапазоны знаний. Первая реплика персонажа не доказывает, что он знал все, что было до нее. Выбирайте реального персонажа как Narrator, только если он должен обходить ограничения участия. Глобальное Hide from AI лишь убирает сообщение из текущей истории. Advanced Memory все равно сканирует его, составляет по нему сводку и индексирует его. Начальные метки обрезают текущую историю.
Окно текущей истории и бюджет
- Приоритет в промпте: постоянные сводки (те, что включены всегда), затем сводки выбранных сцен, затем воспоминания персонажей, затем фрагменты сообщений. Целевой размер постоянных сводок – не более 70% бюджета. Вся память при необходимости может занять до 2 000 дополнительных токенов в пределах лимита контекста. Текущие сообщения не входят в постоянную долю.
- Когда исходящий промпт достигает предела, окно текущей истории для всех персонажей начинается с начала последней сцены, а затем снова растет. Последующие запросы после вызовов функций и бросков кубиков не учитываются. Отсечка видна в Mark as new start с выбранным All. Снимите флажок All, чтобы отменить ее. Личные начальные флаги продолжают действовать. Если незавершенная сцена или слишком большая постоянная сводка не помещается, запрос использует обозначенные исходные фрагменты и сохраняет последние сообщения. Сохраненные сводки и сообщения никогда не перезаписываются.
- Главная генерация сразу читает сохраненную память. Она никогда не ждет задачу связности.
- После главного ответа Advanced Memory добавляет Chat Summaries для архивных сообщений, которые еще не покрыты ни одной сводкой. В групповом чате, где персонажи отвечают по очереди, все, кто читал сцену, делят одну ее сводку.
- Когда активные сводки, которые читает один персонаж, превышают 70% бюджета, Updating continuity после ответа объединяет их в одну сводку примерно вдвое меньшего размера с помощью вспомогательной модели. Ответ этого никогда не ждет. Сводка, которая еще покрывает текущие сообщения, ждет, пока они не выйдут из окна текущей истории. Если объединенная сводка все еще больше этой доли, следующее обновление снова сокращает ее вдвое.
- Каждый запрос содержит только ваш Combine prompt (промпт объединения), одну строку, которая просит сократить текст примерно вдвое, и текст сводки. Если в тексте есть макросы, например
{{user}}, эта строка также просит оставить их в том виде, в котором они написаны. Текст, слишком длинный для одного запроса, отправляется частями, и каждая часть сокращается вдвое. Ответ вспомогательной модели может быть длиной в текст плюс 1024 токена, но не более 8196 токенов или значения Chat Summary → Maximum output size, если оно больше. - Сводки, которые читают разные персонажи, объединяются в одну, включая написанные вами. Приватные части остаются в своих разделах
{{#if char == "Name"}}…{{/if}}ровно для тех персонажей, которые их знали. Текст, который читает каждая группа персонажей, сокращается в отдельном запросе, без своего условия, и возвращается внутрь того же условия. Группы идут в том порядке, в котором каждая из них впервые появляется. Часть короче 64 токенов остается как есть, без запроса. Сводки с другими макросами остаются как есть. Если одних их хватает, чтобы заполнить долю персонажа, сократите их вручную или увеличьте бюджет. Замененные записи становятся неактивными, поэтому их можно снова включить. - Если ответ вспомогательной модели оборвался на своем лимите, оказался пустым, не стал короче или добавил макрос, либо если результат изменил бы круг тех, кто может читать какую-либо часть, сводки остаются как есть, а обновление все равно завершается. Те же сводки не отправляются снова, пока одна из них не изменится или пока вы не смените вспомогательную модель или Combine prompt. Resume processing повторяет обновление, которое остановилось с ошибкой.
- Промпт персонажа показывает диапазон сообщений и даты сводки только по сообщениям, которые этот персонаж видит. Narrator, когда отвечает один, читает каждую часть один раз.
Что возвращает извлечение
- Единый раздел Recalled Scenes содержит каждую сводку, за которой идет ее фрагмент, если он есть, под одним заголовком диапазона. Блок указывает текущий диапазон истории и номер последнего сообщения пользователя, чтобы прошлые события не путались с текущим ходом.
- Сцена извлекается, только когда все ее исходные сообщения находятся вне отправляемой текущей истории. Chat Summaries по диапазонам пропускаются, пока хоть одно покрытое сообщение остается в текущей истории. Они остаются сохраненными и включенными. Допустимые постоянные сводки важнее необязательного извлечения. Место для всех выбранных сводок резервируется до любых фрагментов.
- Иллюстрации и подписи изображений исключаются из извлеченного текста и новых входных данных для сводок. Читаемые текстовые вложения остаются.
- При выключенном режиме решений извлечение читает подготовленную память. У эмбеддинга запроса короткое ограничение по времени, после которого он заменяется текстовым поиском. Текстовый поиск придает больший вес характерным словам из ваших сообщений, отправленных с тех пор, как отвечающий персонаж говорил в последний раз. Больше всего весит упомянутое в них имя. Имена отвечающих персонажей и вашей персоны такого веса не получают, как и имя, которое встречается в большинстве воспоминаний. Вызова модели это не добавляет.
- Извлечение работает только для основной генерации Roleplay. Вызовы агентов, ручные перезапуски агентов и пробные прогоны его не запускают и не получают.
- Свайпы используют самую раннюю совместимую сохраненную память этого ответа. Свайп заново извлекает память, если с тех пор более ранняя сцена, которую мог вспомнить его персонаж, была сохранена, изменена, включена или выключена. Продолжение ответа сохраняет память, с которой он начался. Изменения истории, настроек доступа, сводок или воспоминаний делают сохраненные снимки недействительными.
- Правка, свайп, скрытие или удаление исходных сообщений вызывает повторную проверку затронутой памяти перед использованием. Историческая регенерация использует только источники до целевого ответа.
- Отчет о памяти показывает оценку размера контекста, выбранную границу и извлеченные источники. Если ничего не извлечено, он сообщает, что более ранних сцен не было, не осталось места или ничего не оказалось подходящим. Предпросмотр промпта использует подготовленную память и не запускает вызовы моделей. Итоговый инспектор промпта показывает, что ушло модели.
- Если у извлеченной сцены нет фрагмента, отчет объясняет причину: после сводок не осталось места или ни одно из ее сообщений нельзя процитировать.
Access memories for this chat
Откройте его, чтобы искать пронумерованные сводки сцен, смотреть их временные рамки и аудитории, менять Summary text (текст сводки) или читать оригиналы через Inspect source messages (проверить исходные сообщения). Можно отключать записи, нажать Reindex (переиндексировать), экспортировать и импортировать либо нажать Delete all memories (удалить всю память), чтобы начать подготовку заново, сохранив чат и настройки. Правки ручных сводок сохраняются и делают зависимую связность недействительной. Delete summary (удалить сводку) внизу сводки удаляет ее после того, как вы подтвердите сводку и аудиторию. Это действует и для старых записей Continuity (связность) и Ongoing scene (текущая сцена). Обычная подготовка не создает удаленные сводки заново.
Чтобы исключить сцену из извлечения, отключите ее запись памяти. Скрытие для отдельных персонажей по-прежнему определяет, у кого есть к ней доступ. Глобальное скрытие не удаляет ее из архива.
Кто может читать сцену
- Персонаж, присутствовавший в части сцены, получает доступ к ее памяти вместе с другими участниками, даже если некоторые сообщения от него скрыты. Сцена без доступных исходных сообщений недоступна. Упоминание отсутствующего персонажа не делает его участником.
- Новые сводки обозначают видимость сообщений, описывают общие события обычным текстом и используют
{{#if character == "Name"}}…{{/if}}для приватных разделов. Если изменится видимость или персонаж, для которого написана сводка, старая сводка не передается читателям с частичным доступом, пока вы снова не подготовите эту сцену (Fix делает это для каждой такой сцены) либо не проверите и не сохраните ее условия приватных разделов. Присоединение персонажа позже не считается изменением, кроме случая, когда ему видна только часть сцены. Старым сводкам после присоединения персонажа нужен один запуск Fix. Читатели с доступом ко всем исходным сообщениям по-прежнему могут извлечь сцену. Исправленный вручную текст никогда не переписывается незаметно. - Даты сцены общие для всех назначенных участников. Дословные фрагменты никогда не включают сообщения, скрытые от персонажа, и шепоты. Сводка с частями только для некоторых персонажей все равно получает фрагмент, который цитирует только то, что видел этот персонаж. Чтобы сообщение не попало в память персонажа, скройте его от этого персонажа.
- В объединенном групповом чате извлечение включает то, что помнит хотя бы один персонаж. Сцена или приватная часть, известная не каждому персонажу, помечается, например "known only to Kaito". Фрагмент цитирует только сообщения, которые видел каждый персонаж, помнящий сцену. Воспоминания, которых нет ни у одного персонажа, например сцены, доступные только рассказчику, не включаются. В групповых чатах, где персонажи отвечают по очереди, каждый персонаж извлекает только свои воспоминания.
Как работает извлечение с моделью решений
- Обычный поиск сначала отбирает до 24 сводок сцен или до значения Maximum recalled scenes, если оно больше. Список объединяет текстовый поиск и эмбеддинги. Эмбеддинги сравнивают каждую сцену не более чем с шестью вашими сообщениями, отправленными с тех пор, как отвечающий персонаж говорил в последний раз. Для первого ответа используется ваше последнее сообщение. Пока эмбеддинги не появятся почти у всех сцен, список отбирается по ранжированию обычного поиска. Сцена, идущая сразу после каждой из трех лучших, тоже получает место.
- Каждая сводка, которую оценивает модель, начинается с одной строки: диапазон сообщений, дата по сюжету и кто говорил. Модель выбирает подходящие сцены, затем оценивает до 12 лучше всего совпадающих исходных сообщений каждой выбранной сцены, чтобы выбрать ее фрагмент. Лучшее из выбранных сообщений становится центром, а остальные удлиняют фрагмент до значения Maximum messages per excerpt (максимум сообщений во фрагменте).
- Для каждого нового сообщения модель также проверяет, переходит ли история в другое место или время, переключается ли на персонажей, которые находятся где-то еще, и не идет ли она после строки-разделителя сцен. Модель видит три предыдущих сообщения и их авторов. При неуверенности сцена остается открытой. Корректное решение может не выбрать ничего.
- Ограничения по времени: каждый проход получает примерно столько, сколько модели нужно на один вопрос, умноженное на число вопросов, плюс еще половину, но не меньше 10 и не больше 25 секунд. Оба прохода вместе получают не больше 40 секунд на ответ. Если модель не успевает ответить на все вопросы, она оценивает меньше, начиная с лучших совпадений. Запросы короткие, поэтому ответы, пришедшие вовремя, все равно учитываются. Тем временем в ответе, как обычно, показывается Thinking….
- Если один запрос завершается ошибкой или тайм-аутом либо слишком велик, обычный поиск используется только для этих воспоминаний – после сцен, выбранных моделью, – и отчет это отмечает. Отсутствие подключения или проход без ответа полностью возвращают ранжирование списка отобранных и текстовый поиск. Вместо недоступных решений о сценах используется стандартная проверка сцен.
- Эмбеддинги в этом режиме тоже создаются. Новая сцена со сводкой получает их сразу. Старые сцены и сцены с эмбеддингами от другой модели получают их после ответов, понемногу за раз. Reindex создает их все сразу.
- Peek Prompt → Decision diagnostics → Advanced Memory activity (Peek Prompt → диагностика решений → активность Advanced Memory) показывает сохраненные результаты последнего извлечения и проверки сцен: модель, время, оценки, выбранные воспоминания или начала сцен, состояние резервного механизма и причину, по которой у сцены нет фрагмента. Хранится до 128 результатов. Это прошлая активность, а не прогноз. Открытие панели не запускает решения повторно. Совместимые свайпы используют сохраненный выбор. Продолжение выбирает воспоминания заново.
- Аккаунты модели решений у внешних сервисов получают ограниченные пакеты в пределах своего бюджета контекста. Управляемые модели Open-Jev используют измеренное время на вопрос, а аккаунт модели решений отвечает на все вопросы запроса вместе, поэтому каждый запрос учитывается один раз.
Размещение в пресете
Авторы пресетов могут размещать эти маркеры содержимого с помощью обычных настроек порядка секций, имени, роли и группы:
| Маркер | Содержимое |
chat_summary | Допустимые постоянные записи из Chat Summaries. |
current_scene_summary | Исходные фрагменты старой части текущей сцены. |
recalled_scenes | Все выбранные сводки сцен, за каждой идет ее фрагмент. |
Каждый маркер следует формату пресета XML, Markdown или None. Пустые компоненты ничего не выводят. Место задает первый включенный маркер. Компоненты без включенного маркера по запасному правилу выводятся один раз перед историей, поэтому старые пресеты работают. В выборе пресета предлагается только Recalled Scenes. Старый маркер recalled_messages – псевдоним, а включенный маркер recalled_scenes имеет приоритет. Когда Advanced Memory выключена, эти маркеры пусты.
Ограничения
Извлечение избирательно, а сводки могут терять нюансы. Храните важные исправления в исходной переписке или в редакторе сводок. Если эмбеддинги не работают, остаются ограниченный текстовый поиск и корректная связность. Архив никогда не вставляется целиком. Если инструкции или вложение не помещаются в предел, уменьшите их или увеличьте предел. Если резерв ответа не помещается в общий контекст модели, уменьшите размер ответа или выберите модель с большим контекстом. Advanced Memory останавливается, а не молча удаляет инструкции.
Пока расширенный режим включен, он управляет поиском, поэтому Standard Recall не вставляет вторую копию. Он также заменяет обычное расписание автоматических сводок Roleplay для этого чата. Выключение возвращает обычные настройки. Существующие лорбуки и скачиваемые агенты сохраняют собственные правила области действия.
Смежные руководства
- Настройка встроенной модели
- Подключение к провайдеру ИИ
- Режим Conversation: начало работы
- Режим Roleplay: начало работы
- Устранение неполадок в приложении Marinara Engine