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

  1. Откройте чат и нажмите Chat Settings (настройки чата).
  2. Найдите раздел Memory Recall.
  3. Включите Enable Memory Recall.

Это настройка отдельного чата. Изначально она включена в чатах Conversation, а также в чатах Roleplay и Game, где есть активная сцена. В остальных чатах она изначально выключена. Если ее выключить, поиск прекращается, но сохраненные воспоминания не удаляются.

Если не получилось: функции Memory Recall нужен источник эмбеддингов (следующий раздел). Если вы его не задали, Marinara использует свою встроенную модель, поэтому большинству этот раздел можно пропустить. Проверьте, что раздел Memory Recall вообще появляется. В некоторых контейнерных сборках, известных как Marinara Lite, функция выключена полностью.

Выбор источника эмбеддингов (необязательно)

Функции Memory Recall нужна модель, которая строит отпечатки. Если ничего не задать, Marinara использует встроенную модель эмбеддингов (см. ниже) – для большинства это самый простой вариант. Чтобы вместо нее использовать сервис, задайте его в аккаунте, а не в настройках чата.

Перед началом: нужен аккаунт, который предоставляет эмбеддинги. См. Подключение к провайдеру ИИ.

  1. Откройте Connections (подключения) и откройте аккаунт для редактирования.
  2. Найдите раздел Semantic search (embeddings) (семантический поиск).
  3. Введите название модели эмбеддингов, например text-embedding-3-small.
  4. Необязательно: задайте Embedding endpoint URL (адрес эндпоинта эмбеддингов), чтобы изменить адрес.
  5. Необязательно: выберите в поле Embedding provider (провайдер эмбеддингов) другой аккаунт, чтобы позаимствовать его ключ и адрес. Same as this provider (как у этого провайдера) оставляет собственные ключ и адрес этого аккаунта.

Некоторые сервисы эмбеддинги не предлагают. Тогда Marinara просит выбрать отдельный аккаунт для эмбеддингов, например совместимый с OpenAI, Google или встроенную модель.

Чтобы использовать один источник везде, выберите его в пункте Embeddings (эмбеддинги) в Connections → Defaults (подключения → по умолчанию). Его используют аккаунты, у которых нет собственной модели эмбеддингов. Собственная настройка аккаунта по-прежнему важнее.

Если нет ни аккаунта для эмбеддингов, ни значения Embeddings по умолчанию, Marinara переходит на встроенную модель эмбеддингов. Она скачивается один раз и работает на вашем компьютере без ключа API. См. Настройка встроенной модели.

Тот же параметр отвечает и за семантический поиск в лорбуках, так что его достаточно настроить один раз для обеих функций.

Просмотр сохраненных воспоминаний и управление ими

  1. Откройте Chat Settings → Memory Recall.
  2. Нажмите Access memories for this chat. Откроется окно Memories for This Chat. Если включена Advanced Memory, просмотр остается внутри выдвижной панели Roleplay.

В окне видно число сохраненных фрагментов памяти и примерный объем в токенах. На карточке каждого фрагмента показаны диапазон дат, число сообщений, время создания и статус.

СтатусЗначение
VectorizedОтпечаток построен и готов к поиску.
Waiting for vectorОтпечаток еще создается.
Embedding unavailableНи один источник эмбеддингов не смог его построить.

На панели инструментов есть значки экспорта, импорта, перестроения и очистки воспоминаний.

Как ведет себя Memory Recall

Chat Summary (Roleplay)

Chat Summary сжимает старые сообщения в короткие пересказы – записи сводки. Каждую запись может написать ИИ или вы сами, и каждую можно включить или выключить. Функция есть только в чатах Roleplay.

Откройте Chat Settings и разверните раздел Chat Summary под разделом Lorebooks. На компьютере его можно вынести в отдельное окно. См. Обзор панели Chat Settings.

Создание записи сводки

  1. В блоке Summary Scope выберите Last, чтобы взять самые свежие сообщения, или Range, чтобы задать диапазон сообщений.
  2. Нажмите 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 поддерживает сводки в актуальном состоянии по ходу чата.

  1. Включите Enabled.
  2. В поле Every задайте, сколько сообщений пользователя проходит между сводками. По умолчанию 5, диапазон – от 1 до 200.
  3. Необязательно: нажмите Backfill Summary, чтобы составить сводки для старого чата, у которого их никогда не было. Появится полоса прогресса. Нажмите Stop, чтобы прервать работу раньше.

Промпт сводки, провайдер и размер ответа

Параметры отображения

Этот хвост ограничивает сообщения, уже охваченные сводкой. Охваченное сводкой сообщение старше хвоста сразу исключается из промпта, еще до того, как его скроет следующая сводка. Более старое сообщение, которое еще не охвачено ни одной сводкой, по-прежнему отправляется, потому что иначе оно было бы потеряно. Если такие сообщения есть, Chat Summary показывает их число под полем Recent message tail. Нажмите Backfill Summary, чтобы составить для них сводки.

Объединенные групповые чаты

В объединенном групповом чате один ответ говорит за всех персонажей. Часть записи, написанная для определенных персонажей, например {{#if char == "Kaito"}}…{{/if}}, сохраняется для всех персонажей, к которым она относится, и помечается списком тех, кому она известна, например "known only to Kaito". Части, которые получает только Narrator (рассказчик) в Advanced Memory, не включаются. В групповых чатах, где персонажи отвечают по очереди, и в чатах с одним персонажем каждый персонаж читает записи так же, как раньше, а Narrator читает каждую часть.

Automatic Summarization (Conversation)

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

Редактирование сводок

  1. Откройте чат Conversation и нажмите Chat Settings.
  2. Найдите раздел Automatic Summarization.
  3. Нажмите Edit Summaries.

В окне сначала идут недели, а затем дни, еще не собранные в неделю. Разверните запись, чтобы изменить текст Summary и строки Key Details.

Выбор часа, когда заканчивается день

Заполнение пропущенных дней

День может остаться без сводки, например после импорта старого чата. В окне в панели Missing Summaries есть кнопка Backfill. Она повторяет попытку для не более чем 14 недавних дней за раз. Смена модели для сводок не переписывает уже существующие дневные и недельные записи.

Advanced Memory Recall (Roleplay и Game Mode)

Advanced Memory Recall – необязательный режим, который вместе управляет окном текущей истории, сводками для связности и старыми фрагментами. Он делит чат на сцены, составляет сводку каждой завершенной сцены и для каждого ответа извлекает сцены и точные сообщения, которые для него важны. Он работает без переключателя Agents и не требует скачиваемого агента.

Включение

  1. Откройте Chat Settings → Memory Recall.
  2. Включите Advanced Memory Recall. Также можно включить Automatic context and memory handling (автоматическое управление контекстом и памятью) под разделом Agents в мастере настройки Roleplay.
  3. Задайте Maximum allowed context before compression (tokens) (максимально допустимый контекст до сжатия) в пределах контекстного окна вашей модели.
  4. Задайте Summary and recall budget (tokens) (бюджет сводок и извлечения) в пределах этого предела.
  5. Необязательно: выберите 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 выходных токенов, чтобы оставить место для рассуждений.

Подготовка существующей истории

  1. Нажмите Prepare existing history. Перед началом показываются выбранные модели.
  2. Подождите. Подготовка обрабатывает старую историю пакетами и показывает текущий этап.
  3. Нажмите 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:

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.

  1. Введите номера первого и последнего сообщения для проверки. Изначально выбрана текущая сцена.
  2. Нажмите Re-scan (просканировать заново).

Advanced Memory заново находит смены сцен в этих сообщениях и пишет сводки для изменившихся сцен. Если включено Use Decision model, она использует модель решений, иначе вспомогательную модель. Сцены за пределами диапазона сохраняют свои границы и сводки. Если повторное сканирование изменило бы отредактированную вами сводку, оно останавливается и называет эту сцену.

Необязательная модель решений

Модель решений – это небольшая модель, которая отвечает на вопросы "да или нет". По умолчанию она выключена, а выбор сохраняется отдельно для каждого чата Roleplay.

  1. Включите Use Decision model в Advanced Memory.
  2. Выберите модель в списке Memory Decision connection (подключение модели решений для памяти). В группе Built-in model (встроенная модель) он показывает те же модели, что и глобальная настройка Decision model (модель решений). Модель, которая пока не может отвечать, показана серой с указанием причины, а остановленная запускается, когда к ней обращаются. В группе Connections перечислены ваши сохраненные аккаунты модели решений. См. Модели решений.

Этот выбор не зависит от глобальной настройки модели решений по умолчанию.

Модель определяет границы сцен при подготовке истории и проверке текущих сцен. Перед новым ответом она выбирает воспоминания в два прохода. Подробности – в разделе Как работает извлечение с моделью решений.

Аккаунты внешних сервисов получают текст недавнего разговора и отобранные для оценки сводки или сообщения и могут брать плату за несколько запросов на один ответ. Перед отправкой кандидатов поиск отфильтровывает их по доступу персонажей.

Кто видит новые сообщения

В групповом чате Roleplay, где персонажи отвечают по очереди, Advanced Memory может решать, какие персонажи видят каждое новое сообщение. Тогда вам не нужно скрывать каждое сообщение от персонажа, который покинул сцену. В объединенных групповых чатах и в чатах с одним персонажем этой опции нет.

  1. Включите Decide who sees new messages в Advanced Memory.

Каждое новое сообщение, ваше или персонажа, скрывается от персонажей, которых нет в сцене. Для этого используется то же скрытие Hide from AI (скрыть от ИИ) для отдельных персонажей, что и у кнопки на самом сообщении, поэтому значок перечеркнутого глаза показывает, кому сообщение не видно. Решение по вашему сообщению принимается сразу после его отправки. Решение по предыдущим сообщениям принимается до того, как ответит следующий персонаж.

Когда Advanced Memory включена, новый ответ персонажа может сменить сцену или точку зрения строкой-разделителем, например **, --- или . Тогда ответ сохраняется как отдельные сообщения того же персонажа, по одному на каждую часть.

Воспоминания персонажей

Включите Character recollections, чтобы у каждого персонажа было собственное воспоминание о сцене. По умолчанию опция выключена.

Как сохраняется их точность:

Где они появляются и чего стоят:

Редактирование и выключение:

В Game Mode

В чатах Game Mode Advanced Memory Recall включается так же, в Chat Settings → Memory Recall. Без нее сессия Game отправляет всю свою историю при каждом ходе, пока не достигнет предела контекста, поэтому длинная сессия расходует гораздо больше входных токенов на ход. С ней промпт остается в пределах Maximum allowed context before compression. Текущая сцена отправляется как несжатые сообщения, а более ранние сцены – как сводки вместе с моментами, которые выбирает извлечение.

Устранение неполадок

ПроблемаРешение
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

Подробности, которые большинству читателей не нужны. Настройки выше работают и без этого раздела.

Как определяются сцены и составляются их сводки

Окно текущей истории и бюджет

Что возвращает извлечение

Access memories for this chat

Откройте его, чтобы искать пронумерованные сводки сцен, смотреть их временные рамки и аудитории, менять Summary text (текст сводки) или читать оригиналы через Inspect source messages (проверить исходные сообщения). Можно отключать записи, нажать Reindex (переиндексировать), экспортировать и импортировать либо нажать Delete all memories (удалить всю память), чтобы начать подготовку заново, сохранив чат и настройки. Правки ручных сводок сохраняются и делают зависимую связность недействительной. Delete summary (удалить сводку) внизу сводки удаляет ее после того, как вы подтвердите сводку и аудиторию. Это действует и для старых записей Continuity (связность) и Ongoing scene (текущая сцена). Обычная подготовка не создает удаленные сводки заново.

Чтобы исключить сцену из извлечения, отключите ее запись памяти. Скрытие для отдельных персонажей по-прежнему определяет, у кого есть к ней доступ. Глобальное скрытие не удаляет ее из архива.

Кто может читать сцену

Как работает извлечение с моделью решений

Размещение в пресете

Авторы пресетов могут размещать эти маркеры содержимого с помощью обычных настроек порядка секций, имени, роли и группы:

МаркерСодержимое
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 для этого чата. Выключение возвращает обычные настройки. Существующие лорбуки и скачиваемые агенты сохраняют собственные правила области действия.

Смежные руководства