dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
为 DeepSeek Harness 打造的极客风 B 站侧边栏
推荐流 · 点击即播 · 实时弹幕 · DASH 1080P · 扫码登录 · 历史同步 · 状态持久化 · 0 Token
不离开工作台,也能刷 B 站。
┌─ BiliMini ──────────────────────────────────────────┐
│ 推荐 | 历史 [1080P ▾] [同步] [×] │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 封面 │ │ 封面 │ │ 封面 │ │
│ │ 标题 │ │ 标题 │ │ 标题 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ 点击卡片 → ArtPlayer + DASH + 实时弹幕 │
└──────────────────────────────────────────────────────┘BiliMini 把 B 站推荐流、播放器、弹幕、账号登录、历史记录和画质切换塞进 DSH 的侧边栏。没有额外窗口,没有浏览器标签页,也没有大模型调用。
BiliMini 是一个面向 DeepSeek Harness 的第三方侧边栏插件。它注册在 DSH 的 sidebar.panellist,打开即可浏览推荐视频;点击卡片后在同一面板内播放,支持弹幕、DASH 720P/1080P、扫码登录、个性化推荐、历史记录与可选的观看进度同步。
整个插件运行在本地 DSH Host 中:账号 Cookie 只保存在本机,媒体流通过本地代理转发,前端只拿播放所需的短期令牌。插件不调用任何 LLM API,因此浏览和播放不会消耗 DSH Token。
非 B 站官方项目,与哔哩哔哩、DeepSeek、DSH 官方均无关联。
· 特性 · 说明 🧩 · 侧边栏推荐 · 直接在 DSH 内刷 B 站推荐流,支持刷新与换一批 🎬 · 点击即播 · ArtPlayer + 本地流代理,支持 Range 拖动进度 💬 · 实时弹幕 · B 站 XML 弹幕,支持开关、速度、透明度、字号、模式等设置 🎚️ · DASH 720P/1080P · 登录态使用 DASH 独立音视频轨;播放器右上角切换画质,保留当前进度 🔐 · 本地安全登录 · B 站扫码登录;SESSDATA / bili_jct 只存在 Host 本地,前端不可见 ✨ · 个性化推荐 · 登录后自动带 Cookie 请求;退出后回退匿名推荐 🕘 · 历史记录 · 最近 30 条观看记录,支持继续播放 🔄 · 历史同步 · 按网页播放器的方式节流上报进度;可选关闭,失败静默 🧠 · 状态持久化 · 记住 Tab、列表缓存和当前播放进度;切换对话/插件再回来不重置 🪶 · 0 Token · 不调用大模型,不产生 LLM Token 费用 📦 · 零构建 · 无 npm 运行时依赖、无构建步骤,播放器/弹幕/DASH/二维码均已内置 🖥️ · 多端兼容 · macOS 为开发与主要验证平台;Windows 已做路径、权限、回环地址适配
dsh plugin add dsh-bili-mini如果你的 DSH 版本要求显式 npm spec:
dsh plugin add npm:dsh-bili-mini如果你的 DSH 使用显式 profile:
# 桌面版通常使用 desktop
dsh plugin --profile desktop add dsh-bili-mini
# Web 版
dsh plugin --profile web add dsh-bili-mini也可以先检查 npm 包内容:
npm view dsh-bili-mini安装后完整退出并重新打开 DSH,然后在侧边栏打开 BiliMini。
dsh plugin add https://github.com/tuanzhanghao/dsh-bili-mini部分 DSH 版本也接受 GitHub 简写:
dsh plugin add github:tuanzhanghao/dsh-bili-miniHost 代码更新后需要完整重启,而不是只刷新网页。从源码安装时,如果 pnpm 询问allowBuilds:本项目没有构建脚本、原生依赖或postinstall,只在你信任本仓库时授权。
dsh plugin add /path/to/dsh-bili-mini把 /path/to/dsh-bili-mini 替换成你的本地仓库目录。
状态 · 播放模式 · 可用画质 未登录 · 渐进式 MP4 · 最高 720P 已登录 · DASH(独立视频/音频轨) · 720P / 1080P,取决于视频与账号权益 1080P+ / 4K · 未在 UI 开放 · 需要对应会员与视频权限
实现要点:
fnval=16,后端解析 dash.video / dash.audio,生成静态 MPD;/bili-mini/stream/ 代理,支持 HTTP Range;/bili-mini/dash/ 提供,BaseURL 使用当前 Host 的绝对地址;customType 接入 MSE;currentTime,新播放器 ready 后 seek 回原位置;dash.destroy() 再 art.destroy(),避免双音频与实例泄漏。说明:
状态保存在 client 模块内部的内存对象 panelMemory 中:不挂 window、不写 localStorage/sessionStorage、不写 Cookie。面板组件卸载再挂载时状态仍在;整页刷新会清空。
弹幕偏好与“同步历史”开关仍使用 localStorage,这是纯 UI 设置,不包含 Cookie、UID、昵称或播放令牌。
内容 · 行为 当前 Tab · 推荐/历史;切换对话或插件后保持 推荐列表 · 5 分钟内直接复用缓存,不显示骨架屏、不重复请求 历史列表 · 5 分钟内直接复用缓存;手动刷新强制请求 当前播放 · 记住选中卡片、播放数据与进度;3 小时内切回来自动恢复并 seek 登录/退出 · 清空推荐与历史缓存,避免串号或显示旧账号内容 整页刷新 · 内存清空,回到默认推荐 Tab
播放恢复依赖播放响应里的 stream/manifest 临时令牌(有效期约 3 小时),因此缓存时间与令牌 TTL 对齐;过期后不会拿旧令牌强行播放。
BiliMini 涉及 B 站账号 Cookie,边界如下:
项目 · 实现 Cookie 位置 · 仅本地 Host 的 data/cookie.json;不写前端 localStorage/sessionStorage POSIX 权限 · 数据目录 0700,Cookie 文件 0600 Windows 权限 · 不调用 chmod,交由用户目录 ACL 前端可见性 · 前端只拿 loggedIn、昵称、头像;永远拿不到 SESSDATA / bili_jct 网络范围 · 带 Cookie 的请求只发往 *.bilibili.com 重定向 · redirect: "error",避免 Cookie 被带到第三方 二维码 · 后端本地生成,不使用第三方二维码服务 日志 · 后端错误统一 redact();第一方代码不打印 Cookie、SESSDATA 或接口原始响应 媒体令牌 · 随机、短期、仅本地使用;不写入磁盘 退出登录 · 删除 data/cookie.json 及临时文件 版本管理 · .gitignore 已忽略 data/、cookie.json、*.log、.env*、.dsh-ops/
BiliMini 没有遥测、埋点、远程配置或第三方中转服务器。推荐、播放、弹幕、登录和历史同步都只在本机 DSH Host 与 B 站之间发生。
发布、打包或分享代码前,请确认data/cookie.json不存在。.gitignore只能阻止 Git 提交,不能阻止手动压缩、网盘同步或上传。
如果使用中的已安装插件仍处于登录状态,请在插件内点“退出登录”,或删除该安装目录下的 data/cookie.json;本仓库源码目录不包含任何 Cookie。平台 · 状态 · 说明 macOS · ✅ 完美支持 · 开发与主要验证平台;DASH、弹幕、登录、历史同步均已实机验证 Windows · ✅ 已做适配 · 路径、权限、文件替换、回环地址均已处理;未覆盖所有 Windows 版本 Linux · ⚠️ 理论可用 · 未做专项验证,欢迎反馈 DSH Web · ✅ 支持 · 需要浏览器支持 MSE;Firefox/Safari 的 DASH 行为可能不同 DSH Desktop · ✅ 支持 · Electron/Chromium 内核,推荐使用
Windows 细节:
path.join / fileURLToPath,不依赖 /tmp 或 macOS 固定路径;fs.chmod,Cookie 文件权限交由用户目录 ACL;rename 失败时使用 copyFileSync 兜底,避免杀毒/索引器短暂占用;localhost / ::1 归一化为 127.0.0.1,避免系统代理或双栈解析拦截。BiliMini 只使用 B 站公开接口与本地播放器:
它消耗的只有正常的网络流量和本地 CPU/GPU 解码资源。
DSH Client (React)
│ /bili-mini/api/feed · /play · /history · /login · /history/report
│ /bili-mini/dash/<token> · /bili-mini/stream/<token>
▼
DSH Host (Node.js)
│ Cookie 本地保存 · 请求头补齐 · DASH MPD · Range 流代理 · 日志脱敏
▼
Bilibili API / CDN主要模块:
index.js:Host 路由、推荐/播放/历史/登录 API、DASH MPD、流代理、CORS、缓存;bili.js:B 站接口封装、DASH 轨道归一化、历史与进度上报;auth.js:扫码登录、Cookie 原子写入、权限、脱敏;danmaku.js:弹幕 XML 解析与格式转换;client.js:React 侧边栏 UI、ArtPlayer、dash.js、弹幕插件、面板状态缓存;vendor/:ArtPlayer、artplayer-plugin-danmuku、dash.js、qrcode-generator 的内置版本。内置依赖:
dsh-bili-mini/
├── .gitignore
├── LICENSE
├── README.md
├── package.json
├── cordis.patch.yml
├── icon.svg
├── index.js
├── bili.js
├── auth.js
├── danmaku.js
├── client.js
├── locale/
│ ├── en.json
│ └── zh.json
└── vendor/
├── README.md
├── LICENSE.artplayer
├── LICENSE.artplayer-plugin-danmuku
├── LICENSE.dashjs
├── LICENSE.qrcode-generator
├── artplayer.js
├── artplayer-plugin-danmuku.js
├── dash.all.min.js
├── dash.all.min.js.LICENSE.txt
└── qrcode-generator.cjsdata/ 是运行时目录(登录后创建),已被 .gitignore 忽略,不随仓库发布。
本项目没有构建步骤,源码直接运行:
node --check index.js
node --check bili.js
node --check auth.js
node --check danmaku.js
node --check client.js
# 检查 npm 发布内容,确认不包含 data/、Cookie、日志或本地文件
npm pack --dry-run约定:
vendor/,不引入 CDN;redact();登录后仍然只有 720P?
先确认当前账号已登录、视频本身提供 1080P DASH 轨,并且账号具备对应权益。部分视频、地区或账号只返回 720P;1080P+ 不在 UI 中开放。
切换 1080P 会闪一下?