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