宏(Macros)

已发布 2026-02-07

如何使用

宏(Macros)可以动态注入一些内容在角色定义、预设、世界书、正则及其他所有生成提示词的地方。

例如我们在角色 宋毅 定义中可以写:

{{char}} 是宋氏集团的总裁。    // 宋毅 是宋氏集团的总裁
{{user}} 是 {{char}} 的秘书。 // 悦琳 是 宋毅的秘书  (假设 用户身份 叫悦琳,当 用户身份 切换时此处也会自动变化)

我们也经常在预设中引导回复方式:

你的首要任务是理解和回应 {{user}} 的情感,当 {{user}} 表达情绪时,都要优先给与真诚、带有同理心的回应,而非急于推进剧情。

或是在世界书中描述历史与世界背景:

{{user}} 在 1984 年被时空漩涡带到异世界,结识了 {{char}},却在 {{date}} 重逢。

或是在世界书及正则中进行参数变化:

// 世界书:当输入“治疗术”时
{{user}} 使用了治疗术,生命值回满,魔法值 -10。 {{setvar::hp::100}} {{addvar::mp::-10}}
// 正则:尾部显示状态栏 $
{{user}} 当前状态:
生命值:{{getvar::hp}}
魔法值:{{getvar::mp}}

宏参考

角色

{{user}} 用户身份名字

{{char}} 角色名字

{{group}} / {{charIfNotGroup}} 群聊的所有角色,以逗号分割

{{groupNotMuted}} 群聊中未被禁言的角色

角色卡

{{charDescription}} 角色设定,兼容老版本 {{description}}

{{charPersonality}} 角色性格特点,兼容老版本 {{personality}}

{{charScenario}} 角色卡中的场景描述

{{scenario}} 场景描述(优先使用对话级场景描述,若没有则使用角色场景描述)

{{persona}} 用户身份描述

{{charPrompt}} 系统指令-Main Prompt 的内容

{{charInstruction}} / {{charJailbreak}} 系统指令-Post-History Instructions 的内容

{{mesExamples}} 对话示例(已渲染)

{{mesExamplesRaw}} 对话示例(原文)

{{charVersion}} 附加信息 角色版本

{{charCreatorNotes}} 附加信息 备注,兼容老版本 {{creatorNotes}}

消息

{{lastMessage}} 最后一条消息

{{input}} 用户输入消息

{{lastUserMessage}} 最后一条用户消息

{{lastCharMessage}} 最后一条角色消息

日期与时间

{{time}} 当前时间

{{date}} 当前日期

{{weekday}} 当前星期

{{isotime}} ISO时间(格式 小时:分钟)

{{isodate}} ISO日期(格式 年-月-日)

{{idleDuration}} 距离上次消息的时长,兼容老版本 {{idle_duration}}

{{time::UTC+9}} 东九区的时间(格式 小时:分钟),兼容老版本 {{time_UTC±<timezone>}}

随机数

{{random::1::3::5}} 在1、3、5中间随机一个数,兼容老版本 {{random::1,3,5}}

{{roll::3d6}} 摇骰子,3d6 = 3颗6面骰子

格式化

{{newline}} 换行

{{newline::<行数>}} 添加多个换行

{{space}} 空格

{{space::<空格数>}} 添加多个空格

{{trim}} 移除前后空格和换行

{{noop}}

{{//<注释>}} 注释,会被渲染为空

\{\{char\}\} escape,使用反斜杠 \{\{macro\}\} 的形式,可以避免宏被执行,而只是渲染成 {{macro}}

聊天变量

聊天变量仅在当前聊天内可用

{{setvar::<变量名>::<值>}} 设置变量,接受列表(JSON格式)、数字、文字三种

{{addvar::<变量名>::<值>}} 为变量增加值,如果是列表会在尾部添加元素,数字使用加法,文字会拼接在尾部

{{incvar::<变量名>}} 变量 +1

{{decvar::<变量名>}} 变量 -1

{{getvar::<变量名>}} 获得变量的值

全局变量

{{setglobalvar::<变量名>::<值>}} 设置变量,接受列表(JSON格式)、数字、文字三种

{{addglobalvar::<变量名>::<值>}} 为变量增加值,如果是列表会在尾部添加元素,数字使用加法,文字会拼接在尾部

{{incglobalvar::<变量名>}} 变量 +1

{{decglobalvar::<变量名>}} 变量 -1

{{getglobalvar::<变量名>}} 获得变量的值

已过时的参数(Legacy)

<USER> 用户身份名字

<CHAR> / <BOT> 角色名字

<GROUP> / <CHARIFNOTGROUP> 群聊的所有角色,以逗号分割

变量宏的使用

变量宏就像给 AI 准备了一个随身小本子,你把数据写进去,它随时能翻出来看,不会记混、不会忘记。

❌ 没有宏的时候
你说「我现在血量是97」,聊了十几轮之后 AI 说「你血量应该是100吧?」——因为它忘了你之前说的。

✅ 有宏的时候
你发 `{{setvar::hp::97}}`,AI 把「97」写进小本子。
不管聊多少轮,只要你问,它都能翻出来告诉你「你的血量是 97」。

各个变量宏的作用

(1) setvar【写下去】

{{setvar::变量名::数值}}

把一个数值存进 AI 的记事本。 可以存数字、文字,也可以存一个列表。 如果这个变量之前有值,会直接覆盖替换掉。

示例:{{setvar::hp::100}} {{setvar::name::小明}} 我叫小明,血量 100,开始!
适合应用场景:
🎮 开始游戏,设置初始血量
📝 写下今天要做的事
😊 记录此刻的心情
🔄 重置某个数值

(2) addvar【加进去】

{{addvar::变量名::加的内容}} 在原来的值上面加东西。

  • 如果是数字,就做加法(原来50,加20变70)
  • 如果是列表,就追加一个新元素进去
  • 如果是文字,就拼接在后面
示例:打倒了哥布林!{{addvar::gold::15}} {{addvar::bag::"哥布林耳朵"}}
适合应用场景:
🍎 捡到东西,加入背包
💰 赚了钱,增加积分
📜 清单里加一件新任务

(3) incvar / decvar 【加1】/【减1】

{{incvar::变量名}} {{decvar::变量名}}

  • incvar 让数字自动 +1,decvar 让数字自动 -1。
  • 是 addvar 的快捷版,不用写数值。
  • 想 -3 就写三个 {{decvar::hp}},重复几次执行几次。
示例:{{decvar::hp}} {{decvar::hp}} {{decvar::hp}} 被龙爪抓了三下!{{incvar::water}} 喝了一杯水~
适合应用场景:
❤️ 受伤扣血
🔄 回合 +1
💧 喝水记一杯
⏳ 倒计时 -1

(4) getvar【读出来】

{{getvar::变量名}}

  • 把存进去的数值「取出来」,插入到你的消息里。
  • AI 看到的不是「getvar::hp」这几个字,而是 hp 里存的实际数字。就像把变量名换成了它代表的值。
示例:我的状态:名字{{getvar::name}},血量{{getvar::hp}},背包{{getvar::bag}}
适合应用场景:
📊 查看当前状态
✅ 确认数值是否正确
🤖 让 AI 根据数值作出判断

应用场景

【输入框左下角】→【点击】→ 点击【宏助手】,找到对应的变量宏并点击自动填入输入框。 只需要把变量名和数值改成你想要的就行。

(1) 预设Prompt

让 AI 每次回复时自动执行特定宏的通用规则。(比如「每次有战斗必须扣血」)

🗺️ 示例
【你的回复里必须遵守以下规则:
1. 每当叙述中有角色受到伤害,在回复开头加:
  {{decvar::hp}} (每受1点伤就写一次)
2. 每当叙述结束,在末尾附上状态栏:
  【HP: {{getvar::hp}} | 回合: {{getvar::round}}】
3. 每次回复后回合数 +1:
  {{incvar::round}}】

(2) 世界书条目

可以设置触发关键词——当对话里出现这个词,这条内容才会被注入进上下文。 配合变量宏,可以实现「进入某个地点 / 触发某个事件时,自动初始化相关变量」。

🗺️ 示例:进入「地下城」时自动初始化战斗变量
触发关键词:地下城, dungeon, 入口
【你已进入地下城。初始化战斗状态:
{{setvar::dungeon_floor::1}}
{{setvar::enemies_left::5}}
{{setvar::trap_count::0}}
记住:每消灭一个敌人执行 {{decvar::enemies_left}}】
📖 示例:故事进入第二章时加载新设定
触发关键词:第二章, chapter 2, 霜城之外
【{{setglobalvar::chapter::2}}
{{setglobalvar::location::霜城之外的荒原}}
{{addglobalvar::characters::["苏雾"]}}
新角色苏雾登场,她是雪域向导,沉默寡言……】

(3) 正则脚本

输入端简写展开 — 用简写代替长宏

输入:-hp5→自动变成{{decvar::hp}}{{decvar::hp}}{{decvar::hp}}{{decvar::hp}}{{decvar::hp}}
输入:+gold20→自动变成:{{addvar::gold::20}}

正则匹配 -hp(\d+) → 替换成对应数量的 decvar 宏,输入更快