Quick Reply 是把一段斜杠命令存起来、挂成按钮或让它自动触发的功能。 它不产生新能力,只是把你反复手打的那几步固定下来。做成按钮只是一半用法,另一半是 绑定自动执行的时机,让它在该跑的时候自己跑。
它和斜杠命令是什么关系
Quick Reply 存的就是斜杠命令。你在输入框里能打的 / 开头指令,都可以放进一条
Quick Reply 里,多条串起来就是一个小脚本。所以学 Quick Reply 之前,先熟悉斜杠命令,
顺序反过来会很吃力。
Quick Reply 集合(QR Set)是一组按钮的容器。源码里同时维护全局、当前聊天、当前角色 三层配置,自动执行时三层的按钮都会被收集起来一起跑,所以一个角色专属的 QR Set 不会 顶掉全局那套,而是叠加上去。分享出去的「一键预设」多半就是一个 QR Set 加若干世界书条目。
八个自动执行时机分别在什么时候触发
AutoExecuteHandler
提供八个 handle* 方法,各自挂在一个事件上。前七个由 Quick Reply 编辑器里的
勾选框控制,第八个靠 ID 匹配。
| 处理函数 | 监听的事件 | 触发时机 |
|---|---|---|
handleStartup | APP_READY | 酒馆界面初始化完毕、加载遮罩收起之后 |
handleChatChanged | CHAT_CHANGED | 切换到另一个聊天 |
handleNewChat | CHAT_CREATED / GROUP_CHAT_CREATED | 新建单人或群聊 |
handleBeforeGeneration | GENERATION_AFTER_COMMANDS | 一次生成开始、输入框里的斜杠命令处理完之后 |
handleUser | USER_MESSAGE_RENDERED | 你的消息已入库并渲染出来 |
handleAi | CHARACTER_MESSAGE_RENDERED | 模型的回复已渲染出来 |
handleGroupMemberDraft | GROUP_MEMBER_DRAFTED | 群聊里角色已切好、还没开始生成 |
handleWIActivation | WORLD_INFO_ACTIVATED | 有世界书条目被激活,按 automationId 配对 |
handleUser 和 handleBeforeGeneration 差在哪
不差在「影响这一轮还是下一轮」,两者都在同一次生成里、提示词组装之前跑完。差别在
触发条件:handleBeforeGeneration 每次生成都触发,重新生成、续写、群聊里的每个
成员各算一次;handleUser 只在真的新增了一条用户消息时触发。
顺序也是固定的。一次正常发送里,酒馆先发 GENERATION_AFTER_COMMANDS
(script.js:4262),之后才调用 sendMessageAsUser 把消息入库并发出
USER_MESSAGE_RENDERED,再往后才开始拼提示词。所以
handleBeforeGeneration 里改的设置,handleUser 还能覆盖回去。
handleBeforeGeneration 有两处会被跳过:干跑(dry run)不触发,群聊在切到具体
成员之前的那次外层调用也不触发。handleAi 则会跳过 swipe 时那条占位的
... 消息。
自动执行最容易出的问题
循环触发。一条绑在 handleAi 上的 Quick Reply,如果自己又触发了一次
生成,就会再次触发 handleAi。编辑器里的「Don't trigger auto-execute」
(preventAutoExecute)就是断这个环用的:勾上之后,这条脚本自动执行期间发生的
任何自动执行时机都会被忽略。它
在源码里默认为 true,
关掉之前先想清楚这条脚本会不会把自己叫起来。
启动那一批跑完之前,其他时机在排队。酒馆没准备好时收到的事件会进队列,
等 handleStartup 全部执行完才依次补跑。启动脚本写得慢,后面的自动执行就一起晚。
三层配置一起跑。全局、聊天、角色三层里同名的按钮如果都勾了同一个时机, 一次触发会执行多遍。查「为什么执行了两次」,先看是不是同一条 Quick Reply 被复制进了 不同的 QR Set。
用 automationId 让世界书调起 Quick Reply
handleWIActivation 不看勾选框,它读取本轮被激活的世界书条目上的
automationId,再去三层配置里找 automationId 相同的 Quick Reply 执行。
两边的 ID 必须完全一致,任意一边留空都不会配上。
这条链路把「剧情推进」和「机制变化」绑在一起:进入某个场景时自动调整生成长度,或者 聊到某个话题就切一套采样参数,都靠它。
在手机上用
Quick Reply 按钮在窄屏上会挤,建议一组不超过五六个,名字尽量短。手机端更值得投入的 是自动执行:打字和点按在手机上都比桌面费劲,能让它自己跑的就别做成按钮。