Макросы (CBS)
Скриптинг в фигурных скобках в любом тексте промпта.
Макросы: токены в двойных фигурных скобках, разворачиваемые в момент запроса. Они работают в полях персонажей, записях лорбуков, пресетах, приветствиях и тексте чата, и вкладываются друг в друга.
{{char}} smiles at {{user}}.
{{random::sunny::rainy::foggy}}
{{calc::1+2*3}}Аргументы разделяются двойным двоеточием. Неизвестные макросы разворачиваются в пустоту, а не в ошибку, поэтому опечатка никогда не ломает запрос.
Одинарные скобки макросами не являются. Одна пара доходит до модели как обычный текст и всплывает в ответах, это обычная причина случайных фигурных скобок. Поведение совпадает с SillyTavern, RisuAI и JanitorAI, поэтому их карточки работают без изменений.
{{user}} expands to your persona name
{user} stays literal text| Макрос | Разворачивается в |
|---|---|
{{char}} | Имя текущего персонажа (в группах — текущего говорящего). |
{{user}} | Имя вашей персоны. |
{{persona}} | Описание вашей персоны. |
{{description}} | Поле описания текущего персонажа. |
{{lastmessage}} | Текст последнего сообщения. |
{{time}} / {{date}} | Текущее время / дата в вашем языке и часовом поясе. |
random выбирает один аргумент заново при каждом развороте. pick делает выбор, который остаётся неизменным для разговора. roll бросает кости в d-нотации.
{{random::a::b::c}} {{pick::a::b::c}} {{roll::d20}}Броски и случайные значения инициализируются на каждую реплику: перегенерация повторно использует те же значения, поэтому свайпы не перебрасывают кости.
Переменные чата сохраняются для каждой ветки разговора. Глобальные переменные сохраняются во всех чатах. Задавайте их в любом тексте с поддержкой макросов или из триггерных скриптов.
{{setvar::mood::happy}}
{{getvar::mood}}
{{setglobalvar::visits::1}}Хранение в рамках ветки означает, что свайп на другую ветку восстанавливает состояние переменных этой ветки. Соседние ветки никогда не передают значения друг другу.
Блоки оборачивают содержимое. if выводит своё тело, когда условие истинно. each проходит по массивам с подстановкой в слоты. when добавляет построчные ветки else.
{{#if {{equal::{{getvar::mood}}::happy}}}}
{{char}} is in a great mood.
{{/if}}
{{#each {{array::red::green::blue}} item}}
Color: {{slot::item}}
{{/each}}pure и escape защищают буквальные фигурные скобки от разворота. Любой закрывающий тег закрывает самый внутренний открытый блок.
Макросы-комментарии исчезают до того, как их увидит модель, поэтому годятся для заметок внутри полей карточки. Чтобы показать синтаксис макроса буквально, используйте блоки pure.
{{// note to self, never sent to the model}}
{{#pure}}{{char}} stays literal here{{/pure}}