Skip to content

bili-duty

Verified

bili-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

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(本插件那几行)再重启即可。


首次配置(四步)

  1. 打开 设置 → 刷B站值班表。
  2. 选目标会话 —— 这是最容易踩的一步:

    ⚠️ 被唤醒的会话必须此刻正在 DSH 里打开着。插件只能把任务投给活着的会话; 目标会话没打开时,那一轮会记一条失败(不会静默)。

  3. 填关键词(默认给的是示例,请改成你真正关心的领域)。
  4. 点 「立即跑一轮」 试一次 —— 目标会话会被唤醒并开始干活。

之后可以把它设成 每天 或 每周 定时跑(可勾选「只在谷时跑」避开高峰时段)。


无人值守的前提(先看这条)

这个插件的卖点是「你不在电脑前,它替你看」,但工具调用的权限在你手里:

  • 如果你的 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 核,路线不同)。两者都开自动评论时可能重复评论同一视频,同一时间只建议开一边。