搜尋文件...

開始輸入以搜尋文件

聊天指南

巨集(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}}