Rechercher dans la doc...

Commencez à taper pour rechercher dans la documentation

Guide du chat

Macros (CBS)

Du scripting à accolades dans n'importe quel texte de prompt.

Les macros sont des jetons à double accolade développés au moment de la requête. Elles fonctionnent dans les champs de personnage, les entrées de lorebook, les préréglages, les salutations et le texte du chat, et elles s'imbriquent.

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

Les arguments sont séparés par des doubles deux-points. Les macros inconnues se développent en rien au lieu de lever une erreur, donc une faute de frappe ne casse jamais une requête.

Les accolades simples ne sont pas des macros. Une seule paire atteint le modèle comme texte littéral et ressort dans les réponses, cause habituelle des accolades parasites. Comportement identique à SillyTavern, RisuAI et JanitorAI, donc leurs cartes fonctionnent sans modification.

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

MacroSe développe en
{{char}}Le nom du personnage courant (chats de groupe : le locuteur courant).
{{user}}Le nom de votre persona.
{{persona}}La description de votre persona.
{{description}}Le champ description du personnage courant.
{{lastmessage}}Le texte du message le plus récent.
{{time}} / {{date}}Heure / date actuelles dans votre langue et fuseau horaire.

random tire un argument à neuf à chaque développement. pick fait un choix qui reste stable pour la conversation. roll lance des dés en notation d.

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

Les tirages et les aléas sont amorcés par tour : une regénération réutilise les mêmes valeurs, donc swiper ne relance pas les dés.

Les variables de chat persistent par branche de conversation. Les variables globales persistent dans tous les chats. Définissez-les dans tout texte acceptant des macros ou depuis des scripts déclencheurs.

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

Un stockage limité à la branche signifie que swiper vers une autre branche restaure l'état des variables de cette branche. Les soeurs ne se transmettent jamais de valeurs.

Les blocs encadrent du contenu. if rend son corps quand la condition est vraie. each boucle sur des tableaux avec substitution d'emplacements. when ajoute des branches else par ligne.

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

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

pure et escape protègent les accolades littérales du développement. Toute balise fermante ferme le bloc ouvert le plus interne.

Les macros de commentaire disparaissent avant que le modèle ne les voie, elles servent donc à annoter les champs de carte. Utilisez des blocs pure pour montrer la syntaxe des macros littéralement.

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