🤖 本项目的全部代码、文档与脚本均为 AI(DeepSeek)生成。 This project — code, docs and scripts — is entirely generated by AI (DeepSeek).
B 站直播弹幕 AI 过滤工具 · 本地运行 · 零 API 费用 通用型弹幕过滤器,过滤 人身攻击 + 刷屏 弹幕,实时隐藏。
DanmuGuard is a local, zero-API-cost AI filter for Bilibili live danmaku (bullet comments). It detects and hides personal attacks and spam/flooding in real time — everything runs locally on your GPU, no paid LLM API required.
- 🇨🇳 中文使用说明见下方(以下为英文简介)
- Zero API cost · local inference with bge-small-zh on GPU
- Rule layer (free) + embedding semantic layer (catch paraphrased attacks)
- Web console at
http://127.0.0.1:8912for switching rooms / tuning thresholds - Tampermonkey userscript hides offending danmaku live in your browser
通过本地 WebSocket 推送给浏览器端的油猴脚本,在直播间页面实时隐藏违规弹幕。
- 零 API 费用:全程本地推理,不依赖任何付费大模型 API
- GPU 推理:bge-small-zh 小模型跑在显存上(实测约 10000 条/秒)
- 三重复合过滤:免费规则层(刷屏/攻击词)先快筛,本地 Embedding 语义层兜住"陌生攻击变体",灰色带由本地 LLM 仲裁
- 可视化控制台:
http://127.0.0.1:8912即时切房间 / 调阈值 / 维护黑称词库 / 标注误杀反馈
- 装 Python(没有的话):python.org 装 3.10+,安装时勾选 Add to PATH
- 双击
install.bat:自动检测 Python、装依赖(首次几分钟)、创建桌面快捷方式 - 双击桌面「弹幕净化器」 或本目录
start.bat启动 - 浏览器打开
http://127.0.0.1:8912完成切房间 / 调阈值 - 装油猴脚本(见下方「浏览器端」),刷新直播间页面生效
卸载:双击本目录
uninstall.bat
| 文件 | 用途 |
|---|---|
install.bat |
一键安装(检测 Python → 装依赖 → 建桌面快捷方式) |
start.bat |
一键启动服务 |
uninstall.bat |
卸载(删快捷方式 → 可选清模型缓存 → 删项目目录) |
DanmuGuard/
├── main.py # 服务入口
├── start.bat # 一键启动(处理代理/编码问题)
├── install.bat # 一键安装
├── uninstall.bat # 卸载
├── config.py # 所有可调参数(直播间、阈值、词库、仲裁…)
├── collector.py # B站直播间 WebSocket 弹幕采集(支持热切房)
├── normalize.py # 对抗归一化(防绕过)
├── wordbook.py # 黑称词库(控制台动态维护,热生效)
├── rules.py # 免费规则层(刷屏/分层关键词/白名单)
├── embed_filter.py # GPU Embedding 语义过滤(模板可热增)
├── arbiter.py # 本地 LLM 灰色带仲裁(可降级)
├── service.py # 主服务编排 + 本地 WS 推送 + 控制台接口
├── web.py # 本地 Web 控制台(含词库卡片 + 反馈按钮)
├── userscript.user.js # 浏览器端油猴脚本(实时隐藏)
├── tools/ # 离线分析工具(阈值校准/反馈训练/集成测试)
└── data/violations.tsv# 违规弹幕落库
pip install bilibili-api-python sentence-transformers aiohttpPyTorch(CUDA)通常已随系统预装;若没有,按 pytorch.org 安装 CUDA 版。
config.py常见调整:ROOM_ID = 0← 0 表示未设置,启动后在控制台填入目标直播间房间号(或直接改这里)EMBED_THRESHOLD = 0.70← 语义命中阈值(可在控制台实时调整验证效果)
- 双击
start.bat。看到弹幕过滤服务启动: 房间 未设置(请在控制台填写), WS 127.0.0.1:8910即成功。 首次启动会自动从 HuggingFace 下载 bge-small-zh 模型(约 100MB),以后秒开。
启动后浏览器打开 http://127.0.0.1:8912:
- 即时切房间:换房间号点「切换房间」,采集器自动断线重连,无需重启服务
- 实时调阈值:拖阈值滑杆,点击应用即时生效
- 🕵️ 黑称词库(v2 新增,直击痛点):批量粘贴要屏蔽的词,支持分组、白名单、热生效——不用改代码,改词即时拦
- 误杀/该杀反馈(v2 新增):最近违规表每行两个按钮,标注错误拦截后可离线训练分类头
- 实时统计与违规流:收到/规则/语义/仲裁/失败/采样计数 + 最近违规弹幕滚动列表
- 浏览器装 Tampermonkey(tampermonkey.net)
- Tampermonkey 管理面板 →「添加新脚本」→ 粘贴
userscript.user.js内容 → Ctrl+S - 打开任意直播间页面(
https://live.bilibili.com/房间号)刷新即生效
脚本连
ws://127.0.0.1:8910,收到违规弹幕文本后通过 MutationObserver 实时隐藏匹配弹幕。
直播间弹幕(WebSocket)
↓ bilibili-api 采集
规则层(免费) → 刷屏(高频/重复/纯数字)
→ 白名单优先(系统+用户)放行
→ 确定性攻击词(傻逼/滚出等) + 用户黑称词库 子串匹配
↓ 未命中
Embedding 语义层 → bge-small-zh(GPU) 与模板(默认+用户黑称)相似度
├─ ≥ 阈值 → 明确命中 → 违规
├─ 灰色带 → 本地 LLM 仲裁(Qwen) 是否攻击 → 违规/放行(可降级)
└─ < 灰色带 → 放行(并按 1/N 采样落负样本)
↓ 命中
违规弹幕 落库 + 记录 + WS 推送给浏览器
↓ 控制台可标注 误杀/该杀(落 feedback.tsv)
油猴脚本(MutationObserver) 隐藏页面上匹配的弹幕
固定模板追不上直播间不断出现的黑称/梗。在控制台「黑称词库」卡片批量粘贴(用顿号/逗号/换行分隔),点加入即可:
- 屏蔽词:命中即隐藏,同时计入语义层模板(捕变体)
- 白名单词:即使含歧义攻击词也放行(适用于夸奖/玩梗)
- 分组:便于按选手/队伍/话题管理
- 持久化
data/wordbook.tsv,运行期热生效,删词即时恢复
analyze_threshold.py:读通过采样负样本,输出得分分布 + 建议阈值analyze_feedback.py:读反馈标注,训练分类头 + 输出误杀 Top 词integration_test.py:进程内集成测试(15 项全通过验证)
| 参数 | 默认 | 说明 |
|---|---|---|
ROOM_ID |
0 | 目标直播间房间号(0=未设置,启动后在控制台填入) |
EMBED_THRESHOLD |
0.70 | 语义命中阈值,越低越宽松(误杀多) |
SPAM_MAX_PER_USER |
15 | 单用户 8 秒内最大弹幕数 |
SPAM_MAX_TEXT_REPEAT |
5 | 同文本重复次数阈值 |
EMBED_BATCH |
64 | 批量 embedding 大小 |
WS_PORT |
8910 | 本地推送端口(油猴脚本默认连) |
WEB_PORT |
8912 | 可视化控制台端口 |
- 看不到隐藏效果:确认服务在跑 + 脚本已保存 + 页面已刷新;控制台执行
__danmuFilterDebug()查看状态 - 启动报代理错误:务用
start.bat启动(它会清理异常NO_PROXY变量,Python 直跑可能崩在 httpx) - 模型下载 401/失败:首次需能访问外网;必要时设
HF_ENDPOINT=https://hf-mirror.com - 换直播间:
start.bat启动后用控制台随时切,根本不用碰配置 - 需求「一键安装」:
install.bat会在无 Python 时明确引导,小白照提示做即可
本项目的全部代码、配置、批处理脚本、油猴脚本、文档及图标均由 AI 模型生成(由 DeepSeek 驱动的 AI 助手完成全部开发、测试与打包)。项目仅依赖 AI 生成时所需的标准开源库(bilibili-api-python、sentence-transformers、aiohttp、websockets)与开源模型(BAAI/bge-small-zh-v1.5),不包含任何仅供 AI 使用的专有代码。
All code, configuration, batch scripts, userscripts, documentation and assets in this repository were generated with AI (DeepSeek-powered assistant). The project only uses standard open-source dependencies and the open model BAAI/bge-small-zh-v1.5.
使用本项目即表示你理解:代码由 AI 编写,可能存在未覆盖的边界情况;欢迎提交 Issue 与 Pull Request 共同完善。