Chat Moderator - LOCAL AI

ChatModer 是一个轻量级的 AI 聊天审核插件,适用于 Paper 1.21,它将正则表达式过滤与可选的离线 ONNX 模型相结合,以屏蔽有毒和有害消息,所有这些都无需付费 API。

资源图片
# Chat Moderator – AI-Assisted Chat Moderation for Paper 1.21 一个轻量级、免费的、AI辅助的聊天审核插件,适用于Paper 1.21版本的Minecraft服务器。ChatMod结合了快速的正则表达式/语言过滤,以及可选的离线ONNX模型分类器,可以在不使用付费API的情况下准确地审核有毒、仇恨、性暗示和骚扰消息。 ## 特性 - 混合审核:正则表达式 + 可选的RoBERTa ONNX AI - 具备身份意识的仇恨检测(无需API密钥) - 语言检测和阻止 - 可调整的阈值、惩罚和严格模式 - 管理工具用于审核、训练和状态 - 具有自动保存的持久性统计数据(SQLite/MySQL)和自动迁移 - 文件/数据库日志记录和审核工具 - 使用异步分类和缓存进行性能优化 - 完全离线工作(无需付费API) - 高度可配置和可扩展 ## 安装 1. 将`ChatModer.jar`放入服务器的`plugins/`目录 2. 重启服务器以生成`plugins/ChatModer/config.yml` 3. (可选)在`plugins/ChatModer/models/`下添加一个ONNX模型文件夹,并将配置文件指向ONNX文件 ## AI模型设置(Hugging Face RoBERTa) ChatModer支持Hugging Face RoBERTa ONNX模型,例如`protectai/unbiased-toxic-roberta-onnx`。 创建一个文件夹,例如: ``` plugins/ChatModer/models/unbiased-toxic-roberta-onnx/ ``` 将以下文件放入其中: - `model_quantized.onnx` (推荐) 或 `model.onnx` - `config.json` (包含id2label/label2id) - `tokenizer.json` (首选),或 `vocab.json` + `merges.txt` - 可选:`tokenizer_config.json`, `special_tokens_map.json` 配置片段: ```yaml moderation: ai: enabled: true model_path: plugins/ChatModer/models/unbiased-toxic-roberta-onnx/model_quantized.onnx max_sequence_length: 128 async_threads: 2 timeout_ms: 500 ``` 分词器/配置文件从ONNX文件的相同文件夹中自动加载。 ### 标签映射 - `obscene` -> `profanity` - `insult`/`threat` -> `harassment` - `sexual_explicit` -> `sexual` - `identity_attack` -> `hate` - `toxicity`/`severe_toxicity` 略微提升 profanity/harassment 的评分 - 仅身份的标签(例如`black`、`muslim`)本身不会被标记;当与 insult/toxicity 结合时,它们起到上下文的作用 ## 模式 - __regex__: 仅正则表达式/词列表启发式方法 - __ai-only__: 仅ONNX模型(如果启用);仍然使用语言阻止和白名单 - __hybrid__ (推荐):结合正则表达式 + AI;AI评分可以通过`moderation.ai.weight`进行加权 ```yaml moderation: enabled: true mode: hybrid # regex | ai-only | hybrid ai: enabled: true weight: 0.8 ``` ## 数据库 & 自动保存 统计数据默认持久化到SQLite或MySQL,如果已配置。 该插件可以将现有的SQLite统计数据自动迁移到MySQL。 ```yaml database: type: sqlite sqlite_file: plugins/ChatModer/data.db mysql: host: 127.0.0.1 port: 3306 database: chatmoder user: root password: "secret" useSSL: false sqlite_migrate_file: plugins/ChatModer/data.db stats: autosave_seconds: 300 ``` ## 阈值 & 惩罚 调整每个类别的审核灵敏度和操作。 ```yaml thresholds: profanity: 0.7 harassment: 0.6 hate: 0.6 sexual: 0.7 spam: 0.8 punishments: profanity: block # warn | tempmute | kick | tempban | block | command: harassment: warn hate: tempmute sexual: block spam: block ``` ## 日志记录 & 审核 - __文件日志__: JSONL写入到`plugins/ChatModer/logs/flags.log` - __数据库日志__: SQLite/MySQL `flags` 表 (可选) - __审核__: `/chatmod review ` 从数据库读取 (如果已启用),否则读取文件日志。 支持 legacy 漂亮的打印日志和紧凑型 JSONL。 ## 命令 - `/chatmod toggle` — 启用/禁用审核。 - `/chatmod status` — 实时统计信息概览。 - `/chatmod review ` — 审核最近标记的消息。 - `/chatmod whitelist add|remove ` — 管理白名单。 - `/chatmod strict reload` — 重新加载严格列表。 - `/chatmod train add|capture|fromlog|words|stats|export` — 数据集工具。 - `/chatmod stats reset confirm` — 清除内存中的统计数据并立即持久化。 ## 训练工作流 (可选) - __Capture__: 记录最近的消息作为训练的上下文 - __From log__: 将标记日志挖掘到数据集中 - __Words__: 词频分析 - __Stats__: 训练数据集统计信息 - __Export__: 输出 `dataset.jsonl`,为微调做好准备 所有工具都可在`/chatmod train ...`下使用。 ## 严格模式 对于即时阻止(例如,高严重性令牌),启用严格规则并重新加载它们,无需重启: ``` /chatmod strict reload ``` ## 权限 - `chatmod.admin` — 访问管理命令 - `chatmod.bypass` — 绕过审核 - `chatmod.review` — 访问审核工具 ## 性能 - 仅正则表达式模式,以实现最少的开销 - AI 异步运行并使用 CPU 上的量化 ONNX 模型 - 令牌和消息缓存以减少重复工作 ## 隐私 所有处理都是本地的。 除非你启用了webhook,否则不会进行任何外部API调用。 ## 兼容性 - Paper 1.21 (大多数现代分支应可以使用) - Java 17+ - SQLite 包含在内;MySQL 需要有效的凭据 ## 故障排除 - __ONNX模型未加载__: 检查 `moderation.ai.model_path` 并确保 `config.json` 和 `tokenizer.json`(或 `vocab.json` + `merges.txt`)在同一目录下。 - __分类超时__: 增加 `moderation.ai.timeout_ms` 或减少 `max_sequence_length`。 - __CPU使用率高__: 使用 `model_quantized.onnx` 并将 `max_sequence_length` 保持在 128/256。 - __审核显示没有条目__: 确保启用日志记录(文件或数据库)并且你的日志不是空的。 ## 支持 在项目存储库中打开一个 issue,提供日志、配置和重现步骤。 如果你使用自定义模型,请提供模型详细信息。