マクロ(CBS)
あらゆるプロンプトテキストで使える波括弧スクリプト。
マクロは二重波括弧のトークンで、リクエスト時に展開されます。キャラクターのフィールド、ロアブックのエントリ、プリセット、あいさつ、チャットの文中で使え、入れ子にもできます。
{{char}} smiles at {{user}}.
{{random::sunny::rainy::foggy}}
{{calc::1+2*3}}引数は二重コロンで区切ります。未知のマクロはエラーにならず何もない状態に展開されるため、打ち間違いでリクエストが壊れることはありません。
波括弧1つはマクロではありません。1組はそのままの文字としてモデルに届き、返信に現れます。これが余計な波括弧の主な原因です。SillyTavern、RisuAI、JanitorAI と同じ挙動なので、それらのカードはそのまま動きます。
{{user}} expands to your persona name
{user} stays literal text| マクロ | 展開結果 |
|---|---|
{{char}} | 現在のキャラクター名(グループチャットでは現在の話者)。 |
{{user}} | あなたのペルソナ名。 |
{{persona}} | あなたのペルソナの説明。 |
{{description}} | 現在のキャラクターの説明フィールド。 |
{{lastmessage}} | 直近メッセージの本文。 |
{{time}} / {{date}} | あなたのロケールとタイムゾーンでの現在時刻・日付。 |
random は展開のたびに引数から1つを選び直します。pick は会話中は変わらない選択を行います。roll は d 記法でダイスを振ります。
{{random::a::b::c}} {{pick::a::b::c}} {{roll::d20}}ロールとランダムはターンごとにシードされます:再生成では同じ値が再利用されるため、スワイプでダイスを振り直すことはありません。
チャット変数は会話のブランチごとに保持されます。グローバル変数はすべてのチャットで保持されます。マクロが使える任意のテキストや、トリガースクリプトから設定できます。
{{setvar::mood::happy}}
{{getvar::mood}}
{{setglobalvar::visits::1}}ブランチ単位の保存とは、別のブランチにスワイプするとそのブランチの変数状態が復元されるという意味です。兄弟同士で値が漏れることはありません。
ブロックは内容を包みます。if は条件が真のとき中身を描画します。each は配列を回して差し込みます。when は行単位の else 分岐を加えます。
{{#if {{equal::{{getvar::mood}}::happy}}}}
{{char}} is in a great mood.
{{/if}}
{{#each {{array::red::green::blue}} item}}
Color: {{slot::item}}
{{/each}}pure と escape は波括弧の文字を展開から守ります。閉じタグはどれでも、最も内側の開いているブロックを閉じます。
コメントのマクロはモデルに届く前に消えるため、カードのフィールド内のメモに使えます。マクロの記法をそのまま見せるには pure ブロックを使ってください。
{{// note to self, never sent to the model}}
{{#pure}}{{char}} stays literal here{{/pure}}