bili-duty
Verifiedbili-duty · v0.1.3 · MIT · Web UI
刷B站值班表:定时唤醒某个会话去扫 B 站、读字幕与评论挑出值得看的、写一份日报、维护判重表 —— 判断留给会话里的 AI,插件只做调度、配置与记录
Install
dsh plugin add bili-duty Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
bili-duty · 刷B站值班表
一个 DeepSeek Harness (DSH) 插件:定时唤醒你指定的那个会话,让它去扫 B 站、读字幕与评论、挑出值得你花注意力的几条、写一份日报,并维护判重表。
⭐ 设计红线:插件里没有第二个 AI。 插件只做「调度 + 配置 + 记录」,"值不值得看"的判断留给会话里的 AI(它带着你的完整上下文与人格设定)。所以插件不调
ctx.llm.stream(),也无需任何 API Key。
它解决什么问题
首页推荐流是按"点击率"排的,不是按"值不值得占用你一次注意力"排的。这个插件把这件事变成一份每天一份的短报告:
- 按你给的关键词扫最近几天的新视频;
- 用字幕原文(主依据)+ 简介 + 评论判断内容有没有干货;
- 只留少数几条,写清「为什么值得」;
- 已经推过的记进判重表,不会重复打扰你。
反过来它也不做这些:不替你评论吵架、不参与讨论、不替你做决定、不碰你账号(自动评论默认关闭)。
系统要求
| 项 | 要求 |
|---|---|
| DSH | >= 0.2.0-rc.2(桌面端或 Web 端均可) |
| Node.js | >= 22 |
| 其它依赖 | 零。不需要 Python、不需要 uv、不需要 API Key |
安装
方式 A:桌面端(最常见)
还没拿到包就先克隆:
git clone https://github.com/k423Charotte/bili-duty.git
然后在 DSH 里让 AI 装它(或直接调 plugin_manager 工具):
plugin_manager action: install_bundle target: <本包目录的绝对路径>
方式 B:命令行(装了 npm 版 CLI 的机器)
dsh plugin add bili-duty
⚠️ 这条需要机器上有
dsh命令(即 npm 上@deepseek-ai/dsh提供的 CLI,npm i -g @deepseek-ai/dsh)。 桌面端默认没有这个命令 —— 那种情况请走上面的方式 A。
装完必须重启一次 DSH
新插件的行要重启时才进入组合;替换已装包也必须重启才能加载新一代 JS 模块。
# Windows:脚本会结束当前 DSH 进程再启动它(必须带 -ExecutionPolicy Bypass)
powershell -ExecutionPolicy Bypass -File tools\restart-dsh.ps1
macOS / Linux:这个脚本只在 Windows 上有意义 —— 请手动退出并重新启动 DSH。插件本体的代码是跨平台的(没有平台专属 API)。
重启后在页面上按一次 F5(客户端模块是页面侧的东西,重启宿主不等于刷新页面)。
⛔ 如果重启后弹「应用无法启动」,不要点那个「禁用第三方插件、备份 profile patch 并重启」按钮 —— 它会用安全模式 patch 整份替换你的 profile 配置,冲掉你手工调好的模型与偏好。 要摘除本插件,只删 profile 里
cordis.patch.yml末尾那段insert(本插件那几行)再重启即可。
首次配置(四步)
- 打开 设置 → 刷B站值班表。
- 选目标会话 —— 这是最容易踩的一步:
⚠️ 被唤醒的会话必须此刻正在 DSH 里打开着。插件只能把任务投给活着的会话; 目标会话没打开时,那一轮会记一条失败(不会静默)。
- 填关键词(默认给的是示例,请改成你真正关心的领域)。
- 点 「立即跑一轮」 试一次 —— 目标会话会被唤醒并开始干活。
之后可以把它设成 每天 或 每周 定时跑(可勾选「只在谷时跑」避开高峰时段)。
无人值守的前提(先看这条)
这个插件的卖点是「你不在电脑前,它替你看」,但工具调用的权限在你手里:
- 如果你的 DSH 权限设置是每次工具调用都要确认,那么被唤醒的那一轮会在第一次调用
bili_duty_*时停住等你 —— 人不在,这一轮就白跑。 - 想真正做到无人值守,需要放宽对应会话的权限(允许自动执行工具调用),或至少让这类工具免确认。
- ⭐ 建议:先手动点一次「立即跑一轮」,盯着它跑完一轮,确认没有被审批卡住,再交给定时。
插件的数据面以只读为主(搜索 / 详情 / 字幕 / 评论);写操作只有三处:写自己的记录文件、写日报、以及在你显式打开「自动评论」时发评论。 所以放宽权限的风险面,主要取决于「被唤醒那个会话里的 AI 还能做什么」——请按你自己的判断取舍。
登录是「可选增强」,不是前置条件
| 不登录 | 扫码登录后 | |
|---|---|---|
| 搜索 / 视频详情 / 评论 | ✅ 可用 | ✅ |
| 字幕原文(判断质量最高的通道) | ❌ 读不到(B 站的 AI 字幕需要登录态) | ✅ 多语言轨、可分段读 |
| 自动评论 | ❌ | ✅(默认仍是关闭) |
设置页的「账号与登录」里点扫码登录,用手机 B 站 App 扫二维码即可。 ⚠️ 手机上确认时选「记住我 / 长期」,选 24 小时的话第二天要重扫。
凭证只落本机:<你的 DSH 数据目录>/bili-duty/bili_credential.json,不上传任何地方,接口也从不回显。
它需要哪些权限、碰哪些文件
插件只碰这些地方:
| 路径 | 内容 |
|---|---|
<DSH 数据目录>/bili-duty/ |
config.json(设置)、runs.md(执行记录)、seen.md(判重表)、out/(日报)、bili_credential.json(凭证,若登录过) |
你指定的 workspace(可选) |
若填了,上面那三个记录文件改写到你指定的目录 |
profiles/<profile>/cordis.patch.yml |
仅由 install_bundle 写入那一行 insert(插件自己不动 profile) |
关于「自动评论」:默认关闭,且开启后有三道代码级护栏(不是靠提示词自觉)—— 总开关必须开着、必须有 @ 对象、同一视频只评一次、每轮条数封顶。任一条不满足会被直接拒绝并写进执行记录,不会发出请求。
⚠️
bili_credential.json等同于你的账号密码(含SESSDATA/bili_jct)。别把它同步到云盘,别随手备份、截图、粘贴。
报告与记录长什么样
- 日报:
out/YYYY-MM-DD.md,每条一段(标题 / UP / 链接 / 播放量 / 为什么值得 / 一句话),并标明依据来源(字幕原文 / 简介 / 仅标题)。 报告末尾固定一行「因无字幕跳过 N 条」(N=0 也写,免得你以为全看过了)。 - 执行记录:
runs.md,每轮一行 ——时间 | 触发 | 结果 | 扫描 | 收取 | 跳过 | 无字幕 | 评论 | 备注。失败也写,不静默。 - 判重表:
seen.md,每个视频一行(BV 号 / 首次见到 / 处置 / 理由 / 评论记录)。
一条硬纪律:判重表读不出来时,不许当成"没记录过" —— 那一轮会在报告里明写,并且不发评论。
常见问题
设置里根本没有「刷B站值班表」这一栏?
先按 F5 刷新页面。仍然没有就看 <DSH 数据目录>/bili-duty/apply-probe.json 与 apply-error.log
(记录插件 apply 时拿到了哪些服务、有没有报错)。插件加载失败不会影响 DSH 本身启动。
点了「立即跑一轮」,但没有任何会话被唤醒?
几乎总是「目标会话没打开」。去看 runs.md,会有一行写明原因(NO_SESSION)。把那个会话在 DSH 里打开,再点一次。
报告说「判重表读不到」?
说明 seen.md 读不出来(被占用、权限、或误删成目录)。这时不要以为"没记录过" —— 插件按纪律跳过了发评论。修好文件再跑。
字幕读不出来? 两种可能:① 没登录(B 站 AI 字幕需要登录态);② 这个视频确实没有字幕轨 —— 返回里会明说哪一种是。
搜索报 412?
B 站对「按最新排序」有风控。插件不会硬重试,会改用后台标签打开浏览器搜索页读候选,或退到「综合 / 最多播放」排序。
「每轮最多一条评论」到底几条?
默认 1 条;设置页把 comment_max_per_run 调高才会更多(同一视频仍然只评一次)。
排障与自检
四套离线检查都不需要 DSH 在跑、不碰你的真实数据(用临时目录 + mock 网络):
npm test # Host 半:203 项(含安全回归、护栏、字幕选轨)
npm run test:client # Client 半:36 项(设置页真渲染)
npm run test:qr # 二维码编码器与参照实现逐格比对:38 项
npm run check:new-user # 新用户旅程:首次启动的默认值 / 隐私边界 / 失败提示
开发相关的架构、设计取舍与实测踩过的坑见 docs/DEVELOPMENT.md。
卸载
plugin_manager action: remove_bundle target: bili-duty
或手动删掉 profile 的 cordis.patch.yml 末尾那段 insert(本插件那几行),重启 DSH。
数据目录 <DSH 数据目录>/bili-duty/ 不会被自动删除 —— 想彻底清掉请自己删(里面有你的凭证与历史报告)。
许可证
MIT · 作者 @k423Charotte
同赛道另有一个实现:dsh-bili-scroll(JS 壳 + Python 核,路线不同)。两者都开自动评论时可能重复评论同一视频,同一时间只建议开一边。