Makros (CBS)
Skripting mit geschweiften Klammern in jedem Prompt-Text.
Syntax
Makros sind Tokens in doppelten geschweiften Klammern, die zur Anfragezeit expandieren. Sie funktionieren in Charakterfeldern, Lorebook-Einträgen, Presets, Begrüßungen und normalem Chattext, 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 zu einem Fehler, ein Tippfehler bricht also nie eine Anfrage.
Kern-Makros
| 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. |
Zufall
random wählt bei jeder Expansion neu, pick trifft eine Wahl, die für das Gespräch stabil bleibt, und roll würfelt mit d-Notation.
{{random::a::b::c}} {{pick::a::b::c}} {{roll::d20}}Würfe und Zufälle sind pro Runde geseedet: Ein Neugenerieren verwendet dieselben Werte, Swipen würfelt also nicht neu.
Variablen
Chat-Variablen gelten pro Gesprächszweig; globale Variablen gelten über alle Chats hinweg. Setze sie in jedem makrofähigen Text oder aus Trigger-Skripten.
{{setvar::mood::happy}}
{{getvar::mood}}
{{setglobalvar::visits::1}}Zweig-gebundene Speicherung heißt: Ein Swipe auf einen anderen Zweig stellt dessen Variablenstand wieder her; Geschwister übertragen nie Werte aufeinander.
Blockformen
Blöcke umschließen Inhalt: if rendert seinen Rumpf nur bei wahrer Bedingung, each iteriert mit Slot-Ersetzung über Arrays, und 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 Klammern vor der Expansion; jedes schließende Tag schließt den innersten offenen Block.
Kommentare und Literale
Kommentar-Makros verschwinden, bevor das Modell sie je sieht, ideal für Notizen in Kartenfeldern. Nutze pure-Blöcke, wenn du Makro-Syntax wörtlich zeigen willst.
{{// note to self, never sent to the model}}
{{#pure}}{{char}} stays literal here{{/pure}}