DSH Video Preview:在右侧面板直接播放工作区视频

前言

在 DeepSeek Harness(DSH)中打开工作区内的视频文件时,右侧文档预览面板通常只能显示“不支持的文件类型”,或者受限于 RPC 预览读取上限(32 MiB),拖动进度条无法正常跳转。DSH 的设计理念是“一切皆插件”,社区维护了独立的插件目录与仓库。下面介绍一款客户端插件,它让右侧面板原生渲染视频播放器,并支持大文件拖动进度。

是什么

  • 插件名称:DSH Video Preview
  • 维护者:LiFenrir
  • 定位:在 DSH 右侧文档预览面板直接播放工作区视频的客户端插件
  • 核心价值:避免“不支持文件类型”提示,支持拖动进度,突破 32 MiB 预览上限

功能说明

  • 原生播放器:在右侧预览面板内渲染 <video controls playsInline preload="metadata">,支持播放、暂停、进度条拖动与全屏。
  • HTTP Range 支持:提供经过身份验证的 Host 路由 /api/dsh-video-preview/stream,实现 HTTP Range 响应(206/416),使拖动进度不再受限于 RPC 预览读取上限。
  • 4 MiB 分块读取:通过 ctx.fs.readByteRange 进行分块读取,在浏览器发起 GET 之前用 HEAD 请求校验路径、MIME 类型与工作区权限。
  • 扩展白名单:仅识别并返回 415 状态码的已知视频扩展,其他文件类型直接拒绝。
  • 主题跟随:播放器遵循 DSH 主题,通过 --dsw-alias-* 设计 tokens 保持视觉一致性。

支持的容器与编解码

容器识别不代表浏览器能解码,仍需浏览器具备对应编解码器:

扩展名 Content-Type
.mp4, .m4v video/mp4
.mov video/quicktime
.webm video/webm
.ogv, .ogg video/ogg
.mkv video/x-matroska
  • 最广兼容:MP4 中的 H.264/AAC、WebM 中的 VP8/VP9。
  • .mov 常包含 ProRes,.mkv 常包含 H.265/AC-3 等浏览器未内置解码器的编解码。解码失败时面板会提示“This browser cannot play this video format”,并提供 Retry 按钮。

安装与启用

从 npm 安装

dsh plugin add @lifenrir/dsh-video-preview

从本地目录安装

git clone https://github.com/LiFenrir/dsh-video-preview.git
dsh plugin add /absolute/path/to/dsh-video-preview

从 git 安装

dsh plugin add git+https://github.com/LiFenrir/dsh-video-preview.git

安装完成后,重新加载 Web UI(或重启当前配置文件)并启用插件。

典型用法

  1. 在 Files 标签页打开工作区内的视频文件。
  2. 右侧预览面板显示视频播放器。
  3. 使用原生控件播放、拖动进度条和进入全屏。

工作原理

  • index.js 通过 ctx.connection.fetch.register 在经过身份验证的连接层上注册流媒体路由。
  • 路由通过 workspaceFileScope 查找会话工作区,再利用 ctx.fs 解析与获取路径信息,保持沙箱规则生效。
  • client.js 为支持的视频扩展注册文档预览定义与面板组件。它解析 dsh-resource://file/session/<sessionId>/<path> 地址,执行 HEAD 请求校验,仅在通过后指向 <video> 元素的流地址。

安全说明

  • 流媒体路由通过 DSH 的身份验证连接层提供,路径相对于会话工作区根目录,并受 ctx.fs 沙箱约束。
  • 响应头使用 Cache-Control: private, no-store 与 X-Content-Type-Options: nosniff。
  • 错误响应不泄露内部错误细节。
  • 包含 NUL 字节的请求路径被拒绝,仅返回白名单中的扩展名。

验证步骤

  1. 启用插件并重新加载 Web UI。
  2. 在 Files 标签页打开一个 .mp4 文件。
  3. 右侧预览应显示播放器,拖动进度条应正确跳转。
  4. 可选:打开大于 32 MiB 的文件,确认拖动进度仍然可用。

如果面板报告加载失败,请检查文件存在、位于当前会话工作区内、且扩展名在白名单中。如果报告不支持的格式,可能是容器被识别但浏览器无法解码。

适用场景与注意

  • 适合需要在 DSH 右侧预览面板直接播放工作区视频的开发与调试场景。
  • 插件以当前 DSH 进程的权限运行,安装前应查看源码与许可证(MIT)。
  • 若浏览器不支持视频的编解码,面板会提示无法播放并提供 Retry 按钮。

短结尾

DSH Video Preview 让右侧预览面板从“不支持文件类型”变为原生视频播放器,支持大文件拖动进度,适合在 DSH 工作区中查看视频。更多细节见插件目录页与 GitHub 仓库。

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

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

Xiaoye