前言¶
在 DSH(DeepSeek Harness)里做智能体时,会话可以记意图、调工具,但 B 站观看历史通常散落在官方 App 里,和你在 Harness 里写的「本周少刷长视频」之类计划很难对照。手工导出或截图既费事,也不方便让模型按标题写结论。
下面介绍社区插件 dsh-bili-statistics(维护者 apiaoapiao,分类:联网工具)。它通过 B 站官方 API 读取你自己的观看历史,在本地算出统计事实,再让宿主模型写概览与计划完成情况,结果可以出现在会话卡片、Markdown/HTML 报告,或通过 B 站私信、邮件推送。插件以 npm 包 dsh-bili-statistics 发布,当前版本 0.2.0,许可证 MIT。
这是什么¶
Bilibili Watch Statistics 是面向 DSH web profile 的 B 站观看统计插件:把 plan(计划) 与 what you actually watched(实际观看) 放在同一套流程里处理。
数据流大致是:拉取观看历史 → 本地计算统计项 → 可选地由模型生成概览、计划状态与摘要语气 → 输出报告并可选通知。README 强调无运行时依赖、支持二维码登录、本地 Markdown/HTML 报告、私信与邮件 digest,以及可配置的定时任务。
核心功能¶
以下能力均来自项目 README 与 package.json 说明。
统计
- 条目数、平均完播、22 点后的占比、连播链路等,并与最近 14 次运行对比。
- 按日、周、月或自定义区间统计,支持日历窗口或滚动窗口。
模型备注
- 模型可概括本期观看状态(例如「深夜推荐连刷」),给出一句证据、约 150–350 字的概览,以及 1–3 条计划状态;每条需提到具体视频标题或 UP 主,并引用至少 2 条记录索引。
互动与直播
- 统计窗口内的点赞、投币(含数量)、收藏;收藏按文件夹保存时间,点赞与投币与观看记录交叉核对。
- 统计看过的直播场次及大致耗时。
报告与归档
- 输出 Markdown 或自包含 HTML,自动归入
daily/、weekly/、monthly/、custom/等目录。
通知与调度
- B 站私信和/或邮件,语气由同一份可编辑 prompt 控制。
- 支持日/周/月/自定义调度,到点自动拉历史、写报告、发 digest,无需开会话。
登录与配置
- 网页端与 TV 端二维码登录;网页通道被拦时自动切 TV。
- 登录、模型、prompt、调度、保存路径、通知等集中在 DSH Settings 的 Bilibili watch statistics 页面,不必记工具名。
环境要求¶
- DSH web profile
- Node.js 22 或更高(
package.json中engines.node:>=22) - 一个用于读取观看历史的 B 站账号(扫码登录)
- 若要用 B 站私信推送,还需另一个账号发送私信(API 不允许给自己发消息)
安装与启用¶
推荐从 npm 安装:
dsh plugin --profile web add dsh-bili-statistics
包内带有默认配置,安装后刷新 GUI 即可看到工具、卡片与设置页。若修改插件源码下的 src/*.js,需重启 dsh web(ESM 加载器会缓存旧实现,不会热替换)。
改默认值可编辑 profile 的 cordis.patch.yml,或在设置页修改(设置页写入的 override 优先级更高)。
典型用法¶
设置页快速上手¶
- 打开 DSH Settings,侧边栏选择 Bilibili watch statistics。
- 在 Current status 下点 Scan → Account that reads watch history,用 B 站 App 扫码并确认(网页通道受阻时会自动 fallback 到 TV)。
- 若要收私信,用同样方式登录 Account that sends DMs(第二个账号)。
- 在 Model and tone 选择 provider 与 model;不选模型也可运行,报告仅列出数字。
- 点 Run statistics now,在 Latest output 查看 digest 效果。
- 需要定时任务时,开启 Schedule,选周期与触发时间,并在 Notification channels 勾选 DM 或 Email。
设置写入 state_dir/settings.json,启动时与 profile 配置 deep-merge,重启后仍保留。删除该文件可回退到 profile 配置。设置页可改模型、prompt、开关、digest 长度、收件 UID、调度规则、保存格式、报告目录、通知渠道与 SMTP 等;Cookie 与发送方 UID 仍须来自 profile 配置,通过设置页提交这些字段会被拒绝并在响应中列出被拒键名。
会话内工具链¶
不打开设置页时,也可在会话中让模型直接调用工具。常用工具包括:
| 工具 | 作用 |
|---|---|
bili_intent_set |
记录本轮计划(自由文本) |
bili_intent_status |
查看计划、最近运行、下次调度、通知渠道、两账号登录状态 |
bili_intent_login / bili_intent_login_poll |
二维码登录与轮询保存凭证(role: reader / sender) |
bili_intent_facts |
拉历史并计算统计(mode: daily/weekly/monthly/custom,window: calendar/rolling,from / to) |
bili_intent_annotate |
写入 1–3 条计划状态(模型无结论时的兜底) |
bili_intent_report |
渲染卡片并保存 Markdown/HTML |
bili_intent_feedback |
对结果评分 |
bili_intent_notify |
推送 digest(dry_run: true 仅预览) |
典型链示例:
bili_intent_set(text="I want to sleep earlier this week, no long videos at night")
bili_intent_facts(mode="weekly")
bili_intent_report(run_id="<run_id from the previous call>")
bili_intent_facts 返回统计与带索引的证据列表。若希望模型自行判断,可在 facts 后在会话中写 1–3 条结论,用 bili_intent_annotate 保存(每条至少引用 2 个有效索引),再调用 bili_intent_report。
适用场景与注意¶
适合谁
- 已在 DSH web 环境跑 Harness,希望把 B 站观看习惯与自订计划(学习、控时、内容类型约束等)对齐的开发者或重度用户。
- 需要本地报告归档,或定时把 digest 发到私信/邮箱、少开手动会话的人。
使用前请知悉
- 插件以当前 dsh 进程权限运行,会访问 B 站 API 与本地报告目录;安装前应阅读 GitHub 仓库 源码与 MIT 许可证,确认 Cookie、SMTP、收件 UID 等配置方式可接受。
- 社区插件目录 SkillHub 上的 dsh-bili-statistics 页 与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本文介绍的是社区维护的联网工具类插件。
结尾¶
dsh-bili-statistics 把 B 站官方观看历史、本地统计与 Harness 里的计划文本串成一条可重复 pipeline:可手动「Run statistics now」,也可交给调度自动出报告和通知。若要进一步了解参数与 cordis.patch.yml,以仓库 README(含 README.zh-CN.md)为准。
- 目录页:https://www.skillhub.cn/plugins/apiaoapiao/dsh-bili-statistics
- GitHub:https://github.com/apiaoapiao/dsh-bili-statistics