BiliFilter —— 基于本地LLM的 Bilibili 弹幕过滤器

April 28, 2026 · View on GitHub

本项目依赖 Hugging Face 上的配套微调模型
dddng/gemma3_4b_BiliFilter_v2

借助 LM Studio 的 OpenAI 兼容本地接口,你可以在本地过滤B站弹幕。浏览器中只需安装脚本。


📢 新模型通知

现已提供新版模型:

gemma4_e4b_bilifilter

如果你想体验新版模型,请使用新版脚本:

BiliFilter_gemma4.js

新模型安装方法

  1. 在 LM Studio 中下载新版模型:dddng/e4b_bilifilter
  2. 启动 LM Studio 的本地 OpenAI 兼容服务器
  3. 确认已启用 CORS
  4. 在 Tampermonkey 中安装 BiliFilter_gemma4.js
  5. 保存脚本并刷新 Bilibili 视频页面

对旧模型 dddng/gemma3_4b_BiliFilter_v2的支持可能会在未来被移除

✨ 特性

  • 本地运行:所有推理均在本地完成
  • 多种分类:色情低俗、恶意刷屏、人身攻击、垃圾广告、引战、剧透、错误科普、正常、未分类
  • 即装即用:无需修改网页源代码,脚本自动 Hook 弹幕
  • 可调策略:保留 / 隐藏指定分类、调试模式、并发与队列长度等均可一键修改

🚀 快速开始

1. 安装 LM Studio 并下载模型

  1. 前往 https://lmstudio.ai 下载安装包并安装
  2. 下载dddng/gemma3_4b_BiliFilter_v2

2. 启动本地 OpenAI 兼容服务器并启用 CORS

  1. 前往 开发者
  2. 点击左上 Settings,勾选 启用 CORS
  3. 确认「Status」为 Running,端口默认为 1234

3. 安装浏览器脚本

  1. 安装 Tampermonkey
  2. 点击「新建脚本」,粘贴BiliFilter.js的内容
  3. 保存并刷新页面

⚙️ 高级配置

变量功能默认值
BATCH_SIZE单次推送给模型的弹幕数10
MAX_CONCURRENT_REQUESTS并发请求上限2
KEEP_CATEGORIES永远保留的分类集合['正常', '未分类']
SHOW_CATEGORYtrue 时在弹幕后追加 [分类]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