Buscar documentação...

Comece a digitar para buscar documentação

Guia do chat

Macros (CBS)

Scripting de chaves dentro de qualquer texto de prompt.

Macros são tokens entre chaves duplas que se expandem no momento da requisição. Funcionam em campos de personagem, entradas de lorebook, presets, saudações e texto do chat, e podem ser aninhadas.

text
{{char}} smiles at {{user}}.
{{random::sunny::rainy::foggy}}
{{calc::1+2*3}}

Os argumentos são separados por dois-pontos duplos. Macros desconhecidas expandem para nada em vez de dar erro, então um erro de digitação nunca quebra uma requisição.

Chaves simples não são macros. Um par chega ao modelo como texto literal e aparece nas respostas, o motivo mais comum de chaves soltas. Igual ao SillyTavern, ao RisuAI e ao JanitorAI, então os cards deles funcionam sem alteração.

text
{{user}}   expands to your persona name
{user}     stays literal text

MacroExpande para
{{char}}O nome do personagem atual (grupos: o falante atual).
{{user}}O nome da sua persona.
{{persona}}A descrição da sua persona.
{{description}}O campo de descrição do personagem atual.
{{lastmessage}}O texto da mensagem mais recente.
{{time}} / {{date}}Hora / data atuais no seu idioma e fuso horário.

random escolhe um argumento novo a cada expansão. pick faz uma escolha que permanece estável na conversa. roll joga dados com notação d.

text
{{random::a::b::c}}   {{pick::a::b::c}}   {{roll::d20}}

Rolagens e sorteios usam uma semente por turno: gerar de novo reaproveita os mesmos valores, então deslizar não rola os dados outra vez.

As variáveis de chat persistem por ramificação da conversa. As variáveis globais persistem em todos os chats. Defina em qualquer texto que aceite macros ou a partir de scripts de gatilho.

text
{{setvar::mood::happy}}
{{getvar::mood}}
{{setglobalvar::visits::1}}

O armazenamento por ramificação significa que deslizar para outra ramificação restaura o estado das variáveis dela. Ramificações irmãs nunca vazam valores entre si.

Blocos envolvem conteúdo. if renderiza o corpo quando a condição é verdadeira. each percorre arrays com substituição de slots. when acrescenta ramos else por linha.

text
{{#if {{equal::{{getvar::mood}}::happy}}}}
{{char}} is in a great mood.
{{/if}}

{{#each {{array::red::green::blue}} item}}
Color: {{slot::item}}
{{/each}}

pure e escape protegem chaves literais da expansão. Qualquer tag de fechamento fecha o bloco aberto mais interno.

Macros de comentário somem antes de o modelo vê-las, então servem para anotações dentro dos campos do card. Use blocos pure para mostrar a sintaxe de macro literalmente.

text
{{// note to self, never sent to the model}}
{{#pure}}{{char}} stays literal here{{/pure}}