DeepSeek Harness Hub
← 返回列表

浮动视频播放器IP050/dsh-video-player

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

在聊天窗口旁悬浮播放并拖拽浏览 Stash 视频片段

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/26 · 已提供中文文档

一个用于 DeepSeek Harness (DSH) 的浮动、可拖拽、可调整大小的**视频播放器**。

综合分
28.5
GitHub 分
28.5
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add IP050/dsh-video-player
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-video-player

视频播放器在 Stash 中

视频播放器在 Stash 上

一个用于 DeepSeek Harness (DSH) 的浮动、可拖拽、可调整大小的视频播放器。
它在 Web UI 上挂载一个小窗口,播放来自 Stash 风格场景服务器的逐 MP4 片段——
在你的聊天窗口旁支起一个视频流,让你在工作时翻看片段。窗口可以实时移动和调整大小,
就像一个真正的画中画视频。Stash 是主角;其他来源则尽力支持。

安装

npm install -g pnpm@11                     # 容器镜像未附带 pnpm
dsh plugin --profile web add /path/to/dsh-video-player
重启 web profile(bundle 变更仅在启动时生效):
sh ~/.dsh/dsh-guard/restart-web.sh

链接式安装需要导入桥接。 dsh plugin add  会把插件安装为 link: 符号链接,
而 Node 会从宿主模块的真实路径(/path/to/dsh-video-player)解析其导入,
该路径位于 profile 的 node_modules 之外。在从本地目录安装之前,先为它建立桥接:

mkdir -p /path/to/dsh-video-player/node_modules/@deepseek-ai
ln -s ~/.dsh/profiles/node_modules/@deepseek-ai/dsh-settings /path/to/dsh-video-player/node_modules/@deepseek-ai/dsh-settings
ln -s ~/.dsh/profiles/web/node_modules/schemastery /path/to/dsh-video-player/node_modules/schemastery

功能

- 浮动、可调整大小的窗口——拖拽标题栏可移动它,拖拽右下角可实时调整大小
(最小 200×140)。原生  播放器带控件(播放/暂停、拖动进度、全屏、音量)。
标题栏中的输入框和按钮被排除在拖拽处理之外,因此它们保持可点击/可输入。
- Stash 场景导航(主角)——◀ / ▶ 切换场景,数字输入框 + Go / Enter 可跳转到任意位置,
状态行显示确切的流 URL。默认服务器为 http://host.docker.internal:9999,
每个片段使用 /scene/{no}/stream;它支持 Range 请求(已验证 206 Partial Content),
因此拖动进度可用。
- 频道下拉菜单(自定义控件)——Stash / 自定义链接 / YouTube / Twitch
/ Jellyfin。以按钮形式构建,而非原生 (后者在 DSH 的深色 UI 中不可靠)。
选择频道会立即切换来源。
- 带自动检测的链接输入框——粘贴 YouTube / Twitch / Jellyfin /
直接文件链接,它会自动选择频道并播放(绝不会追加 /scene/N/stream 后缀)。
Enter 或 ▶ 按钮播放;粘贴即自动播放。
- 齿轮面板 (⚙) = 仅窗口 + Stash 配置——宽度、高度、不透明度,以及
Stash 基础 URL(场景服务器根地址)。来源/频道配置刻意不放在这里。
- 持久化几何信息——位置、大小和不透明度在重新加载后保留
(localStorage)。
- 与宠物和主题共存——它是与 DSH 宠物和 dream-skin 壁纸并存的独立固定覆盖层。

架构

- 宿主部分(lib/index.js)——注册 dsh-video-player 设置
命名空间(schema:base、channel、url、scene),并提供
GET/POST /api/dsh-video-player/config。POST 处理程序通过
DSH 设置服务写入,因此源配置会持久化到真实的设置
存储中(而非 localStorage)。
- 客户端部分(lib/client.js)——自包含(纯 DOM,inject: [],
立即激活)。它轮询 GET /api/dsh-video-player/config(约 2.5 秒)
并通过 POST 将标题栏变更推送回去,因此浮动窗口和
设置存储保持同步。

我们遇到并修复的 bug(经验教训)

1. 宿主 export default 会丢弃 inject。 DSH 的 bundle 加载器会将
模块的 default 导出解包为裸函数,静默丢弃
inject/name——随后服务会在启动时抛出 cannot get property "webServer"
without inject,并导致整个应用崩溃。修复方法:仅使用具名
导出(export function apply、export const inject、export const
name),与 dsh-pet 宿主 bundle 完全一致。
2. 声明了从未使用的 inject 的客户端会挂起。 该客户端曾声明
inject: ["@deepseek-ai/dsh-client-runtime"] 却从未 require 它,
于是永远停留在 pending (waiting for service: …)。修复方法:让客户端
保持自包含,使用 inject: []。
3. 对于 link: 安装,宿主导入无法解析。 参见上面的桥接说明。

路线图

- 层级控制——将窗口置于聊天之前(默认)、之后 /
收进侧边栏,或“最小化到侧边栏”。
- 透明度——窗口不透明度(已完成:齿轮面板中 0.3–1.0)外加一个
点击穿透开关,用于你想观看但不想交互的场景。
- 警报 / “有人进来了”按钮——一键播放声音(待定)。
- 场景缩略图栏——当前场景 ± 几个场景的缩略图,用于
更快地翻页。
- 设置菜单卡片——dsh-video-player 设置命名空间已
注册;如果通用设置界面没有将其渲染为独立
区块,则添加一个客户端设置卡片(类似 pet 的),以便 channel/link
可从 Settings → dsh-video-player 编辑。
- Stash 场景列表——探测服务器以获取有效的场景编号,并在
真实集合内翻页,而不是 ±1。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(IP050)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群