前言¶
在 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(或重启当前配置文件)并启用插件。
典型用法¶
- 在 Files 标签页打开工作区内的视频文件。
- 右侧预览面板显示视频播放器。
- 使用原生控件播放、拖动进度条和进入全屏。
工作原理¶
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 字节的请求路径被拒绝,仅返回白名单中的扩展名。
验证步骤¶
- 启用插件并重新加载 Web UI。
- 在 Files 标签页打开一个
.mp4文件。 - 右侧预览应显示播放器,拖动进度条应正确跳转。
- 可选:打开大于 32 MiB 的文件,确认拖动进度仍然可用。
如果面板报告加载失败,请检查文件存在、位于当前会话工作区内、且扩展名在白名单中。如果报告不支持的格式,可能是容器被识别但浏览器无法解码。
适用场景与注意¶
- 适合需要在 DSH 右侧预览面板直接播放工作区视频的开发与调试场景。
- 插件以当前 DSH 进程的权限运行,安装前应查看源码与许可证(MIT)。
- 若浏览器不支持视频的编解码,面板会提示无法播放并提供 Retry 按钮。
短结尾¶
DSH Video Preview 让右侧预览面板从“不支持文件类型”变为原生视频播放器,支持大文件拖动进度,适合在 DSH 工作区中查看视频。更多细节见插件目录页与 GitHub 仓库。