🛡️ 图片内容审查卫士 (Image Guard Pro)
版本: v1.6.6
作者: YEZI
这是一个专为 AstrBot 设计的高级视觉审核插件。它利用多模态大模型(如 Gemini 1.5/2.5 Pro, GPT-4o)的视觉理解能力,对群聊/私聊发送的图片进行语义级审查。
与传统的关键词匹配不同,它能“看懂”图片里的内容。
✨ 核心功能
1. 双重检测机制
- 🅰️ 文字识图 (OCR):图片里只要出现了你指定的敏感词(如“加群”、“退款”),立即封禁。
- 🅱️ 内容识图 (Semantic):图片画面包含你指定的违禁事物(如“东亚地图”、“血腥画面”),立即封禁。
2. 智能过滤 (Smart Filter) v1.6.4 New!
- ✅ 自动放行:GIF 动图、QQ 自带表情包、收藏的贴图。Bot 不会浪费 Token 去检测这些内容。
- ❌ 精准拦截:仅对用户发送的 JPG/PNG 等静态图片进行审查。
3. 静默执法 (Silent Assassin)
- 群内:检测到违规瞬间撤回消息 + 禁言用户。Bot 在群内保持绝对沉默,不发送任何提示,极具威慑力。
- 私聊:Bot 会私聊管理员发送执法战报,包含违规图片证据、撤回/禁言的执行状态以及 LLM 给出的判罚理由。
⚙️ 配置指南 (避坑必读)
⚠️ 特别警告:关于“内容识图”的描述技巧
在配置 forbidden_descriptions(违禁画面描述)时,请务必精确描述,不要使用宽泛的词汇!
❌ 错误示范:
配置了违禁词:"东亚"💥 灾难后果:
用户发了一张 “赫鲁晓夫楼”(老式居民楼)的照片。
LLM 判定逻辑:赫鲁晓夫楼 -> 常见于中国北方 -> 属于东亚地区事物 -> 判定违规,禁言!
(这就是典型的因描述不准确导致的冤假错案)
✅ 正确示范:
配置违禁词:"东亚地图"🎉 正确结果:
只有当图片真的是一张地图时,才会触发封禁。发风景照、建筑照均安全。
💡 专家建议:配合 Gemini-2.5-Pro 等高智商模型,并使用精确的描述词,本插件的准确率极高,几乎不会误封。
📝 详细配置项说明
| 配置项 | 说明 | 推荐值 |
|---|---|---|
| llm_model | (核心) 模型名称。必须支持视觉 (Vision)。 | gemini-1.5-pro 或 gemini-2.5-pro |
| llm_base_url | 模型接口地址。支持 OpenAI 格式中转。 | 你的中转地址 |
| sensitive_texts | 文字识图:图片里有这些字就封。 | ["加微信", "退款", "代充"] |
| forbidden_descriptions | 内容识图:画面是这个东西就封。 | ["东亚地图", "裸露画面", "政治隐喻图"] |
| custom_vision_prompt | 自定义引导词:教 AI 怎么看图。 | "请仔细分辨地图轮廓,非地图类图片一律放行。" |
| group_scope | 开启审查的群号。填 ["0"] 代表所有群。 |
["0"] |
| report_target_id | 接收战报的管理员 QQ 号 (纯数字)。 | 你的QQ号 |
🛠️ 依赖与安装
- AstrBot: 建议升级至最新版。
- 协议端: 必须使用 NapCat 或 Lagrange (OneBot 11)。
- 注意:必须给予 Bot 管理员权限,否则无法撤回和禁言。
- 安装方法:
将插件文件夹放入data/plugins/目录,重启 AstrBot 即可。
❓ 常见问题 (FAQ)
Q: 为什么 Bot 没反应?
A:
- 检查是否开启了
group_scope(填0全开)。 - 检查图片是否是 GIF 或 表情包(这些会被自动忽略)。
- 检查后台日志,看 LLM 是否报错。
Q: 为什么撤回/禁言失败?
A:
- Bot 在群里是管理员吗?
- 你的协议端(NapCat)是否正常连接?
- 如果失败,Bot 会私聊管理员发战报,状态栏会显示
❌。
Q: 为什么识别不准?
A: 请更换更强的模型(推荐 Gemini Pro 系列),并在配置中优化 custom_vision_prompt 引导词。