Skip to content

[Feature Request]: 自动识别并处置ai用户 #43

Description

@molanp

功能请求是否与某个问题相关?请描述清楚/Is the feature request related to an issue? Please describe it clearly

在识别出对话者是ai后,自动ban,防止钱包空空

描述您希望增加的功能/Describe the features you would like to add

使用行为模式跟踪来判断对话者是否为ai

描述您考虑过的任何备选解决方案或功能/Describe any alternative solutions or features you've considered

我们可以利用 AI 和人类在响应速度、消息熵值、以及话术固定化上的本质差异来做判定。

  1. 毫秒级延迟检测(最硬核的特征)
    人类打字、思考、点击发送是有物理极限的。AI 插件(尤其是异步架构的)往往在收到消息后的几百毫秒内就能算出回复。
  • 逻辑: 记录上一条消息的接收时间 T_1 和当前消息的接收时间 T_2。
  • 规则: 如果 T_2 - T_1 < 1.0 秒,且对方发送的消息字数超过 20 字符,大概率是脚本或 AI。
  • NoneBot 实现: 在 handle 里对比 event.time。
  1. “复读机”与“无限递归”抑制
    AI 互撩最典型的特征是:A 触发了 B,B 的回复又触发了 A。这会导致短时间内消息密度激增。
  • 计数器(Sliding Window): 针对每个用户或每个群,建立一个 30 秒的滑动窗口。
  • 特征判定: * 如果 30 秒内该用户连续触发了 5 次以上对话。
    • 或者对方的消息内容与他前三次的消息**文本相似度(Levenshtein Distance)**过高。
  • 处理: 判定为异常,直接让你的插件进入 10 分钟的“静默期”。
  1. 静态特征库(指纹识别)
    虽然你不想用 AI 识别,但你可以用正则表达式过滤掉主流大模型常见的“机械化语气”。这些是 AI 为了保持合规或礼貌自带的“尾巴”。
特征类别 关键词(正则匹配) 判定理由
合规性声明 作为一个.*模型, 我无法.*, 法律法规 典型的系统预设拒答。
过分礼貌 有什么我可以帮您的, 希望能对你有所帮助 常见于各种 API 的默认结束语。
结构化标记 ### , 1. , ** 除非是技术交流,普通人水群很少带 Markdown 格式。
LaTeX 符号 [ ... ], \text{...} 误触发数学/科学回复时极易露馅。
  1. 随机“图灵陷阱”(主动防御)
    在你的插件逻辑里偶尔加入一些“无意义”的干扰项。
  • 策略: 当对方连续说话超过 3 次时,你的机器人随机回复一句:#IGNORE_ME#(或者更隐蔽的不可见字符)。
  • 逻辑: 真正的用户看到这个会觉得你抽风了,不予理睬;但如果对方是一个全文转发给 API 的 AI 插件,它会试图解释这个词,或者回复一段莫名其妙的话。
  • 闭环: 只要对方回复了包含对干扰项解释的内容,直接判定为 AI,将其 ID 加入临时黑名单。
  1. 消息链追踪(针对 NoneBot2)
    检查 event.get_event_description() 或 original_event。
  • Source 检查: 很多机器人(如 Lagrange 或 go-cqhttp)发出的消息在协议层带有特定的 source 标志或者 anonymous 字段。
  • Reply 检查: 观察对方是否总是在 reply(回复)你的消息。如果对方的消息链条里,回复对象永远是你,且频率极高,这种“点对点”的死缠烂打大概率是机器人设置了自动响应。
    总结建议:一套组合拳方案
  • 限流(Rate Limit): 严格限制单人 1 分钟内的触发频率。
  • 长度/时间比: 字数 / 响应秒数 > 阈值 则预警。
  • 正则拦截: 过滤掉“人工智能”、“帮到你”等关键词。
    这样即使对方换了 ID,只要它表现得像个“效率极高的礼貌复读机”,你的钱包就是安全的。

其他上下文或截图/Other context or screenshots

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions