聊天指南
巨集(CBS)
在任意提示詞文字中的花括號腳本。
巨集是用雙大括號包起來的標記,會在請求時展開。它們可用於角色欄位、世界書項目、預設、開場白與聊天文字,而且可以巢狀使用。
text
{{char}} smiles at {{user}}.
{{random::sunny::rainy::foggy}}
{{calc::1+2*3}}參數之間用雙冒號分隔。未知的巨集會展開成空白而不是報錯,因此打錯字不會讓請求失敗。
單大括號不是巨集。一對單大括號會以字面文字送到模型並出現在回覆中,這是多餘大括號的常見來源。這與 SillyTavern、RisuAI 和 JanitorAI 一致,因此它們的卡片不必修改就能用。
text
{{user}} expands to your persona name
{user} stays literal text| 巨集 | 展開為 |
|---|---|
{{char}} | 當前角色名(群聊中為當前發言者)。 |
{{user}} | 你的人設名。 |
{{persona}} | 你的人設描述。 |
{{description}} | 當前角色的描述欄位。 |
{{lastmessage}} | 最近一則訊息的文字。 |
{{time}} / {{date}} | 按你的地區和時區的當前時間 / 日期。 |
random 每次展開都會重新挑一個參數。pick 做出的選擇在整段對話中維持不變。roll 用 d 記法擲骰。
text
{{random::a::b::c}} {{pick::a::b::c}} {{roll::d20}}擲骰與隨機會依輪次設定亂數種子:重新產生會沿用相同的值,因此滑動切換不會重新擲骰。
聊天變數會依對話分支保存。全域變數會在所有對話中保留。可以在任何支援巨集的文字中設定,也可以在觸發指令碼裡設定。
text
{{setvar::mood::happy}}
{{getvar::mood}}
{{setglobalvar::visits::1}}依分支儲存的意思是,滑到另一個分支時會還原該分支的變數狀態。同層分支之間的值不會互相外洩。
區塊用來包住內容。if 會在條件為真時繪製其內容。each 會走訪陣列並做欄位替換。when 提供以行為單位的 else 分支。
text
{{#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 區塊。
text
{{// note to self, never sent to the model}}
{{#pure}}{{char}} stays literal here{{/pure}}