四个角色坐一桌,导演是个算法

单人角色聊天已经很成熟,群聊的难点在另一处:轮到谁说话。点名要接住、话痨该多说、冷场要有人兜底、还不能让同一张嘴连续刷屏。这篇讲我们在手机上实现桌面酒馆群聊的完整方案:自然轮替的三层裁决、四种发言策略、角色卡的三种注入方式、以及自动模式让戏自己演下去。

手绘墨线插画:四个剪影围坐圆桌,一人起身发言头顶朱红描边的发光气泡,其余三人的灰色气泡在等待

单人角色聊天的技术栈这两年已经卷得很成熟,群聊不一样。把四张角色卡拉进同一个会话,真正的工程难题不是生成质量,是一个导演问题:下一句该谁说。 点名了要接得住,话痨角色该抢戏,冷场要有人兜底,同一张嘴不能连着刷屏。桌面酒馆用一套成熟的裁决规则回答了这个问题,我们把它完整搬进了手机,这篇讲讲里面的门道。

自然轮替:三层裁决

默认策略叫自然轮替,一轮裁决走三层:

优先级规则背后的直觉
1点名优先:消息里提到谁的名字,谁接话你喊了「小林你怎么看」,就该小林说
2话痨值加权:按各角色的 talkativeness 字段加权抽选外向角色多说话,寡言角色偶尔开口,性格写在卡里
3顺序兜底:都没有就按成员列表顺序轮保证冷场时永远有人接,戏不会停

两条约束叠在裁决之上:默认排除上一位发言者(防止一个角色自问自答刷屏,想要连续发言可以在群设置里打开);每轮有最大发言人数预算,一条消息最多引出几位角色接话,不会一句话炸出全员刷屏。

点名之后还有接力:A 接完话,如果 A 的回复里又提到了 B,B 会顺着接上。一句「你们俩怎么看」能自然带出两个角色先后发言,这是群聊最有戏剧感的时刻。

四种策略,各有各的戏

自然轮替适合日常群戏,但不是唯一解。发言策略一共四档:自然轮替(上面那套三层裁决)、列表顺序(严格按成员表轮流,适合回合制跑团)、手动指定(每轮你点谁谁说,导演权完全在你手里)、随机抽选(带「未发言优先」权重的随机,保证每个角色都有出场机会)。

写群像戏的人对这四档会有直觉:日常戏用自然轮替,审讯戏用手动指定,桌游局用列表顺序,茶话会用随机。策略随时可换,换了立刻生效。

角色卡注入:token 和戏剧性的取舍

群聊里每轮 prompt 该带谁的人设,这是个真金白银的问题——每张卡几百上千 token,四张全带就是四倍的常驻成本。我们给了三档注入方式:单独注入只带当前发言者的卡,最省,副作用是角色之间互相不知道对方的设定细节;合并全员把所有启用成员的卡都注入,角色知根知底,互动最自然,token 成本最高;合并含禁用连暂时禁言的角色设定也带上,适合「站在旁边但这轮不说话」的在场感。

没有哪档全对,看你这场戏要什么。跑长剧情我们自己常用单独注入省预算,关键对手戏切合并全员。

自动模式:让戏自己演

群聊最好玩的形态是你退到观众席:开自动模式,设个间隔秒数,每轮生成落定后系统自动排下一位发言。我们在模拟器上跑过六轮真实轮转的验收:发言人交替、连续发言约束生效、你一插话自动排队立刻取消并重新裁决。想停,关开关就停,正在写的那句写完为止。

还没做完的部分

如实交代两个边界:随机抽选的「未发言优先」权重目前只有单元测试覆盖,真机专项验证还在排队;群聊里每个角色独立记忆(A 记得的事 B 不知道)依赖记忆插件按发言人分库,等记忆插件再稳一轮才动。记忆本身怎么注入才不烧缓存,记忆实验那篇有完整数据。

常见问题

AI 群聊里系统怎么决定下一个说话的角色?

自然轮替策略走三层裁决:先看点名(消息里提到谁的名字,谁优先接话);没有点名就按各角色的话痨值加权抽选(talkativeness 是角色卡里的标准字段);都没有就按成员列表顺序兜底。默认排除刚说过话的角色避免刷屏,每轮有最大发言人数预算。

桌面 SillyTavern 的群聊文件能直接导入吗?

能。桌面酒馆导出的群聊 JSON 直接导入:成员卡、发言顺序策略、群设置一起进来。成员对应的角色卡需要先在库里,缺谁导入报告会列出来。

群聊里每个角色都能看到彼此的人设吗?

取决于角色卡注入方式,有三档:单独注入(只注入当前发言者的卡,省 token、角色间信息隔离)、合并全员(所有启用成员的卡都注入,彼此知根知底)、合并含禁用(连暂时禁言的成员设定也注入,适合「在场但不说话」的角色)。

能让群聊自己一直演下去吗?

可以开自动模式:设一个间隔秒数,每轮生成落定后自动排下一位发言,戏就自己往前走。你随时插话,用户发言会立刻取消排队并重新裁决该谁接;关掉开关即停。

有想法或问题?来 Discord 聊聊 →

AI 群聊真正的难题:下一句该谁说? · Foreverse · 新梦