Makros (CBS)
Skripting mit geschweiften Klammern in jedem Prompt-Text.
Makros sind Token in doppelten geschweiften Klammern, die zur Anfragezeit expandiert werden. Sie funktionieren in Charakterfeldern, Lorebook-Einträgen, Presets, Begrüßungen und Chat-Text, und sie lassen sich verschachteln.
{{char}} smiles at {{user}}.
{{random::sunny::rainy::foggy}}
{{calc::1+2*3}}Argumente werden mit doppelten Doppelpunkten getrennt. Unbekannte Makros expandieren zu nichts, statt einen Fehler zu erzeugen, ein Tippfehler zerstört also nie eine Anfrage.
Einfache geschweifte Klammern sind keine Makros. Ein Paar erreicht das Modell als reiner Text und taucht in Antworten auf, die übliche Ursache verirrter Klammern. Entspricht SillyTavern, RisuAI und JanitorAI, deren Karten also unverändert funktionieren.
{{user}} expands to your persona name
{user} stays literal text| Makro | Expandiert zu |
|---|---|
{{char}} | Der Name des aktuellen Charakters (Gruppenchats: der aktuelle Sprecher). |
{{user}} | Der Name deiner Persona. |
{{persona}} | Die Beschreibung deiner Persona. |
{{description}} | Das Beschreibungsfeld des aktuellen Charakters. |
{{lastmessage}} | Der Text der letzten Nachricht. |
{{time}} / {{date}} | Aktuelle Zeit / Datum in deiner Sprache und Zeitzone. |
random wählt bei jeder Expansion ein Argument neu. pick trifft eine Wahl, die für die Unterhaltung stabil bleibt. roll würfelt in d-Notation.
{{random::a::b::c}} {{pick::a::b::c}} {{roll::d20}}Würfe und Zufallswerte sind je Zug fest: ein Neuerzeugen nutzt dieselben Werte, Swipen würfelt also nicht neu.
Chat-Variablen bleiben je Unterhaltungszweig erhalten. Globale Variablen bleiben über alle Chats hinweg erhalten. Sie lassen sich in jedem makrofähigen Text oder aus Trigger-Skripten setzen.
{{setvar::mood::happy}}
{{getvar::mood}}
{{setglobalvar::visits::1}}Die Speicherung je Zweig bedeutet, dass ein Swipe in einen anderen Zweig dessen Variablenzustand wiederherstellt. Geschwister geben nie Werte aneinander weiter.
Blöcke umschließen Inhalt. if rendert seinen Rumpf, wenn die Bedingung wahr ist. each iteriert über Arrays mit Slot-Ersetzung. when ergänzt zeilenbasierte else-Zweige.
{{#if {{equal::{{getvar::mood}}::happy}}}}
{{char}} is in a great mood.
{{/if}}
{{#each {{array::red::green::blue}} item}}
Color: {{slot::item}}
{{/each}}pure und escape schützen wörtliche geschweifte Klammern vor der Expansion. Jedes schließende Tag schließt den innersten offenen Block.
Kommentar-Makros verschwinden, bevor das Modell sie sieht, sie eignen sich also für Notizen in Kartenfeldern. pure-Blöcke nutzen, um Makro-Syntax wörtlich zu zeigen.
{{// note to self, never sent to the model}}
{{#pure}}{{char}} stays literal here{{/pure}}