Автоменеджмент записей лорбука
Расширение для автоменеджмента записей чатового лорбука (ST 1.12.0+)
Ссылка - https://gitgud.io/Monblant/sillytavern-loremanager
О лорбуках - https://docs.sillytavern.app/usage/core-concepts/worldinfo/
Установка: Extensions → Install extension (сверху справа) → Вставить ссылку https://gitgud.io/Monblant/sillytavern-loremanager
Обновление: Extensions → Manage extensions (сверху справа) → скролл вниз → кнопка обновить рядом с LoreManager
Суть расширения
Ключевые понятия
Input Schemaили шаблон поиска - шаблон, с помощью которого ведется поиск соответствий в сообщениях для дальнейшей обработкиOutput Schemaили шаблон записи - шаблон, с помощью которого создается содержимое записей лорбука- Плейсхолдер - выражение вида
{{placeholder}}, которое можно применять в шаблонах и некоторых полях для захвата информации - Группа - набор шаблонов и правил, по которым информация извлекается из чата, преобразуется и отправляется в лорбук
- Снапшот лорбука - моментальная копия лорбука, хранимая вместе с сообщениями
Ключевые функции
- Автоматическое создание записей для лорбука, привязанного к чату, на основе шаблонов (
Input SchemaиOutput Schema) - Автоматическое создание лорбука для чата (если еще не создан), управление его состоянием через снапшоты
- Динамическое обновление существующих записей чатового лорбука на основе шаблонов, заданных правил и содержимого новых сообщений
- Встраивание шаблонов в карточку персонажа
Применение
- Накопление информации о лоре и окружении в виде профилей/описаний/блоков и т.д.
- Ведение динамических саммари блоков без надобности допвызовов
- Гибкое управление присутствием записей в контексте по сравнению с постоянными инжектами
- Создавать карты со встроенными правилами извлечения информации
- При удалении сообщений откатывать состояние лорбука без надобности его редактировать
Настройки
Общие
Enable LoreManager - управляет состоянием расширения.
LoreManager Preset - отвечает за активный пресет. В пресетах содержится набор групп.
Preset Groups - группы активного пресета .
Embedded Groups - группы, встроенные в текущую карточку.
Редактор групп
Group Name - имя группы, должно быть уникальным.
Input Schema - шаблон поиска, согласно которому будет производиться поиск информации в сообщениях. В обычном режиме в шаблонах поиска могут (и должны) использоваться плейсхолдеры вида {{placeholder}}, которые захватывают информацию, необходимую для дальнейшей обработки. В большинстве случаев при поиске плейсхолдер будет соответствовать регексовой группе вида ([\s\S]*?), то есть вбирать в себя любые символы, в том числе и переносы строк.
Пример шаблона поиска:
Такой шаблон будет соответствовать подобным по форматированию блокам, например:
Извлечение с помощью шаблона поиска можно воспринимать как запись переменных. В примере в переменную name запишется "Baphometh", а в переменную age - "NA".
Для шаблона поиска, помимо обычного режима, существует режим регекса, управляемый через Regex Mode. В этом режиме введенный в Input Schema текст будет восприниматься как регекс выражение, но плейсхолдеры продолжают использоваться как обычно. В таком режиме можно настроить более гибкие схемы, но нужно валидировать синтаксис и экранировать символы.
Шаблонов поиска для одной группы может быть несколько, все они будут использоваться одновременно. Таким образом можно настроить захват информации из разнородных записей в один вывод, например время захватывать из записи вида:
А локацию из записи вида:
Output Schema - схема того, как будет выглядеть содержимое в лорбучной записи. Как и шаблоны поиска, поддерживает плейсхолдеры, которые из них и берет. Пример шаблона записи:
С учетом примера шаблонов поиска, приведенных выше, в записи будет захвачено время и название локации и отправлено в блок.
Конфиг записей
Entries Update Policy - правила того, как будут обновляться существующие переменные в записях. Есть два типа:
Replace- переменные в записях будут замещаться. То есть, например, если шаблоном поиска был найдено соответствие для[NEW LOCATION - {{location}}], то переменнаяlocationв лорбучной записи будет заменена (при этомtimeостанется неизменной). Это правило подходит для большинства юзкейсов.Append- переменные в записях будут дополняться. Например, задан такой шаблон поиска:
И такой шаблон записи:
При правиле Append при каждом объявлении нового акта в конец <acts list> будет добавляться название нового акта. Правило полезно для ведения длинных списков.
Остальные настройки в конфиге записей соответствуют тому, что можно встретить в настройках лорбука. Эти настройки будут применены для каждой записи, созданной с помощью группы.
В полях Title, Primary Keys, Secondary Keys, Automation ID и Inclusion Group можно использовать плейсхолдеры, полученные из Input Schema. С помощью такого подхода можно с помощью одной группы создавать несколько записей и по-разному контролировать их активацию. Например, задан следующий шаблон поиска:
При таком шаблоне в поле Title можно задать например {{name}} или {{name}}, {{city}}. Таким образом будут создаваться записи исходя из имени или имени и города.
Замечание: Title подразумевается быть уникальным. Для избежания конфликта имен лучше указывать дополнительную и в некоторых случаях избыточную информацию, например Person {{name}} или Profile {{name}}.
Редактор записей
Редактор записей позволяет управлять всеми записями чатового лорбука. Доступ к нему можно получить через меню "волшебной палочки" (Edit LoreBook entries).
Редактор записей карточки
Аналогичен стандартному редактору записей, но используется для управления записями лорбука, встроенными в гритинг персонажа (начальные состояния). Доступ к нему так же можно получить через меню "волшебной палочки" (Edit Card's LoreBook entries).
Кнопки
В меню "волшебной палочки" есть пять вспомогательных кнопок:
Edit Card's LoreBook entries- открывает редактор для управления лорбуками для каждого из гритингов персонажа.Edit LoreBook entries- открывает всплывающее окно для просмотра и управления всеми записями лорбука для текущего чата.Load LoreBook Snapshot- загружает сохраненный снапшот лорбука из чата. Снапшоты делаются при каждом изменении (внутри расширения) и сохраняются вместе с сообщениями.Save LoreBook Snapshot- сохраняет текущий лорбук чата в последнее сообщение. Полезно, если вам нужно сохранить ручные изменения в лорбуке.Reset Active LoreBook- сбрасывает текущий активный лорбук чата к состоянию, определенному в карточке персонажа для текущего гритинга.
Макросы
Расширение предоставляет доступ к записям лорбука чата через макросы. Макросы расширения глобальные, т.е. применимы везде, где применимы стандартные макросы. Шаблон макроса:
{{LoreManager::имя записи}}
Кратко о принципах работы
При смене чата
- Загружаются группы, встроенные в карточку персонажа (если такие имеются)
- Загружается лорбук, встроенный в текущий чат, или создается новый и встраивается в чат
При получении нового сообщения
- Подгружается лорбук, встроенный в текущий чат
- К содержимому сообщения применяются шаблоны поиска из активных групп, которые ищут соответствия
- Если были найдены соответствия - захватываются переменные в соответствии с плейсхолдерами шаблонов поиска
- Переменные соединяются с переменными соответствующих
Titleзаписей в лорбуке на основе выбранного правила (ReplaceилиAppend) - Обновленная запись записывается в лорбук
Так же работает при получении новых сгенерированных блоков из ExtBlocks
При удалении сообщения
- Ищется последний снапшот лорбука в чате
- Загружается последний снапшот (если он есть)
При свайпе (до генерации)
- В свайпе (если он не новый) ищется встроенный снапшот лорбука. Если он найден - загружается он.
- Если снапшот не найден или свайп новый - ищется снапшот среди соседних свайпов
- Если снапшот найден среди соседних свайпов, то загружается последний снапшот до текущего сообщения (для избежания нелинейной модификации)
- Если не найден - текущий лорбук остается неизменным