Skip to content

酒馆助手宏

提示

请务必先阅读如何正确使用酒馆助手

酒馆虽然有宏 ({{user}}{{char}}{{getvar::变量}}) 来在显示或提示词中表达一些占位内容, 但扩展很难通过它注册带参数的宏如 {{get_message_variable::变量}} 等.

酒馆助手为此自行提供了酒馆助手宏, 它虽然存在一些局限性, 但能满足大部分需求.

点击查看对应类型定义文件 (可发给 AI 或 IDE 使用, 酒馆助手界面中提供了打包下载)

酒馆助手内置宏

酒馆助手内置了以下宏:

  • {{get_xxx_variable::变量}}: 获取变量值并将其显示为一行 JSON 字符串
    • {{get_global_variable::变量}}: 从全局变量中获取路径 变量 下的值
    • {{get_preset_variable::变量}}: 从当前预设的变量中获取路径 变量 下的值
    • {{get_character_variable::变量}}: 从当前角色卡的变量中获取路径 变量 下的值
    • {{get_chat_variable::变量}}: 从当前聊天文件的变量中获取路径 变量 下的值
    • {{get_message_variable::变量}}: 从最新消息楼层变量中获取路径 变量 下的值
  • {{format_xxx_message::变量}}: 获取消息内容并将其显示为格式化后的 YAML 块
    • xxx 可用类型与 {{get_xxx_variable::变量}} 相同

例如, 在一些变量框架示例中, 你会使用 {{format_message_variable::stat_data}} 来获取路径 stat_data 下的值来发给 AI. AI 对于 {{format_xxx_variable::变量}} 的理解更清晰, 你应该总是优先使用它而非 {{get_xxx_variable::变量}}.

此外, {{get/format_xxx_variable::变量}} 宏有一个额外特性: 它会忽略变量中所有以 $ 开头的键. 这个特性允许你在变量中存储一些不应该发给 AI 看的数据. 例如, 对于 { $meta: {}, 好感度: 0 }, 它只会得到 { 好感度: 0 }.

禁用酒馆助手宏

通过 "酒馆助手主界面-禁用酒馆助手宏", 你可以禁用酒馆助手宏, 从而将 {{get_message_variable::stat_data}} 原封不动地显示和发送给 AI.

禁用酒馆助手宏

registerMacroLike

注册一个新的助手宏

ts
function registerMacroLike(
  regex: RegExp,
  replace: (context: Context, substring: string, ...args: any[]) => string,
): void;
ts
type MacroLikeContext = {
  message_id?: number;
  role?: 'user' | 'assistant' | 'system';
}

参数

regex

  • 类型: RegExp
  • 描述: 匹配的正则表达式

replace

  • 类型: (context: Context, substring: string, ...args: any[]) => string
  • 描述: 针对匹配到的文本所要进行的替换, 其返回值将会是替换结果

示例

ts
registerMacros(
  /<count_lines>(.*?)<count_lines>/gi,
  context => content.split('\n').length
);

registerMacroLike

取消注册一个助手宏

ts
declare function unregisterMacroLike(regex: RegExp): void;

参数

regex

  • 类型: RegExp
  • 描述: 助手宏的正则表达式

作者:KAKAA, 青空莉想做舞台少女的狗