Macros (CBS)
Scripting con llaves dentro de cualquier texto de prompt.
Las macros son tokens entre llaves dobles que se expanden al enviar la petición. Funcionan en los campos de personaje, las entradas de lorebook, los presets, los saludos y el texto del chat, y se pueden anidar.
{{char}} smiles at {{user}}.
{{random::sunny::rainy::foggy}}
{{calc::1+2*3}}Los argumentos se separan con dos puntos dobles. Las macros desconocidas se expanden a nada en lugar de dar error, así que una errata nunca rompe una petición.
Las llaves simples no son macros. Un solo par llega al modelo como texto literal y aparece en las respuestas, la causa habitual de las llaves sueltas. Coincide con SillyTavern, RisuAI y JanitorAI, así que sus tarjetas funcionan sin cambios.
{{user}} expands to your persona name
{user} stays literal text| Macro | Se expande a |
|---|---|
{{char}} | El nombre del personaje actual (en grupos, el hablante actual). |
{{user}} | El nombre de tu persona. |
{{persona}} | La descripción de tu persona. |
{{description}} | El campo descripción del personaje actual. |
{{lastmessage}} | El texto del mensaje más reciente. |
{{time}} / {{date}} | Hora / fecha actuales en tu idioma y zona horaria. |
random elige un argumento nuevo en cada expansión. pick hace una elección que se mantiene estable durante la conversación. roll tira dados con notación d.
{{random::a::b::c}} {{pick::a::b::c}} {{roll::d20}}Las tiradas y los aleatorios usan una semilla por turno: regenerar reutiliza los mismos valores, así que deslizar no vuelve a tirar los dados.
Las variables de chat persisten por rama de conversación. Las variables globales persisten en todos los chats. Defínelas en cualquier texto que admita macros o desde scripts de disparadores.
{{setvar::mood::happy}}
{{getvar::mood}}
{{setglobalvar::visits::1}}El almacenamiento por rama implica que deslizar a otra rama restaura el estado de variables de esa rama. Las ramas hermanas nunca se filtran valores entre sí.
Los bloques envuelven contenido. if renderiza su cuerpo cuando la condición es verdadera. each recorre arrays con sustitución de ranuras. when añade ramas else por línea.
{{#if {{equal::{{getvar::mood}}::happy}}}}
{{char}} is in a great mood.
{{/if}}
{{#each {{array::red::green::blue}} item}}
Color: {{slot::item}}
{{/each}}pure y escape protegen las llaves literales de la expansión. Cualquier etiqueta de cierre cierra el bloque abierto más interno.
Las macros de comentario desaparecen antes de que el modelo las vea, así que sirven para dejar notas dentro de los campos de una tarjeta. Usa bloques pure para mostrar la sintaxis de macro de forma literal.
{{// note to self, never sent to the model}}
{{#pure}}{{char}} stays literal here{{/pure}}