🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

B 站视频检索 moxingovo/dsh-bilibili

DeepSeek Harnessv0.2.1
moxingovo34 天前有提交已提供中文文档扫描:含敏感能力

为 DeepSeek Harness 打造的 B 站检索插件。

31.5/100
综合分
2
GitHub 星标
1,449
npm 周下载
—/5
用户评分

数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-plugin-bilibili
npm 源 · dsh-plugin-bilibili 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · platform
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 34 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-plugin-bilibili @ 0.2.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 04:17:11

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 10 处,展示前 10 条)
  • 发起网络请求
    lib/provider.js:102
    response = await fetch(absolute, { signal: AbortSignal.any(signals), redirect: 'manual', headers: {
  • 发起网络请求
    lib/provider.js:165
    response = await fetch(url, { signal: AbortSignal.any(signals), redirect: 'manual', headers });
  • 发起网络请求
    lib/provider.js:212
    response = await fetch(url, { signal: AbortSignal.any(signals), redirect: 'manual', headers: {
  • 发起网络请求
    lib/provider.js:250
    const response = await fetch(BILIBILI_COOKIE_BOOTSTRAP_URL, {
  • 执行外部命令来自配置/变量
    lib/frames.js:86
    const child = spawn(command, [...args], { windowsHide: true, stdio: ['ignore', 'pipe', 'pipe'] });
  • 发起网络请求
    lib/frames.js:119
    const response = await fetch(url, { ...signal === undefined ? {} : { signal }, redirect: 'manual', headers: { 'user-agent': 'Mozilla/5.0' } });
  • 读取本地文件
    lib/frames.js:134
    const files = (await readdir(outDir)).filter(name => name.startsWith('frame-')).sort();
  • 写入本地文件
    lib/frames.js:240
    await writeFile(videoPath, await downloadBytes(play.url, exec.signal));
  • 读取本地文件
    lib/frames.js:243
    const data = new Uint8Array(await readFile(framePath));
  • 删除本地文件递归
    lib/frames.js:251
    await rm(tmp, { recursive: true, force: true });
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-attachment@deepseek-ai/dsh-llm@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 获取视频元数据
  • 获取字幕文稿

DeepSeek Harness 插件:B 站视频检索、元数据与字幕文稿(bilibili_search / bilibili_video / bilibili_subtitles)· 匿名可用,可选 SESSDATA 解锁登录字幕

v0.2.42026-09-30
(2026-09-30) 在 DeepSeek Harness 0.2.0-rc.2 上验证通过 —— 也就是官方桌面端内置的那个 运行时(macOS/Windows 桌面端自带 dsh 运行时与插件管理,不再需要另装 Node 或 pnpm)。 运行时代码零改动;本版只是把 devDependencies 指向 @deepseek-ai/*@0.2.0-rc.2,让 npm run typecheck 从此就是对桌面端运行时的真实兼容性验证,而不是对旧版编译通过。 · 为什么可以断定兼容 逐个包比对过 0.1.7-rc.2 与 0.2.0-rc.2 的源码,本插件用到的接口一处没变: @deepseek-ai/dsh-tools(defineTool、值 schema DSL)、@deepseek-ai/dsh-llm (MessageSourceMap 与 bilibili-frames 这种由生产者自己声明的 kind)、 @deepseek-ai/dsh-system-prompt、@deepseek-ai/dsh-attachment 全部零改动; 0.2.0 新增的三个包(product-analytics、client-ui-settings-session-log、otel)与本插件无关。 · 验证 · npm run typecheck:针对 @deepseek-ai/*@0.2.0-rc.2 通过。 · npm test:21 项全过(HTTP 全部 mock,离线可跑)。 · npm run build:产物随本提交更新。 · 依赖面:dsh-tools@0.2.0-rc.2 要求 @deepseek-ai/cordis ~4.0.4,本插件声明 >=4.0.0 且 devDeps 用 4.0.4,满足。 · 桌面端注意事项 桌面端用同一套 profile 机制(~/.dsh)加载外部插件,因此本插件照常出现在它的插件管理里; 它默认监听 19387 而不是 Web 的 3080,但本插件不碰宿主端口,无需配置。
v0.2.32026-09-28
(2026-09-28) 适配 DeepSeek Harness 0.1.7-rc.2。0.1.7 移除了共享的 plugin 消息来源 kind,bilibili_frames 注入的画面上下文改为声明本插件自有的 bilibili-frames kind; 同一份构建继续服务 0.1.6-alpha.2 与 0.1.0 线。此外修掉了 bilibili_frames 在 0.1.7 上 两处会导致它根本无法注册的问题。typecheck、build 与 21 项测试全过,已在 0.1.7-rc.2 上实测。 · 修复(0.1.7 才会暴露的两处) · 值 schema 被 DSL 拒绝:bilibili_frames 的输出 schema 在数组项上写了 required: true;0.1.7 的值 schema DSL 会抛 JsonSchemaError: … schema.properties.images.items.required is not supported。 必填性只能由各属性自己的 required: true 表达(那些本来就有),因此删掉对象项上的 那一个键。此前这条错误被下面那条"没挂载就不注册"掩盖着 —— 也就是说在 0.1.7 上, 只要 frames 真的尝试注册就会失败。 · 注册位置从子 fiber 挪到插件自己的 fiber:原先是 ctx.inject(['attachments'], ctx => applyBilibiliFramesTool(ctx, …))。Cordis 里子 fiber 的注册只对该子 fiber的后代可见,而宿主域(profile bundles)挂载的插件是所有 Agent 会话的祖先的兄弟 —— 于是宿主域挂载下 bilibili_frames 永远不出现,其余四个工具 (注册在插件自己的 fiber 上)却全局可见。现在 frames 与其余四个工具一样注册在插件 fiber 上,工具在所有 preset 可用;缺少附件存储时由执行时的 ctx.get('attachments') 检查抛出结构化错误(no attachment service is mounted), 而不是让工具消失 —— 这正是"有存储才显示"与"始终可见、失败即报"之间的取舍,本版选后者。 · 兼容性 · 0.1.7 的破坏性改动:MessageSourceMap 不再有共享的 plugin 成员,改为由各生产者 在自己的模块里声明 kind(dsh-tools 就是这样声明 tool-registry / ptc-mode 的)。 bilibili_frames 原先写 { kind: 'plugin', plugin: 'dsh-plugin-bilibili' },在 0.1.7 下该 kind 已不存在;现在由本包 declare module '@deepseek-ai/dsh-llm' 显式声明 'bilibili-frames'。该声明在 0.1.6 上同样合法,所以不需要分叉发布。 · devDependencies 指向 @deepseek-ai/*@0.1.7-rc.2:因此 npm run typecheck 本身就是 对 0.1.7 的真实兼容性验证,而不是"在旧版上编译通过"。 · 实测(0.1.7-rc.2) · bilibili_search、bilibili_video、bilibili_playurl 实测可用。 · bilibili_subtitles 对没有字幕轨的视频返回文档化错误 BILIBILI_SUBTITLES_UNAVAILABLE (不是崩溃,也不是编造内容)。 · bilibili_frames 现在与其余四个工具一样在所有 preset注册(见上「修复」一节); 在缺少 attachments 服务的作用域里执行会返回结构化错误。 · 文档与技能 · README(中英)按 DSH Sidebar 同一套门面重构:顶部语言互链与 Changelog/Releases 入口、 兼容性提示与免责声明、安装/配置/工具与错误码/技能/安全/开发分节、版本对照表。 · 两个 SKILL.md 按独立插件的真实架构重写。原先它们描述的是内置包时代的宿主服务 (ctx.bilibili、provider 选择键、credentials seam、BILIBILI_PROVIDER_* 错误码)—— 这些随内置包一起移除了,照旧文档排查会得出错误结论。现在:提供方 BilibiliOfficialProvider 随插件加载、不发布服务;凭据只有「字面量 cookie →
v0.2.12026-08-25
· dsh-plugin-bilibili v0.2.1 DeepSeek Harness 的 Bilibili 插件:关键词搜索、视频元数据、字幕文稿、mp4 直链播放地址,以及真实视频帧(多模态)。默认匿名;可选 SESSDATA 解锁登录后才能看的字幕、更高画质的流和完整预览帧。 · 变更内容(v0.2.1) · 修复:视频 cid 回退——当 pages[0].cid 缺失或为 0(比如被 bilibili 截断的风控响应),回退到 data.cid;playurl、字幕、视频帧都不再用 cid=0 发起请求。 · 新增:风控降级——隐式调用 bilibili_search(未显式指定排序)撞上 -412 时,改用 pubdate 排序重试一次;调用方显式指定的排序绝不改动,第二次失败仍报 BILIBILI_RISK_CONTROL。 · 文档:技能同步到 v0.2.1(五工具集、降级与 cid 回退行为、完整错误码表)。 · 安装 dsh plugin --profile web add dsh-plugin-bilibili 或从 Git 安装: dsh plugin --profile web add git+ 重启 dsh web。新会话会获得五个 bilibili 工具;bilibili_frames 还需要 attachments 服务(标准 web 包已挂载)和支持图像的模型。 · 检查 · 20 项测试通过(vitest) · 类型检查无报错 · lib 已重新构建 · MIT 许可证
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-bilibili 为 DeepSeek Harness 打造的 B 站检索插件。 安装后 Agent 获得五个工具: - bilibili_search —— 按关键词找视频:标题、UP 主、播放量、时长、发布日期。 - bilibili_video —— 单个视频的完整元数据:各项计数、分区、分 P 列表、简介。 - bilibili_subtitles —— 单个视频的字幕文稿,合并为纯文本。 - bilibili_playurl —— 单个视频的 mp4 直链(含实际清晰度与大小),用于下载或抽帧。 - bilibili_frames —— 视频真实画面(预览帧网格、封面回退或 ffmpeg 抽帧)以图片块返回,让支持图片输入的模型直接「看」画面,不再只依赖字幕。 默认匿名可用:搜索自带匿名 cookie 引导,元数据始终可用。配置 SESSDATA 后解锁登录可见字幕轨(多数 AI 字幕都在这一层)、更高清晰度直链与预览帧路径。实际是只读的:插件只读元数据、字幕与帧画面,绝不存储或再上传视频。 非官方社区插件,与 DeepSeek、哔哩哔哩官方均无关。
展开完整文档(README 剩余 1 节)
dsh-plugin-bilibili

为 DeepSeek Harness 打造的 B 站检索插件。
安装后 Agent 获得五个工具:

- bilibili_search —— 按关键词找视频:标题、UP 主、播放量、时长、发布日期。
- bilibili_video —— 单个视频的完整元数据:各项计数、分区、分 P 列表、简介。
- bilibili_subtitles —— 单个视频的字幕文稿,合并为纯文本。
- bilibili_playurl —— 单个视频的 mp4 直链(含实际清晰度与大小),用于下载或抽帧。
- bilibili_frames —— 视频真实画面(预览帧网格、封面回退或 ffmpeg 抽帧)以图片块返回,让支持图片输入的模型直接「看」画面,不再只依赖字幕。

默认匿名可用:搜索自带匿名 cookie 引导,元数据始终可用。配置 SESSDATA 后解锁登录可见字幕轨(多数 AI 字幕都在这一层)、更高清晰度直链与预览帧路径。实际是只读的:插件只读元数据、字幕与帧画面,绝不存储或再上传视频。

非官方社区插件,与 DeepSeek、哔哩哔哩官方均无关。

Harness 兼容性:0.2.3 已在 DeepSeek Harness 0.1.7-rc.2 与 0.1.6-alpha.2 (Typert API Gateway)上验证,同一份构建同时服务两条线;0.1.0–0.1.5 线同样可用 ——本插件不使用 0.1.6+ 的 codec API。版本对照见兼容性。

安装

dsh plugin --profile web add dsh-plugin-bilibili

或直接从 Git 安装:
dsh plugin --profile web add git+https://github.com/moxingovo/dsh-bilibili

重启 dsh web,新会话即获得 bilibili_search、bilibili_video、bilibili_subtitles、 bilibili_playurl 与 bilibili_frames。

只让某个 preset 看见这些工具时,改为在 preset 里挂载:

- id: dsh-plugin-bilibili
name: 'dsh-plugin-bilibili'

可选 SESSDATA

登录 bilibili.com,打开 DevTools → 应用 → Cookie → 点开 bilibili.com 条目,复制 裸 SESSDATA 值 —— 不是整条 Cookie 头。写入环境变量或 $DSH_HOME/.env(launcher 会把该文件里每一条 KEY=VALUE 注入服务器进程环境):

BILIBILI_SESSDATA=

不配置时只返回公开可见的字幕轨;需要登录的字幕以结构化错误码 BILIBILI_LOGIN_REQUIRED 失败。
裸 token 即可 —— 插件会自己补 SESSDATA= 前缀。

配置

| 键 | 默认 | 含义 |
| baseUrl | https://api.bilibili.com | API 主机。 |
| cookie | — | 字面量 SESSDATA(secret;优先用 cookieEnv)。 |
| cookieEnv | BILIBILI_SESSDATA | 存放可选 SESSDATA token 的环境变量名。 |
| userAgent | Chrome 126 桌面 UA | User-Agent 头。 |
| requestTimeoutMs | 30000 | 单请求超时,毫秒。 |
| subtitleLanguage | zh-CN | 首选字幕语言标签;精确匹配优先,否则取第一条轨。 |
| searchMaxPageSize | 20 | bilibili_search 页大小上限。 |
| subtitleMaxChars | 80000 | bilibili_subtitles 文稿字符上限,值层截断并带 truncated 标记。 |
| timeoutMs | 30000 | 工具协作超时预算。 |

可在 profiles/web/cordis.patch.yml 中覆盖任意字段 —— 按行后层覆盖前层:

- id: bilibili
name: 'dsh-plugin-bilibili'
config:
subtitleLanguage: ai-zh

本包是自包含的:它注册工具并自带 B 站 REST 提供方,不发布 ctx.bilibili 服务,因此其它插件无法按服务名取用(早期内置包那条线会发布,见兼容性)。

工具与错误码

工具以结构化错误失败并携带下列代码:

| 代码 | 含义 |
| BILIBILI_RISK_CONTROL | -412 风控。稍后重试即可;隐式搜索已自动用 pubdate 重试过一次。 |
| BILIBILI_FORBIDDEN | -403 被拒绝。 |
| BILIBILI_NOT_FOUND | -404 视频不存在或已删除。 |
| BILIBILI_LOGIN_REQUIRED | -101 需要登录 cookie(字幕、更高清晰度直链)。 |
| BILIBILI_SUBTITLES_UNAVAILABLE | 无可访问字幕轨,或字幕体为空。 |
| BILIBILI_PLAYURL_UNAVAILABLE | 该视频没有可用 mp4 直链。 |
| BILIBILI_REDIRECT_REFUSED | 出现重定向被拒 —— 凭据安全保护生效。 |
| BILIBILI_BAD_RESPONSE | 非 JSON 响应,或信封缺 code 字段。 |
| BILIBILI_API_ERROR | 信封 code 非 0 且不属于上面这些具体映射。 |
| BILIBILI_REQUEST_FAILED | 网络失败,含超时。 |
| BILIBILI_WBI_KEYS_UNAVAILABLE | 拿不到签名密钥。 |

bilibili_frames 与其余四个工具一样注册在插件自身的 fiber 上,因此在所有挂载了本插件的位置都可见(宿主域的 profile bundles 挂载也算)。它在执行时才需要两样东西:当前作用域挂载了 attachments 服务,且当前模型路由声明了图片输入。任一缺失都会让那一次调用返回结构化错误(no attachment service is mounted in this scope / does not declare image input),而不是让工具从注册表里消失 —— 取舍是"始终可见、失败即报",见 CHANGELOG 的「修复」一节。

技能

skills/ 下附带两份技能:

- plugin-tool-bilibili —— 工具用法:参数、返回结构、错误分流、回退方案。
- plugin-web-bilibili —— 宿主侧提供方:配置键、SESSDATA 凭据、WBI 与风控行为、完整错误码表。

DeepSeek Harness 不会自动加载插件包内的技能。 把它们复制到用户技能根目录,或在 preset 的 skill-filesystem 里指向已安装的包:

用户根目录 —— 每个挂载了 skill-filesystem 的 preset 都能看到
cp -r node_modules/dsh-plugin-bilibili/skills/ ~/.dsh/skills/

或:把技能留在包里,在 agent preset 里引用
- id: skill-filesystem
name: '@deepseek-ai/dsh-skill-filesystem'
config:
customSkillDirs:
- '/profiles/web/node_modules/dsh-plugin-bilibili/skills'

两种方式都能让 Agent 在调用工具前先查阅对应技能。

安全

- cookie 只从环境变量(或显式的字面量配置)读取,绝不进入日志或工具输出。
- 每次请求拒绝重定向,cookie 不可能被转发到其他源。
- cookie 只发送给配置的 API 主机(默认 api.bilibili.com);字幕 CDN 下载不携带 cookie。
- 不下载视频与音频(bilibili_frames 的 extract 模式会把 mp4 下到临时目录供 ffmpeg 抽帧,随后删除)。

开发

需要 Node 22 或更新:

npm ci
npm test # 20 项,完全离线(HTTP 全部 mock)
npm run typecheck # 针对已发布的 DeepSeek Harness 包执行
npm run build

仓库用 package-lock.json 钉死依赖树,CI 跑的就是上面这四条命令(.github/workflows/ci.yml)。发布流程见 RELEASE.md。

已知问题

DeepSeek Harness 官方包的早期 rc 版本声明了未发布的 peer 依赖:dsh-agent 0.0.1-rc.1/rc.2 与 dsh-session 0.0.1-rc.1/rc.2 引用了 @deepseek-ai/dsh-type-meta,该包不在 npm 注册表上。全新安装时若解析器落到这些版本,会以 @deepseek-ai/dsh-type-meta 的 404 失败(已在 pnpm 11 与 npmmirror 镜像复现;npm 解析到 0.0.1-rc.5 所以成功)。对策:用 npm 配合仓库内的 package-lock.json(npm ci),或在已装好 harness 的工作区内执行 dsh plugin add —— 其 lockfile 已锁定可用版本。这是上游 rc 阶段的发布问题,上游修复元数据后自动消失。

兼容性

| 插件版本 | DeepSeek Harness | 说明 |
| 0.2.3 | 0.1.7-rc.2、0.1.6-alpha.2 | 0.1.7 移除了共享的 plugin 消息来源 kind,bilibili_frames 改为声明自有的 bilibili-frames kind;一份构建两条线通用。 |
| 0.2.2 | 0.1.6-alpha.2 | 已验证,无需改代码(本插件不使用 typert codec API)。 |
| 0.2.0–0.2.1 | 0.1.0 – 0.1.6 | bilibili_playurl 与 bilibili_frames 在这一段落地。 |
| 0.1.x | 0.1.0 线 | 只有 bilibili_search / bilibili_video / bilibili_subtitles。 |

0.1.7-rc.2 上实测:bilibili_search、bilibili_video、bilibili_playurl 可用; bilibili_subtitles 对无字幕视频返回文档化错误 BILIBILI_SUBTITLES_UNAVAILABLE。
typecheck、build 与全部 20 项测试针对 @deepseek-ai/@0.1.7-rc.2 通过。

许可证

MIT,见 LICENSE。
预览分享卡片长什么样 ↓moxingovo/dsh-bilibili
分享 · DeepSeek Harness Hub
moxingovo/dsh-bilibili

为 DeepSeek Harness 打造的 B 站检索插件。

回到顶部