Plugin Version
3.6.2
AstrBot Version
4.26.6
Database Type
SQLite (default)
Operating System
Docker
Bug Description
黑话被收录时发生。
词条首次入库后(jargon 表中 is_jargon 为 NULL、count=1),之后群里即使多次使用同一黑话,count 也基本不再增长,长期停留在 1,达不到触发含义推断的计数阈值,导致该黑话一直处于「已收录但永不解释」的状态,且全程无任何报错。
我们库中的分布可以佐证:320 条待确认(is_jargon IS NULL)词条中,209 条 count=1、84 条 count=2,明显堆积在低计数区——如果计数链路正常,长时间运行后应该向高计数扩散。
初步定位:services/learning/jargon_learning.py 的 _get_existing_jargon_terms()(约 :164)把数据库中全部词条(包括 is_jargon 为 NULL 的待确认词条)作为 exclude_terms 传给了统计过滤器。词条首次入库即进入排除名单,之后不会再被统计过滤器选为候选,count 自然永远停在 1。LLM 提取路径不受该名单影响,所以少数词条的 count 能缓慢上涨(分布中少量 3~8 的),但整体表现为「收而不学」。
Steps to Reproduce
- 开启黑话学习(默认配置),群聊中出现一个此前未收录的新黑话;
- 插件将其收录:jargon 表新增一行,
is_jargon 为 NULL、count=1;
- 群成员在之后继续使用该黑话(次数远超 3);
- 查看数据库:该词条
count 停在 1 不变,日志中始终不出现含义推断/解释动作,注入侧(只取已确认词条)也永远不会解释它。
Expected Behavior
黑话被三次计数后开始解释:收录后每次再次出现计数 +1,count 达到阈值(3)时触发含义推断,确认后开始随回复解释该黑话。
Error Logs
Relevant Configuration
默认配置,未改动黑话相关设置。相关参数均为代码硬编码
Additional Context
- 验证:把计数链路中
get_recent_jargon_list(...) 的查询加上 only_confirmed=True(排除名单只含已确认词条,待确认词条可继续回流统计循环累积 count)后,词条能重复进入候选、count 正常增长并触发推断。建议上游按此方向修复。
- 注入侧
jargon_query 只取已确认且 meaning 非空的词条,所以这些卡住的词条完全无感——不报错、只是永远不解释。
- 由于阈值阶梯从 3 起步,count 卡在 1 的词条距离第一次推断永远差 2 次,与「长时间无法解释」的体感一致。
Plugin Version
3.6.2
AstrBot Version
4.26.6
Database Type
SQLite (default)
Operating System
Docker
Bug Description
黑话被收录时发生。
词条首次入库后(jargon 表中
is_jargon为 NULL、count=1),之后群里即使多次使用同一黑话,count也基本不再增长,长期停留在 1,达不到触发含义推断的计数阈值,导致该黑话一直处于「已收录但永不解释」的状态,且全程无任何报错。我们库中的分布可以佐证:320 条待确认(
is_jargon IS NULL)词条中,209 条count=1、84 条count=2,明显堆积在低计数区——如果计数链路正常,长时间运行后应该向高计数扩散。初步定位:
services/learning/jargon_learning.py的_get_existing_jargon_terms()(约 :164)把数据库中全部词条(包括is_jargon为 NULL 的待确认词条)作为 exclude_terms 传给了统计过滤器。词条首次入库即进入排除名单,之后不会再被统计过滤器选为候选,count自然永远停在 1。LLM 提取路径不受该名单影响,所以少数词条的 count 能缓慢上涨(分布中少量 3~8 的),但整体表现为「收而不学」。Steps to Reproduce
is_jargon为 NULL、count=1;count停在 1 不变,日志中始终不出现含义推断/解释动作,注入侧(只取已确认词条)也永远不会解释它。Expected Behavior
黑话被三次计数后开始解释:收录后每次再次出现计数 +1,count 达到阈值(3)时触发含义推断,确认后开始随回复解释该黑话。
Error Logs
Relevant Configuration
默认配置,未改动黑话相关设置。相关参数均为代码硬编码Additional Context
get_recent_jargon_list(...)的查询加上only_confirmed=True(排除名单只含已确认词条,待确认词条可继续回流统计循环累积 count)后,词条能重复进入候选、count 正常增长并触发推断。建议上游按此方向修复。jargon_query只取已确认且meaning非空的词条,所以这些卡住的词条完全无感——不报错、只是永远不解释。