Skip to content

什么时候回复 ​

字数
2588 字
阅读时间
10 分钟

TIP

本节介绍机器人「要不要开口」。回复太少像不在线,回复太多像刷屏;ChatLuna 用一组可调的判定规则来决定,而不是写死的关键词表。

群聊每收到一条消息,系统都会做一次唤醒判定,结果有三种:

  • 回复:把消息连同前后聊天记录交给模型,生成回复。
  • 只记录:不回复,但写入聊天记录,供下次被呼叫时参考。
  • 忽略:既不回复也不记录。

绝大多数判定在本地完成(检测 @、比对名字、统计发言频率),不调用模型。只有开启「小模型判定」才会产生模型费用。

场景规则页 · 什么时候回复

默认行为 ​

情况默认行为
群里有人 @ 它回复
有人回复它发过的消息不回复(默认关闭)
消息以它的名字开头回复
消息中间提到它的名字不回复(默认只认开头)
私聊回复
/ 开头的指令交给指令系统,不进入对话
其他人在群里正常聊天不回复,但记进聊天记录
没人叫它不主动搭话(随机概率为 0)

也就是说,默认情况下机器人在群里只有被明确呼叫才开口,私聊每句都回,指令交给指令系统。平时的群聊会被记录下来,被呼叫时模型就能接上刚才的话题。处于回复冷却期时,即使被呼叫也只记录不回复。

如果只需要「有人找才回答」,默认设置就够了。

三种判定方式 ​

场景规则的「什么时候回复」面板中有三种判定方式:直接触发、气氛判断和小模型判定。它们并行判定,任意一种得出「回复」就会回复;都不要求回复时,再决定是「只记录」还是「忽略」。

  • 只在被叫到时回复:保持默认的直接触发。
  • 群里热闹时主动接话(不调用模型):再开启气氛判断。
  • 需要理解复杂语境和群梗(有少量调用成本):开启小模型判定。

直接触发 ​

默认启用,处理明确的呼叫:

  • @ 它就回复:消息中包含平台的 @ 元素时触发,纯文本打出的名字不算。
  • 回复它的消息也算:引用回复机器人的消息时触发,默认关闭。
  • 叫名字就回复:消息以机器人的名字开头时触发,名字在「它的名字」列表中配置,可以添加多个。
  • 句中提到也算:消息任意位置出现名字就触发,默认关闭。
  • 私聊直接回复:关闭后,私聊也必须 @ 或叫名字才回复。
  • 回复私聊:私聊的总开关。
  • 主动搭话概率:无人呼叫时随机插话的概率,默认 0。
  • 回复后安静时间:回复后的冷却时间(毫秒),期间被呼叫也只记录,默认 0。
  • 不回自己的话:避免消息回环时自我对话。

TIP

「它的名字」是全局生效的,在任何场景规则中修改都会同步。不同群对机器人的称呼不同时,把所有常用称呼都加进列表即可。

气氛判断 ​

气氛判断在本地分析群聊动态,不调用模型,综合四类信号:

  • 热度:最近 15 分钟、2 分钟和 30 秒内的消息频率。
  • 人数:发言人数和分散程度。
  • 线索:是否有人引用机器人、叫它的名字或别名、提到感兴趣的词。
  • 惯性:机器人上次发言后,是否有人顺着话题继续聊。

这些信号合成一个「想说话的冲动」值,与动态阈值比较(阈值受作息、距上次发言的间隔和近期发言量影响),超过后再按频率抽样决定是否开口。

  • 插话频率:0 到 1,越高越容易插话,0 表示不主动插话(不影响 @ 和叫名字)。建议先设 0.2~0.3。
  • 感兴趣的关键词:提到这些词时冲动加成更高。
  • 它的别名:出现时视为强烈的呼叫线索。
  • 每小时发言上限:达到后冲动大幅衰减。

两次主动发言之间至少间隔 30 秒。

WARNING

气氛判断默认只在「伪装」引擎下启用;「对话」引擎默认只用直接触发,避免问答机器人在群里意外插话。

小模型判定 ​

把最近的聊天记录发给轻量模型,由它判断现在该不该插话。对反讽、群梗等语境理解更准确,但每次判定都是一次真实的模型调用。

  • 判定模型:默认使用内置决策角色。
  • 最低插话把握:达到这个置信度才发言,默认 0.55。
  • 两次判定最小间隔:同一会话两次判定的间隔,默认 60 秒。
  • 参考消息条数:每次判定提供的聊天记录条数。
  • 给模型看的简介:说明机器人的性格和适合插话的场景,留空时根据人设自动生成。
  • 感兴趣的关键词:命中时跳过冲动计算,直接发起判定。
  • 每天判定次数上限:默认 200 次。
  • 同时判定数量:全局并发上限,默认 2。

同一条消息的判定结果会缓存。小模型除了「回复」和「不回复」,还可以建议「稍后回复」,系统会按给出的延迟跟进。

以 @ 和叫名字为主的问答群不需要开启小模型判定,它只会增加延迟和费用。

只记录与忽略 ​

  • 只记录:写入聊天记录,下次被呼叫时模型能看到。日常闲聊、冷却期内的呼叫、被合并的连续短消息、气氛判断跳过的消息都属于此类。
  • 忽略:直接丢弃。机器人自己的消息、指令、被审核拦截的内容,以及关闭私聊总开关后的私聊消息属于此类。

WARNING

不要为了节省上下文把正常群聊设为忽略,否则机器人被叫到时无法结合前文作答。控制上下文长度请使用「群聊记录」中的条数上限、回填和媒体限制。

主动说话 ​

  • 冷场时主动搭话:长时间无人发言时主动开话题。无人回应时逐步延长下次尝试的间隔。
  • 稍后继续聊:回答复杂问题后,隔一段时间主动跟进。
  • 话题相关就插话:群友聊到与角色高度相关的话题时插话,需要先启用小模型判定。
  • 早晚安问候:按角色作息在早晨和睡前打招呼。

角色处于「睡眠」状态时不会主动说话,只能通过直接呼叫唤醒。主动说话同样受每小时发言上限和退避限制。

主动说话与气氛判断的设置项

推荐配置 ​

场景建议
普通问答群只开「@ 它就回复」「叫名字就回复」「私聊直接回复」,关闭主动搭话、气氛判断和小模型判定
角色扮演群开启直接触发和气氛判断,插话频率 0.2~0.3,填写角色关心的关键词;群活跃时调低每小时发言上限
大群 / 高风险群谨慎启用小模型判定:调高最低插话把握和判定间隔,调低每天判定上限,观察质量和账单后再放宽
私聊为主全局关闭群聊搭话和气氛判断,私聊保持直接回复;个别群需要时用场景规则单独开启

常见问题 ​

机器人不回复:检查消息是否以指令前缀开头、「回复私聊」是否关闭、直接触发开关是否开启,以及是否处于「回复后安静时间」。

机器人频繁插话:检查是否开启了气氛判断或小模型判定,调低插话频率或调高最低插话把握;关闭「句中提到也算」;检查是否有单独的群规则覆盖了全局设置。

呼叫了但只记录不回复:通常是处于冷却期或连发合并中,稍等片刻或用 @ 重新呼叫即可。

判定很慢:多半是开启了小模型判定,每次都要等待模型响应。调大判定间隔,或改用直接触发加气氛判断。

下一步 ​

  • 群聊记录 — 不回复时记录什么、怎么回填、图片怎么处理。
  • 场景规则 — 给不同群设置不同的回复条件。
  • 角色与预设 — 让「伪装」引擎的状态、作息和主动行为生效。

页面历史

在 CC-BY-SA-4.0 许可下发布