自动思考强度与主动发言
新一代模型普遍支持「深度思考」。然而,并非所有闲聊都需要数千 Token 的推理。若对每句“你好”都进行全开思考,不仅响应迟缓,而且浪费 Token。
Yunzai-LLM-Plugin 提供 thinking: auto 智能分级机制,在不牺牲复杂问题回答质量的前提下,削减闲聊成本并加速响应。
运作机制:两阶段判断
当模型设置 thinking: auto 时,每次收到用户提问,系统将执行如下两阶段调度:
-
第一阶段:轻量判断分类
- 使用低成本的判断模型(
autoThinking.judge:关闭思考的便宜聊天模型,或 TypeSafe Jev / 自建 Kev 等 System One 模型;留空则用utilityModel→ 默认模型)。 - 输入包含机器人名字、最近几条对话与群聊(
autoThinking.context),但只评估最新一条消息。 - 判断模型按各类别的描述,把消息归入一个类别。默认类别:
casual:闲聊、玩梗、问机器人自己、让机器人执行查询指令或发表情。question:有明确答案、一两步就能答的问题;附带需要看懂的图片时至少属于这一类。complex:需要多步推理或综合信息的问题,如规划、比较分析、写代码、排查报错、计算。
- 使用低成本的判断模型(
-
第二阶段:按类别设置思考强度
- 类别对应的强度取自
autoThinking.levels,每个模型可在models[].autoThinking中单独覆盖(例如默认配置中deepseek的casual为off)。 - 该强度随主模型的实际 API 调用发送。
- 类别对应的强度取自
自定义类别与试运行
您可以在 Web 管理面板的 「配置 → 自动思考强度」 中:
- 自由增删类别名称与判定描述,判断规则全部写在描述里。
- 在「试运行(Playground)」中手写一段模拟聊天,即时测试判断模型的分类结果与最终决策的思考强度。
故障安全回退
如果判断模型调用超时(autoThinking.timeoutMs)或报错,系统将回退到第一个类别,保证对话主流程不中断。
后台任务(对话摘要、表情识别、识图)不做消息判断:若 utilityModel / visionModel 的思考强度为 auto,固定使用第一个类别的强度,配置页面会在对应模型旁给出提示。
主动发言
默认情况下机器人只在被 @ 或引用时回复。主动发言让机器人在没有被 @ 的群聊里自己接话,只在 groups.<群号>.proactive.enable 开启的群生效;顶层 proactive 是各群共用的默认参数,群设置里可单独覆盖。
一条主动回复需要依次通过两层:
- 概率:每条新消息独立按
probability抽签;window秒的窗口里至少一条抽中,窗口结束时才进入第 2 层(每个窗口最多判断一次)。 - 判断模型:对窗口里最新的一条消息给出 0~1 的“该接话”分数,分数达到阈值曲线才回复。
proactive.judge设为always时跳过这一层,抽中即回复。
阈值曲线 threshold(t) = end + (start - end) × 0.5^(t / halfLife),其中 t 是距机器人自己上次在本群回复的秒数(与群里其他人发言无关):机器人刚说过话时阈值高,越久没说话越容易接话。
主动回复不计入发言人的个人额度(群 / 全局额度照常),模型认为没必要接话时也可以不发。Web 面板 「配置 → 主动发言」 中可以查看阈值曲线、最近的判断记录,并试运行判断模型。