为 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-bilibilinpm 源 · dsh-plugin-bilibili 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · platform
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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 解锁登录字幕
最近更新
在 GitHub 查看全部 →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。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
moxingovo/dsh-bilibili
为 DeepSeek Harness 打造的 B 站检索插件。
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,778已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7