Автоменеджмент записей лорбука

Расширение для автоменеджмента записей чатового лорбука (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]*?), то есть вбирать в себя любые символы, в том числе и переносы строк.

Пример шаблона поиска:

1
2
3
4
<profile>
Name: {{name}}
Age: {{age}}
</profile>

Такой шаблон будет соответствовать подобным по форматированию блокам, например:

1
2
3
4
<profile>
Name: Baphometh
Age: NA
</profile>

Извлечение с помощью шаблона поиска можно воспринимать как запись переменных. В примере в переменную name запишется "Baphometh", а в переменную age - "NA".

Для шаблона поиска, помимо обычного режима, существует режим регекса, управляемый через Regex Mode. В этом режиме введенный в Input Schema текст будет восприниматься как регекс выражение, но плейсхолдеры продолжают использоваться как обычно. В таком режиме можно настроить более гибкие схемы, но нужно валидировать синтаксис и экранировать символы.

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

[CURRENT TIME CHANGED TO: {{time}}]

А локацию из записи вида:

[NEW LOCATION - {{location}}]

Output Schema - схема того, как будет выглядеть содержимое в лорбучной записи. Как и шаблоны поиска, поддерживает плейсхолдеры, которые из них и берет. Пример шаблона записи:

1
2
3
4
<info>
Time: {{time}}
Location: {{location}}
</info>

С учетом примера шаблонов поиска, приведенных выше, в записи будет захвачено время и название локации и отправлено в блок.

Конфиг записей

Entries Update Policy - правила того, как будут обновляться существующие переменные в записях. Есть два типа:

  1. Replace - переменные в записях будут замещаться. То есть, например, если шаблоном поиска был найдено соответствие для [NEW LOCATION - {{location}}], то переменная location в лорбучной записи будет заменена (при этом time останется неизменной). Это правило подходит для большинства юзкейсов.
  2. Append - переменные в записях будут дополняться. Например, задан такой шаблон поиска:
## Act: {{act name}}

И такой шаблон записи:

1
2
3
<acts list>
{{act name}}
</acts list>

При правиле Append при каждом объявлении нового акта в конец <acts list> будет добавляться название нового акта. Правило полезно для ведения длинных списков.

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

В полях Title, Primary Keys, Secondary Keys, Automation ID и Inclusion Group можно использовать плейсхолдеры, полученные из Input Schema. С помощью такого подхода можно с помощью одной группы создавать несколько записей и по-разному контролировать их активацию. Например, задан следующий шаблон поиска:

1
2
3
4
<profile>
Name: {{name}}
City: {{city}}
</profile>

При таком шаблоне в поле Title можно задать например {{name}} или {{name}}, {{city}}. Таким образом будут создаваться записи исходя из имени или имени и города.

Замечание: Title подразумевается быть уникальным. Для избежания конфликта имен лучше указывать дополнительную и в некоторых случаях избыточную информацию, например Person {{name}} или Profile {{name}}.

Кнопки

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

  1. Load LoreBook Snapshot - загрузить последний сохраненный в чате снапшот. Может быть полезным для отката лорбука. Заметка: поиск снапшота не учитывает скрытые сообщения.
  2. Save LoreBook Snapshot - сохранить текущее состояние лорбука чата в последнее сообщение. Полезно, если были сделаны ручные изменения в лорбук, которые надо зафиксировать сейчас.

Макросы

Расширение предоставляет доступ к записям лорбука чата через макросы. Макросы расширения глобальные, т.е. применимы везде, где применимы стандартные макросы. Шаблон макроса:

{{LoreManager::имя записи}}

Кратко о принципах работы

При смене чата

  1. Загружаются группы, встроенные в карточку персонажа (если такие имеются)
  2. Загружается лорбук, встроенный в текущий чат, или создается новый и встраивается в чат

При получении нового сообщения

  1. Подгружается лорбук, встроенный в текущий чат
  2. К содержимому сообщения применяются шаблоны поиска из активных групп, которые ищут соответствия
  3. Если были найдены соответствия - захватываются переменные в соответствии с плейсхолдерами шаблонов поиска
  4. Переменные соединяются с переменными соответствующих Title записей в лорбуке на основе выбранного правила (Replace или Append)
  5. Обновленная запись записывается в лорбук

Так же работает при получении новых сгенерированных блоков из ExtBlocks

При удалении сообщения

  1. Ищется последний снапшот лорбука в чате
  2. Загружается последний снапшот (если он есть)

При свайпе (до генерации)

  1. В свайпе (если он не новый) ищется встроенный снапшот лорбука. Если он найден - загружается он.
  2. Если снапшот не найден или свайп новый - ищется снапшот среди соседних свайпов
  3. Если снапшот найден среди соседних свайпов, то загружается последний снапшот до текущего сообщения (для избежания нелинейной модификации)
  4. Если не найден - текущий лорбук остается неизменным

Известные проблемы

  1. При переименовании лорбука чата могут происходить странные вещи. После переименования лорбука лучше обновить страницу
Edit Report
Pub: 24 Feb 2025 19:37 UTC
Edit: 14 Mar 2025 17:25 UTC
Views: 416