dsh-bili-live
Manifest valid★ 1Bilibili Live Assistant (DD Version): Automatically patrol live rooms to watch streams, listen to audio and view visuals, write live notes, and rate streamers
dsh-bili-live · 直播助手(DD版)
挂在你自己的 B站 账号上,安静地看直播,离场时留一张笔记,顺手给主播打个分。
守几个主播,或者按喜好关键词自己巡场。进房后三路一起采:弹幕长连接、音频切片转写、定时抽帧看画面;看满设定的时长就走,走之前算一次分、写一张笔记,分数够好的推给你另一个账号。 平时一句话不说,只有被叫到、或者听到你设的关键词才接一句。
适用于 DeepSeek Harness(DSH)桌面版 / Web 版。
它能做什么
| 能力 | 说明 | |
|---|---|---|
| 👀 | 看弹幕 | 长连接接收弹幕,只读不发。守指定主播(行序即优先级),或按喜好关键词自动巡场。 |
| 👂 | 听声音 | 拉直播音频流切片,本机 faster-whisper 转写。不花 token、不联网。听到关键词会接话,也会写进笔记。 |
| 🖼 | 看画面 | 定时从视频流里抽一帧(PyAV 解码,不落临时视频),总结时把画面一起交给模型。 |
| ⭐ | 给主播打分 | 十维评分(另有一项恶意的隐藏扣分),权重自己调。守的主播和巡场遇到的都会打;看不满 60 秒不打分。 |
| 📝 | 写笔记 | 一场直播一张 txt:评分明细、发生了什么、大肥鱼的评价、最热闹的一分钟、弹幕摘录、主播原话。 |
| 🎛 | 手动切台 | 设置页顶上:「换个随机直播间」立刻换一个(不用等看满时长);也可以填房间号或主播 UID 直接进指定直播间。手动切进去的算随机巡场——照样打分,看满设定时长照样换台。 |
| 📬 | 高分推送 | 分数过线时把这场推给指定的 B站 账号(B站 不允许发给自己,要填另一个 UID)。只推随机巡场遇到的,守的主播分数只留在笔记里。 |
一场直播的流程
进房(守名单或随机巡场)
↓
三路同时采:弹幕长连接 / 15 秒音频切片 / 每 2 分钟一张画面
↓
离场(主播下播、被更高优先级顶掉、看满巡场时长、你点了停止)
↓
算分 → 模型写笔记 → 过线推送 → 删掉这一场的切片与截图
随机巡场
关注名单留空(或关掉「启用关注名单」)时,插件自己挑台:
- 没看过的、命中喜好关键词的房间优先
- 没命中但也没看过的
- 实在没得挑才回到最近看过的(记最近 12 间)
还有一种情况也会随机逛:开着关注名单、但名单上的主播一个都没在播。默认就会按上面的顺序随机进一个直播间(设置页「名单里全都没在播时,也去随机逛」可关掉;关掉就只在名单里干等,绝不进别人的直播间)。他们一开播,下一轮检查就会切回优先级更高的那位。
默认每间看 30 分钟就换;看不满 60 秒被切走的那一场不打分、不推送。
评分怎么算
十个维度,评的是这个主播的水平,不是「这场热不热闹」。每项先按各自满分线归一(跨数量级的走对数,比率走线性),再按权重加权,满分 10 分:
| 维度 | 默认权重 | 满分线 | 归一 |
|---|---|---|---|
| 粉丝付费率(挂牌付费者 ÷ 本场出场人数) | 19% | 10% | 线性 |
| 直播互动(每百人每分钟弹幕) | 16% | 12 条 | 对数 |
| 观众参与(发言人数 ÷ 本场出场人数) | 12% | 25% | 线性 |
| 粉丝浓度(挂牌人数 ÷ 本场出场人数) | 12% | 15% | 线性 |
| 作品获赞(每稿获赞) | 10% | 随粉丝数浮动,见下表 | 对数 |
| 更新频率(月投稿) | 8% | 5 稿/月 | 线性 |
| 路人付费率(未挂牌付费者 ÷ 本场出场人数) | 8% | 25% | 线性 |
| 弹幕热度(条/分) | 7% | 6 | 对数 |
| 人气规模(同接) | 5% | 30 人 | 对数 |
| 路人转化率(新增粉丝团 ÷ 本场出场人数) | 3% | 10% | 线性 |
作品获赞的满分线按粉丝数浮动(获赞是作品数据,跟今晚来了多少人没关系:237 人房的果宝 33882 赞/稿,10097 人房的大东彦只有 5279):
| 粉丝数 | 1万 | 5万 | 20万 | 50万 | 100万 | 200万 | 500万 | 1000万+ |
|---|---|---|---|---|---|---|---|---|
| 满分线 | 300/稿 | 600 | 1500 | 3000 | 6000 | 12000 | 30000 | 60000 |
锚点之间线性插值;粉丝数拿不到时退回 600,不连累主播。
权重在设置页自己填百分数,不用凑满 100(算分时按合计归一),填 0 就是完全不看那一项。
分母分两套:crowd = max(同接, 30) 只给「每百人弹幕」用,防止个位数房间算出「每百人 125 条」这种鬼数字;heads = max(同接, 5) 给其余所有「人数 ÷ 同接」的指标(参与、浓度、两个付费率、转化),只防 1~4 人的极端比例。付费率以前误用了 30 人兜底,30 人以下的小房间会被整体腰斩(15 人的房 3 个路人付费本来是 20%,除以 30 只剩 10%)。
档位
| 分数 | 档位 |
|---|---|
| ≥ 9 | S · 顶尖 |
| ≥ 8 | A · 很强 |
| ≥ 6 | B · 中上 |
| ≥ 4 | C · 一般 |
| ≥ 2 | D · 偏弱 |
| < 2 | E · 很弱 |
恶意内容扣分(隐藏项)
弹幕里出现带节奏、网络暴力、粗鄙语言时,结算会额外问一次模型:恶意弹幕条数超过阈值(默认 10 条)才扣分,最多扣 5 分,扣到 0 为止。本场只要有封禁(房管或主播封过人,系统自动封也算),就一律不扣分——现场已经制止过了。判定前会先分清是开玩笑(熟人互损、玩梗、跟风复读)还是真恶意,拿不准的一律不算。
接口只告诉你「谁被封了」,不告诉你为什么封,所以没法区分「封恶意弹幕」和「封广告刷屏」——一律按免责处理,宁可少扣,不冤枉已经管过场的主播。碰到「弹幕确实脏、但有人封过」这种分不清的情况,大肥鱼会在评价里如实交代一句:看到了一些不干净的弹幕,但现场已经封禁处理,分不清封的是不是这些,这次先不扣分。
只审弹幕,不审语音——转写有错字、分不清主播和连麦者,拿它扣分容易冤。
这一项不出现在直播助手正文里,只在评分日志和笔记的评分行后面挂一段算式:
评分:6.5/10(B 档 · 中上)|8.5 − 2 = 6.5
同接取的是 getOnlineGoldRank 返回的真实在线人数,不是页面上那个虚高几百倍的「人气值」。
直播笔记长什么样
2026-10-17 · 某主播 的直播
==============================================
直播间:https://live.bilibili.com/00000
开播标题:今天随便聊聊
观看时段:20:01 ~ 21:20(1 小时 19 分)
弹幕:共 1234 条,89 人发言
语音:转写出 210 段主播说的话
同接峰值:76 人在看
评分:7.6/10(B 档 · 还行)
同接 76(13.2 分) · 发言人数 30(14.8 分) · 弹幕 10(13.7 分) · 月投稿 50(20 分)
付费 10(10 分) · 大航海 0(0 分) · 获赞率 507(5 分) · 互动率 13(2.4 分)
==============================================
【这场直播大概发生了什么】
(模型写的 100~180 字现场笔记)
【大肥鱼的评价】
(模型写的 60~120 字主观看法:值不值得看、什么路数)
【最热闹的一分钟】
21:03 前后(12 条)
【弹幕摘录】
21:03 观众A:……
模型不可用时不会整张空白,会退化成「本地统计版」(时长、条数、最热闹的一分钟、高频词)。
安装
# 从 GitHub
dsh plugin --profile desktop add github:你的用户名/dsh-bili-live
# 或从本地目录
dsh plugin --profile desktop add link:/绝对路径/bili-live
装完重启 DSH,侧边栏「设置 → 直播助手(DD版)」就是它的设置页。
听声音需要本机 ASR 环境(可选)
语音转写用本机 Python + faster-whisper,两部分都要有:
# 1. 建 venv 并装依赖
python -m venv ~/.dsh/bili-live/.venv-asr
~/.dsh/bili-live/.venv-asr/Scripts/pip install faster-whisper
# 2. 下载模型(首次转写会自动下,也可手动预热)
# 默认 medium,约 1.5 GB;机器吃力可在设置页切 small
找不到 Python 时插件只是「听不到声音」,弹幕、画面、评分、笔记照常工作。
抽帧只需要 av(PyAV)与 Pillow:
~/.dsh/bili-live/.venv-asr/Scripts/pip install av Pillow
隐私
- 凭证只认自己扫的:插件自带扫码登录,不借用其它插件的登录态;没扫码就显示「还没有登录」。凭证存在插件家目录
~/.dsh/bili-live/credential.json,每 10 分钟校验一次,过期自动掉线。 - 语音转写在本机跑:音频不出本机,不花 token。只有「接一句话」和「写一张笔记」会调用模型。
- 不采集你的账号信息:插件只读直播间的公开数据(房间信息、弹幕、音频流)。
成本
| 动作 | token |
|---|---|
| 听声音、抽画面 | 0(本机计算) |
| 接一句话 | 约 800 |
| 写一张笔记 | 约 8k ~ 9.5k(含 3 张画面) |
一场 3 分钟的小直播约 9k token;长时间挂机时,也可以把「总结参考画面」关掉来省。
边界与注意事项
- 弹幕发送受 B站 风控约束:需要登录 cookie 与
buvid3;冷却与每日上限是为了不刷屏被封,别调得太激进。 - @ 识别是文本层面:B站 弹幕里的 @ 不一定带结构化字段,按「文本里出现名字/别名」判断,可能偶尔误判。
- 部分直播间有发言等级限制:发不出去时日志里有报错,插件照常观看,只是说不了话。
- 弹幕与语音记录只在内存里:进程中途退出,这一场就没了(只在正常离场时落盘)。
- 跟随 DSH 进程:关掉 DSH 就停止守候,插件不常驻后台。
- B站 不允许给自己发私信:高分推送要填另一个账号的 UID,留空则分数只写进笔记。
目录结构
index.js 宿主端:轮询开播、进退房间、读弹幕、触发回复、算分、写笔记(含 /api/bili-live/* 路由)
client.js 浏览器端:设置页那一页(自注册模块)
lib/live.mjs 与 B站 直播接口打交道(房间信息 / 弹幕长连接 / 发弹幕 / 拉流地址 / 随机房间)
lib/audio.mjs 音频拉流与切片(FLV 增量解析,只留音频 tag)
lib/asr.mjs 常驻转写进程的宿主侧封装(faster-whisper)
lib/vision.mjs 画面抽样(FLV 切片 → 抽帧)
lib/rating.mjs 十维评分:采集、归一、加权
lib/moderation.mjs 恶意内容审核(隐藏扣分,只审弹幕)
lib/recap.mjs 直播记录器 + txt 笔记落盘
lib/auth.mjs 扫码登录
lib/llm.mjs 借宿主 llm 服务生成回复与总结(失败静默降级)
lib/config.mjs 配置默认值与归一化
lib/cleanup.mjs 离场清理(切片、截图)
tools/asr_worker.py 转写工作进程(stdin/stdout 一行一条 JSON)
tools/grab_frame.py 抽帧进程(stdin 送 FLV,stdout 回 JPEG)
vendor/qrcode.js 二维码生成(MIT,qrcode-generator 1.4.4)
cordis.patch.yml 告诉 DSH:这个插件要跑起来
License
MIT
Comments
Loading…
From the same category
DeepSeek Harness plugin for Reactive Resume: bridges your resumes and job applications into a Harness session over MCP.
★ 41.7k
↓ 121/wk
MIT
Aug 24, 2026
dsh plugin --profile web add dsh-plugin-reactive-resumeby Tencent
Let AI agents use your real, logged-in browser without interrupting your work. CLI + extension for browser automation across any shell-capable AI agent.
★ 9.3k
↓ 8.7k/wk
MIT
TypeScript
Oct 20, 2026
dsh plugin --profile terminal add @wxg-prc-cpg/browser-skill-dsh-pluginby dsh-market
The plugin market inside DeepSeek Harness — browse, search, one-click install · DSH 可视化插件市场
★ 7.8k
↓ 163.6k/wk
MIT
TypeScript
Oct 20, 2026
dsh plugin --profile web add dshmarketby yjh051108
dsh-routing-suite — injector + router-standard kit: install the runtime injector first, then the task-aware reasoning-mode router preset (measured P1-P23).
★ 7k
MIT
JavaScript
Sep 18, 2026
dsh plugin --profile web add @dsh-external/dsh-super-injectorby Q00
Agent OS: the agent gets smarter on its own. We just hold the line: Interview-gated, staged evaluation, budgeted evolution loop. MCP server, 14 runtimes: Claude Code, Codex CLI, Gemini CLI, OpenCode,
★ 6.3k
MIT
Python
Oct 20, 2026
by superdesigndev
OpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn
★ 5.9k
NOASSERTION
Python
Oct 21, 2026
dsh plugin --profile web add treg-dsh