DeepSeek Harness 视频速读插件

前言

DeepSeek Harness(DSH)的核心理念是「一切皆插件」,用户可以在聊天会话中直接通过自然语言调用各种工具,而无需切换上下文。对于需要快速掌握长视频内容的开发者与研究者来说,常见做法要么在本地用脚本抓取字幕与元信息,再手动交给大模型总结;要么依赖第三方聚合站,往往拿不到完整依据或无法直接在 DSH 会话中复用。dsh-video-digest 插件解决的就是这个问题:它将视频链接转化为一份带依据的总结,并在结果中明确说明使用了哪些材料、置信度如何,让「看了什么」和「没看到什么」都透明可查。

是什么

dsh-video-digest 是一个运行在 DSH 中的本地插件,由 hunyu-feng 维护,分类属于「联网工具」。它注册了两个工具:

  • video_digest:将视频链接抓取为可读材料,调用当前默认模型,输出结构化的总结(标题、一句话结论、正文、要点、时间线、依据、置信度)。
  • video_transcript:仅提取带时间码的字幕逐字稿,不调用模型。

插件支持 B 站(BV/av、多分 P、b23.tv 短链)、YouTube、抖音(通过本机 Edge/Chrome 无头渲染取文案与话题),以及任何带视频元信息的普通网页;安装了 yt-dlp 后还可抓取更多站点的字幕。

核心功能

插件不会解码画面和音频,而是按可用性从高到低选取材料,并在输出中如实标注强度。它支持的材料与所需条件如下:

  • 字幕逐字稿:需要 B 站登录 cookie(SESSDATA)或 yt-dlp,强度为高。
  • B 站官方 AI 总结:需要 B 站登录 cookie,强度为高。
  • 章节(view_points)、简介、标签:不需要,强度为中。
  • 弹幕采样 + 热评:不需要,强度为低,仅作侧写。
  • 页面正文 / OG 元信息:不需要,强度视页面而定。

因此输出中永远包含 basis(依据)和 confidence(high / medium / low),没有字幕时会通过 warnings 说明「未获得逐字稿」。它不会假装自己看了视频。

弹幕不会原样塞给模型:先过滤掉短文本(如”哈哈”“1”“?”)并去重,再沿时间轴均匀采样,让模型看到的是全程走向而非开场刷屏。

安装与启用

插件以 bundle 形式声明(package.json 中的 dsh.bundle.patch → cordis.patch.yml),安装到 DSH 的 profile 即可:

  1. 在 DSH 中打开 插件 → 安装本地插件包(或让 agent 调用 plugin_manager 的 install_bundle)。
  2. 选择本仓库根目录作为包目录。
  3. 重启会话后,工具列表中会出现 video_digest 和 video_transcript。

卸载时在插件列表中禁用或移除 dsh-video-digest,工具会随之卸载(插件是 fiber 作用域)。

典型用法

直接用自然语言即可调用 video_digest:

帮我总结这个视频 https://www.bilibili.com/video/BV1Xdnc6jEbL

这个视频的核心论点是什么?只看技术细节 https://youtu.be/xxxxxxxxxxx

需要原文引用时调用 video_transcript:

把 BV1Xdnc6jEbL 的字幕原文取出来

工具参数:

  • url(必填):视频页链接。
  • focus:想看的角度,例如”核心论证”“代码实现”。
  • language:输出语言,默认简体中文。
  • detail:brief / standard / detailed,detailed 会送更多逐字稿进模型。
  • page:B 站多分 P 时指定第几 P。
  • cookie:B 站 SESSDATA,建议通过环境变量设置。

配置

通过环境变量可覆盖默认行为:

  • BILI_COOKIE:B 站 SESSDATA(可只填值,也可填完整 cookie 串)。设置后解锁字幕逐字稿与官方 AI 总结。
  • YT_DLP_PATH:指向 yt-dlp 可执行文件。设置后 YouTube 及其他站点走 yt-dlp 抓字幕;B 站未拿到字幕时也会尝试用它补。
  • VIDEO_DIGEST_PROVIDER + VIDEO_DIGEST_MODEL:覆盖总结用的模型路由;默认跟随 DSH 当前的 agentDefaultModel。
  • DSH_VIDEO_DIGEST_CONFIG:覆盖插件配置文件的路径。

单独给本插件指定模型(不影响 DSH 全局默认):

// ~/.dsh-video-digest/config.json
{ "provider": "deepseek-account", "model": "deepseek-v4-pro", "reasoningEffort": "max" }

优先级:工具参数 → 环境变量 → 配置文件 → agentDefaultModel → 第一个已注册 provider。reasoningEffort 可省略,省略时使用模型自己的默认档位。

插件本身不保存任何 API key:总结走 DSH 已在用的 provider/model,因此更换默认模型时仍可正常工作。

输出示例

{
  "title": "中文已死:为什么我们越来越不敢好好说话?",
  "platform": "bilibili",
  "author": "大圆镜科普",
  "durationSeconds": 427,
  "headline": "用热梗代替表达,让语言在省力中磨损",
  "summary": "……",
  "keyPoints": ["……"],
  "chapters": [{ "time": "0:00", "title": "热梗是压缩包", "startSeconds": 0 }],
  "basis": "基于章节、弹幕、热评(未获得逐字稿)",
  "confidence": "medium",
  "warnings": ["未登录 B 站,看不到字幕列表(字幕接口需要 SESSDATA)。"],
  "model": "deepseek-account/deepseek-flash"
}

适用场景与注意

适合需要快速掌握长视频内容、依赖 DSH 上下文进行后续处理的开发者与研究者。使用前应确认 DSH 桌面宿主进程的权限(例如抖音链接可能因浏览器权限问题返回空页面),必要时可在终端运行 node scripts/smoke.mjs <链接> 进行材料抓取验证。插件依赖平台未公开接口,平台改版时可能失效,此时可通过 scripts/smoke.mjs 快速自查。

结尾

dsh-video-digest 插件让 DSH 在不离开聊天会话的前提下完成从视频链接到结构化总结的全流程,依据与置信度清晰可见。更多细节可参考插件目录页与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye