聊天指南
宏(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}}