BiliFilter —— 基于本地LLM的 Bilibili 弹幕过滤器
April 28, 2026 · View on GitHub
本项目依赖 Hugging Face 上的配套微调模型
dddng/gemma3_4b_BiliFilter_v2
借助 LM Studio 的 OpenAI 兼容本地接口,你可以在本地过滤B站弹幕。浏览器中只需安装脚本。
📢 新模型通知
现已提供新版模型:
如果你想体验新版模型,请使用新版脚本:
BiliFilter_gemma4.js
新模型安装方法
- 在 LM Studio 中下载新版模型:
dddng/e4b_bilifilter - 启动 LM Studio 的本地 OpenAI 兼容服务器
- 确认已启用 CORS
- 在 Tampermonkey 中安装
BiliFilter_gemma4.js - 保存脚本并刷新 Bilibili 视频页面
对旧模型
dddng/gemma3_4b_BiliFilter_v2的支持可能会在未来被移除
✨ 特性
- 本地运行:所有推理均在本地完成
- 多种分类:色情低俗、恶意刷屏、人身攻击、垃圾广告、引战、剧透、错误科普、正常、未分类
- 即装即用:无需修改网页源代码,脚本自动 Hook 弹幕
- 可调策略:保留 / 隐藏指定分类、调试模式、并发与队列长度等均可一键修改
🚀 快速开始
1. 安装 LM Studio 并下载模型
- 前往 https://lmstudio.ai 下载安装包并安装
- 下载
dddng/gemma3_4b_BiliFilter_v2
2. 启动本地 OpenAI 兼容服务器并启用 CORS
- 前往 开发者
- 点击左上 Settings,勾选 启用 CORS
- 确认「Status」为 Running,端口默认为 1234
3. 安装浏览器脚本
- 安装 Tampermonkey
- 点击「新建脚本」,粘贴BiliFilter.js的内容
- 保存并刷新页面
⚙️ 高级配置
| 变量 | 功能 | 默认值 |
|---|---|---|
BATCH_SIZE | 单次推送给模型的弹幕数 | 10 |
MAX_CONCURRENT_REQUESTS | 并发请求上限 | 2 |
KEEP_CATEGORIES | 永远保留的分类集合 | ['正常', '未分类'] |
SHOW_CATEGORY | true 时在弹幕后追加 [分类] | false |
DEBUG | 控制台输出调试信息 | false |
HIDE_BEFORE_RESPONSE | 设置是否在 API 返回之前隐藏弹幕 | true |
BATCH_TIMEOUT | 批次超时设置(单位:毫秒) | 500 |
MAX_QUEUE_LENGTH | 排队弹幕的最大数量 | 0(不排队) |
gemma3_4b_BiliFilter_v2 模型性能
每个有害分类的过滤率(召回率 · 精确匹配)
| 分类 | 过滤率 |
|---|---|
| 色情低俗 | 0.00% (0/0) |
| 恶意刷屏 | 42.11% (8/19) |
| 人身攻击 | 20.83% (5/24) |
| 垃圾广告 | 0.00% (0/0) |
| 引战 | 50.00% (3/6) |
| 剧透 | 0.00% (0/0) |
| 错误科普 | 0.00% (0/0) |
每个有害分类的误杀率(真实为“正常”时误判比例)
| 分类 | 误杀率 |
|---|---|
| 色情低俗 | 0.00% (0/153) |
| 恶意刷屏 | 0.00% (0/153) |
| 人身攻击 | 1.31% (2/153) |
| 垃圾广告 | 0.00% (0/153) |
| 引战 | 4.58% (7/153) |
| 剧透 | 0.00% (0/153) |
| 错误科普 | 0.00% (0/153) |
总体统计
| 指标 | 数值 |
|---|---|
| 总体过滤率(精确匹配到具体类别) | 32.65% (16/49) |
| 总体过滤率(含错误类别,即识别为任意有害类) | 46.94% (23/49) |
| 总体误杀率(正常样本被判为任意有害类) | 5.88% (9/153) |
样本量
- 处理的总样本数:202
- “正常”样本数(Ground Truth):153
- “有害”样本数(Ground Truth, item-level):49