PluralKit 支持
TomoriBot 能够识别 PluralKit 代理消息。启用支持后,她会回复代理的 Webhook 消息,而不是 PluralKit 删除的原始消息。她还会将系统中的每位成员视为拥有独立名字、身份与个人记忆的独立个体,而不是把所有人混在共用的 Discord 账号下。本页面介绍这项功能面向用户的一面。内部实现细节请参阅 PluralKit 适配器架构。通用的安全模型在消息代理支持中有详细说明。
运行 /personal message-proxy service:pluralkit。这是每个账号的个人设置,因此服务器管理员无需配置任何内容,它会跟随你跨服务器生效。你系统的成员无需单独加入;选择绑定在发送消息的 Discord 账号上。使用 /personal message-proxy service:none 可以将其关闭。
如果你不使用 PluralKit,请保持关闭。否则你发送的每条消息都会白白增加短暂延迟(见下文)。
启用后的变化
Section titled “启用后的变化”- 她会回复正确的消息。 没有此功能时,PluralKit 会在生成中途删除你的原始消息,导致 Tomori 最终回复了一条不存在的幽灵消息。启用后,她会稍作等待,识别出代理消息,并回复 Webhook 重发的消息,这也包括对她消息的代理回复(这类回复在普通代理过程中通常会丢失回复关联)。
- 生成中途的追问也能正常处理。 如果在 Tomori 仍在回复同一位成员时发送了另一条代理消息,会打断她的回复,她会转而回答该成员的最新消息。同一账号下的其他成员或另一账号下的成员则会照常轮流等待。
- 你的消息会有短暂暂停。 Tomori 会等待约 2 秒(自部署用户可调整
MESSAGE_PROXY_WAIT_MS),以检查 PluralKit 是否删除了你的消息并重新发送。代理消息的解析通常比这更快;未代理的消息只会稍微延迟一点到达。这是你选择开启时接受的权衡,指令的确认回复中也明确指出了这一点。 - 每位成员都是独立的人。 Tomori 将成员的名字、所属系统与宿主 Discord 账号作为三项独立的事实记录。换用不同成员出面,意味着以该成员的身份与她交谈,而不是作为「账号」。
- 个人记忆按成员独立。 Tomori 了解到的某位成员的事实,会为该成员单独保存。它不会变成全服务器记忆,不会挂在宿主账号上,也不会泄漏给同系统的伙伴。
- 初识与重聚也按成员独立。 她会单独记录上次收到每位成员消息的时间,因此很久没和她说话的成员回来时会收到问候,即使整个星期都有其他人从同一个账号发言也是如此。她从未见过的成员属于初次见面,而今天一直在的成员就只是对话的一部分。
- 单次简介导入。 Tomori 第一次见到某位成员时,该成员在 PluralKit 上的公开说明(如果有)可能会保存为初始个人记忆,以便她从第一次对话起就尊重其人称代词、边界与偏好。这是一次性的快照。之后在 PluralKit 上编辑简介绝不会更新过来。要改变她的记忆,直接在聊天中告诉她即可(「忘记那个」、「其实……」)。
- 单次代词导入。 如果成员的人称代词在 PluralKit 上是公开的,在她第一次见到该成员发言时就会填入该成员自己的代词设置,以便从第一条回复起就正确使用。从那之后,该设置就是你与她之间的专属设置,日后在 PluralKit 上的更改不会覆盖它,你可以在
/personal config identity:中进行修改。代词设为私密或未设置的成员,开始时该字段为空。 - 在你的成员交谈时查阅系统说明。 如果你的系统有公开说明,Tomori 会保留它,并在你的任何成员参与对话时查阅,这样系统级别的边界就能应用到你们所有人身上,而无需为每位成员重复说明。这部分确实会跟随编辑:在 PluralKit 上修改或清空它,她会在你的成员下次发言时采用新内容。它对整个系统只显示一次,不属于任何单个成员,私密或未填写的说明只会被直接忽略,不会用占位符替代。
值得了解的身份细节
Section titled “值得了解的身份细节”- 成员是通过 PluralKit 的稳定内部 ID 识别的,绝不是通过名字。重命名成员或修改显示名称完全没有问题:Tomori 依然知道他们是同一个人,并会在外观上采用新名字。
- 身份来自消息本身,而不是「当前谁在前台」:Tomori 绝不会轮询你的出面者。成员在发送代理消息的那一刻就成为对话的一部分,而在你开启功能期间至少代理过一次之前,Tomori 无法得知该成员的存在。
- 叫出成员的名字会将其带入上下文,就像叫出人类参与者的名字一样:如果有人问「Mirri 怎么看?」,即使 Mirri 最近没有说话,Tomori 也会加载 Mirri 的记忆。这仅限于宿主账号在当前服务器中的系统成员,如果有重名(两个人或成员对应同一个名字),会直接忽略而不是去猜测。
- 叫出系统名称并不会汇总其所有成员的记忆。只有实际在场或被点名的成员才会被加载,因此当前出面成员的对话绝不会暴露未参与成员的事实。
- 私密系统数据保持私密。Tomori 只能看到 PluralKit 对某条消息的成员与系统公开的信息;她无法访问受成员 ACL 保护的字段。如果你的系统名称被隐藏,她会退回到你的系统标签,或者只称呼为「多意识体系统」。
设置仍保留在宿主账号上
Section titled “设置仍保留在宿主账号上”你的 Discord 账号依然是掌控一切的核心:隐私级别、黑名单、冷却时间、配额、API 密钥以及账号级别的 /personal 设置在成员间共享,并绑定在宿主账号上。将隐私设为完全隐私,或在服务器中被列入黑名单,会一次性保护你的所有成员。只有对话身份、个人资料偏好、外观与记忆可以按成员分别设置。
/personal memories identity:可编辑已存储成员的全局记忆与人格记忆。使用/personal config identity:编辑该成员的个人资料、昵称与外观。- 简介导入对每位成员终生仅发生一次。之后在 PluralKit 上的简介编辑绝不会同步过来。请改在聊天中告诉她。
- Tomori 无法
@提及成员(Webhook 无法被提及);她会以名字称呼成员。 - 如果 PluralKit API 无法验证重新发布的消息,TomoriBot 会忽略该消息。如果 PluralKit 已删除原始消息,TomoriBot 就不会回应这次发言,也不会创建成员身份。
如果某项限制未在上方列出,请假定它应该正常工作,并在支持服务器(/support discord)中报告 bug。