Ветки чата
Ветка – это копия чата до одного выбранного сообщения. С ее помощью можно попробовать другое развитие событий, а исходный чат останется нетронутым. В этом руководстве описано, как создавать, переключать, просматривать, переименовывать, удалять, экспортировать и импортировать ветки.
Все ветки одного чата собраны в группу. В списке чатов у чата остается одна строка со счетчиком веток. Если хотя бы у одной ветки группы записано, из какого чата она создана, нажмите на счетчик, чтобы раскрыть дерево; ветка без такой записи располагается прямо под чатом. Если такой записи нет ни у одной ветки группы (старые или импортированные ветки), группа остается одной строкой; ее ветки открываются из раздела Chat Branches (ветки чата). Ветка, созданная от другой ветки, вложена под нее, поэтому вы видите дерево. У каждой ветки есть отображаемое название и время последней активности, так что ветки можно подписать, например, "добрая концовка" и "темная концовка". Отображаемое название не связано с названием чата. Группа Game остается одной строкой, потому что сессии Game – это пронумерованные сессии, а не ветки.
Кнопка Branch from here
- Коснитесь сообщения (на компьютере – наведите на него курсор), чтобы показать панель действий сообщения.
- Нажмите Branch from here (создать ветку отсюда) – небольшую иконку ветвления.
Marinara копирует чат до этого сообщения включительно в новую ветку с названием New Branch. Позже ее можно переименовать.
Новая ветка:
- Сохраняет режим, персонажей, персону, пресет промпта и подключение.
- Копирует все сообщения со всеми свайпами (альтернативными вариантами ответа) и с тем, какой свайп был активен. См. Действия с сообщением.
- Копирует состояние трекеров и игры, привязанное к скопированным сообщениям.
- Сохраняет работу Advanced Memory в чате Roleplay. Воспоминания о более ранних, завершенных сценах остаются готовыми к извлечению. Сцена, от которой вы создаете ветку, снова становится текущей, а ее старые воспоминания отбрасываются. См. Memory Recall и сводки чата.
- Остается в той же папке чатов, что и исходный чат.
Дневные и недельные сводки не переносятся. Скользящие сводки, которые целиком лежат внутри скопированных сообщений, переносятся. Сводки, пересекающие точку разделения, и старые сводки без данных о сообщениях не переносятся, и в ветке они начинаются заново.
Если не получилось: в чате сцены кнопки Branch from here нет. Вместо нее у чатов сцен есть Clone from here (клонировать отсюда). См. Сцены: ответвление в режим Roleplay.
Раздел Chat Branches
Откройте Chat Settings (настройки чата) и разверните Chat Branches под Chat Name (название чата). В заголовке раздела видно число веток. На компьютере раздел можно вынести в отдельное окно. См. Обзор панели Chat Settings.
В разделе перечислены все ветки чата, а та, которую вы сейчас просматриваете, стоит первой. В каждой строке видно отображаемое название и время последнего изменения. Нажмите строку, чтобы переключиться на эту ветку.
Кнопки над списком:
| Кнопка | Что делает |
| Branch graph (граф веток) | Открывает окно графа. См. ниже. |
| JSONL, Text, Markdown, Story | Экспортируют ветку, которую вы сейчас просматриваете. См. Экспорт и импорт чатов. |
| Export a range (экспортировать диапазон) | Экспортирует часть чата. Нет в Game. См. Экспорт и импорт чатов. |
| Import (импорт) | Добавляет файл .jsonl как новую ветку. См. ниже. |
| Stats (статистика) | Открывает статистику чата для ветки, которую вы сейчас просматриваете. |
Просмотр графа веток
Граф показывает, где отделилась каждая ветка, – этого не видно в списке.
- Откройте Chat Branches и нажмите Branch graph. Повторное нажатие закрывает граф.
Граф открывается в отдельном окне, которое можно перемещать и менять в размере. На телефоне он открывается выдвижной панелью. Каждому чату из группы веток отведена одна строка в том же порядке, что и в списке чатов. Сообщения идут слева направо, по точке на сообщение.
- Серые точки – ваши сообщения, точки акцентного цвета – ответы персонажей, а пустые кольца – сообщения рассказчика или системы.
- Ветка показывает только собственные сообщения. Линия соединяет ее с сообщением, от которого она создана.
- Ветка без записанной точки разделения соединена с верхним чатом пунктирной линией, а в легенде стоит Fork not recorded. Так показываются старые ветки и ветки, чей чат-источник удален.
- Длинные участки без разделений сворачиваются в метку ··· N ···, где N – число скрытых сообщений. Нажмите ее, чтобы показать их. Expand all (развернуть все) раскрывает все участки, а Collapse long runs (свернуть длинные участки) сворачивает их снова.
- Точки разделения и последнее сообщение каждой ветки отмечены кольцом. Коснитесь кольца, наведите на него курсор или выберите его с клавиатуры, чтобы увидеть номер сообщения, автора и начало текста.
- Нажмите название или строку ветки, чтобы переключиться на нее. Ветка, которую вы сейчас просматриваете, выделена.
Граф обновляется, когда вы создаете ветку, переименовываете или удаляете чат, а также вскоре после появления новых сообщений.
Переименование ветки
- В Chat Branches нажмите кнопку с карандашом в строке ветки.
- В окне Rename Branch ("Set a display name for this chat branch.") введите новое название.
- Нажмите Rename (переименовать).
Пустое или неизмененное название игнорируется.
Удаление ветки
- В Chat Branches нажмите кнопку с корзиной в строке ветки.
- В окне Delete Branch ("Delete this branch? Messages will be lost.") нажмите Delete (удалить).
Удаляются только эта ветка и ее сообщения. Остальные ветки остаются.
Если веток две или больше, внизу раздела появляется кнопка Delete All Branches (удалить все ветки). Она спрашивает "Delete all N branches? This cannot be undone." Подтвердите кнопкой Delete All. Начать можно и из списка чатов: при удалении чата с ветками там предлагаются Delete This Branch Only и Delete All N branches. См. Управление списком чатов.
Импорт файла как новой ветки
- В Chat Branches нажмите Import.
- Выберите файл
.jsonl, экспортированный из SillyTavern или Marinara.
Marinara добавляет его новой веткой в группу текущего чата, показывает "Imported N messages as a new branch" и переключается на нее.
Как связаны ветки
Этот раздел – для тех, кто строит что-то на данных о ветках.
- Каждая ветка хранит свой непосредственный чат-источник и сообщение, на котором произошло разделение. Сохраняются и ID исходного сообщения, и ID его копии, поэтому интеграции могут найти границу разделения, хотя скопированные сообщения получают новые ID.
- Если создать ветку от ветки, родителем записывается эта ветка, а не исходный корневой чат.
- Как только хотя бы у одной ветки группы записан источник, нажатие на счетчик в списке чатов раскрывает дерево. Ветка с неизвестным источником располагается прямо под чатом. Группа без известного источника остается одной строкой, а ее ветки доступны из Chat Branches.
- Удаление родительского чата не меняет записанный источник его дочерних веток. Удаление всей группы удаляет каждый чат в ней.