dsh-video-preview:在 DSH 侧边栏内联预览视频并支持拖动进度条

前言

在 DeepSeek Harness(DSH)里用 better-sidebar 浏览工作区文件时,常见预览类型是图片、PDF、Markdown 和代码,视频却没有对应预览器:.mp4 等文件往往落在 code 视图(乱码)或只剩下载。即便走 better-sidebar 自带的 /sidebar/file 媒体路由,也不支持 HTTP Range,大文件还受 mediaLimit(默认 20MB)限制,浏览器无法正常 seek。

下面介绍社区插件 dsh-video-preview(维护者 JackAIStudio,分类为客户端)。它是 dsh-better-sidebar 的视频预览扩展,fork 自 zemul/dsh-video-preview;上游停在 0.1.4 且在当前 DSH 上装好也不工作,本仓(当前版本 0.1.6)修复了宿主路由注册、路径准入,并在桌面版恢复了进度条拖动。npm 上的 dsh-video-preview 仍是上游 0.1.4,不要用 npm 包名安装。

这是什么

插件通过 ctx.betterSidebar.registerFileViewer 注册 id 为 video 的预览器,与内置 viewer 同级。在侧边栏打开支持后缀的视频时,内联渲染带 controls 的 <video> 播放器;同时注册一条支持 Range(206 Partial Content)的 /video/* 宿主路由,用流式分片下发,不受 better-sidebar mediaLimit 约束。

依赖 better-sidebar >= 0.4.0(需要 registerFileViewer 服务)。许可证 MIT,Node >= 20。

核心功能

预览器

  • 后缀:.mp4、.m4v、.webm、.mov、.qt、.mkv、.avi、.wmv、.flv、.ogv、.ogg、.mpeg、.mpg、.3gp、.3g2、.m2ts 等。
  • 播放器:preload=metadata,支持播放/暂停、拖进度条(Web 端经 Range 206)、倍速、全屏、音量;底部显示文件名与「下载」链接(浏览器无法解码的格式仍可下载原文件)。
  • Side card 设置页「文件预览」清单中有 Video 卡片(含 16px 播放器图标),可单独启用/禁用。
  • 客户端自包含,fetchStrategy: 'none',不依赖 better-sidebar client 内部实现。

宿主路由 /video/*

  • 支持 HTTP Range、If-Range、suffix-range(bytes=-N),视频大小不受 mediaLimit 限制。
  • 请求准入复用宿主 connection 服务(与 /sidebar/file 同一套 cookie / Origin / Host 围栏);路径按侧边栏规则解析(绝对路径、相对路径落到会话工作目录、~ 展开为家目录),与文件树可读范围一致。

相对上游的本机改动

版本 改动要点
0.1.5 去掉已不存在的 webRuntime 依赖,改用 connection;修正路径解析与客户端相对 URL,使 /video 能注册且侧边栏能打开的路径均可播。
0.1.6 桌面版(DeepSeek Harness.app)因协议转发丢失 content-length,导致 video.seekable 为 [0,0]、拖进度条回弹;客户端在「知道时长但不可 seek」时可选整段读入 Blob(上限 256 MiB)恢复 seek,Web 端仍走 Range 流式。

安装与启用

前置:DSH 已安装且 dsh web 可运行,并已安装 dsh-better-sidebar。

Web profile 安装示例:

dsh plugin --profile web add github:JackAIStudio/dsh-video-preview

本地开发(link 热更新):

dsh plugin --profile web add "link:<本目录>"

离线或未发布(需先 npm pack 得到 tarball):

dsh plugin --profile web add file:<本目录>/dsh-video-preview-0.1.6.tgz

安装后重启 dsh web 进程,并在浏览器硬刷新(Cmd/Ctrl+Shift+R)。新增宿主半(/video 路由)需要重启一次;之后仅改 client 时硬刷新即可。

桌面版插件装在 ~/.dsh/profiles/desktop,使用 DSH 自带的 desktop profile,命令中 --profile web 应改为 --profile desktop。

典型用法

  1. 打开侧边栏,在文件资源管理器中点开任意已支持后缀的视频,video 预览器自动命中并内联播放。
  2. 在 Side card 设置 →「文件预览」中查看或开关 Video 预览器。

Web 端拖动进度条时,网络面板应能看到带 bytes=… 的 206 分片请求;桌面版若文件超过 256 MiB 兜底上限,可能仍流式播放并提示进度条可能拖不动。

适用场景与注意

适合:在 DSH 会话里直接预览训练素材、录屏、演示视频,而不必另开播放器或整文件下载后再看。

解码与格式:仅支持浏览器(Chromium)可解码的容器/编码;例如 HEVC 等未内置解码时播放器会报错,可用底部「下载」取回原文件。

安全与权限:插件以当前 DSH 进程权限运行,可读范围与侧边栏文件树一致;安装前应阅读 GitHub 仓库 源码与 MIT 许可证,自行评估是否纳入 profile。

生态说明:DSH 采用「一切皆插件」思路;SkillHub 目录页 为社区收录站点,与 DeepSeek / 幻方无官方从属关系。

宿主路由回归可在仓库内执行:

node test/route.test.mjs

结尾

dsh-video-preview 补上了 better-sidebar 缺失的视频预览,并用自带 /video Range 路由解决 seek 与体积限制;JackAIStudio 维护的 fork 针对当前 DSH 与桌面壳转发问题做了必要修复。需要安装或细节时,见目录页与仓库 README。

  • 目录页:https://www.skillhub.cn/plugins/JackAIStudio/dsh-video-preview
  • GitHub:https://github.com/JackAIStudio/dsh-video-preview
羽毛球分组比赛记分
小程序二维码

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

小夜