dsh-boot-video-manager

uitested: passnpmMIT

A companion playlist panel for the dsh-boot-animation intro-video plugin: add clips without leaving the app, order them, and switch between sequential, random and single-clip playback. Sequential order is made deterministic by parking every clip except the one due to play in a disabled/ subdirectory

下载量 / Downloads
2,186
依赖体积 / node_modules
0.12 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add dsh-boot-video-manager

Sandbox test results

StageResult
1 install✓
2 list✓
3 mount✓
4 boot—

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

dsh-boot-video-manager

给 DSH 开屏动画插件(dsh-boot-animation)配的

开屏视频播放列表面板:装在 设置 → 插件管理 里,不用离开 app 就能排片。

上游插件自己的设置卡片只能开关、调淡入时长、勾选素材池,
没法把新视频放进去、也没法决定先后。这个插件补的就是这两块。

前置要求

  • 装好 DSH(DeepSeek Harness),并已安装上游开屏插件 dsh-boot-animation。
  • 本插件是它的「管理端」:自己不播视频,而是替你维护上游的素材池目录和播放顺序。

没装上游的话,页面会提示「没有找到开屏动画插件」,此时什么都管不了。

功能

  • 添加视频:从文件选择框多选,直接传进素材池(.mp4 .webm .m4v .mov,单支上限 512 MB)。
  • 排序:拖不动就用每行的 ↑ ↓,或整列重排。
  • 三种播放方式:顺序播放 / 随机播放 / 单次播放(见下)。
  • 声音开关 + 音频自检:把上游插件的「播放影片声音」「点鼠标直接进入」搬到这个面板里,并显示上次启动到底出没出声(见下「开屏声音」)。
  • 勾选参与:不想让它出现就取消勾选,不用删文件。
  • 回收:把某支移出播放列表(挪进 recycle\,可随时找回)。
  • 打开素材文件夹:一键在资源管理器里定位。

安装

三种方式,按需选一种。前两条命令里的 --profile <profile 名> 是必需参数 —— dsh plugin

少了它会直接报错 error: required option '--profile <name>' not specified。profile 名就是

%USERPROFILE%\.dsh\profiles\ 下的目录名,查一下:

Get-ChildItem "$env:USERPROFILE\.dsh\profiles" -Directory | Select-Object -ExpandProperty Name

方式 A —— 从 npm 装(推荐)

dsh plugin --profile <profile 名> add dsh-boot-video-manager

包已发布在 npm:dsh-boot-video-manager

(npmjs.com/package/dsh-boot-video-manager)。

本仓库当前版本 1.2.1(音频自检 + 「冷启动直接出声」脚本),已同步发布到 npm

(npm view dsh-boot-video-manager version 会看到 1.2.1)。

通过 dsh.bundle.patch(cordis.patch.yml)自动挂载宿主入口,装完刷新页面即可。

方式 B —— 直接从 GitHub 仓库装

dsh plugin --profile <你的 profile 名> add github:Firefly-TheHerta/dsh-boot-video-manager

同样由 cordis.patch.yml 自动挂载,不需要手改配置文件。git 来源的包会走它自己的 prepare

脚本构建,本插件没有构建步骤(lib/client.js 是手写的成品),所以和方式 A 等价。

方式 C —— 桌面版(desktop profile)junction 脚本

desktop 这个 profile 由 Electron 应用独占管理,官方说法是先完全退出 DSH 再对它执行

dsh plugin --profile desktop ...(profile 的 package.json 被应用锁着)。不想退出、或者只是拿

本地这份代码调试,就走脚本建 junction:

# 安装(profile 默认 desktop)
powershell -NoProfile -ExecutionPolicy Bypass -File .\tools\install.ps1 -ProfileName desktop

# 卸载(只摘插件,不动视频文件)
powershell -NoProfile -ExecutionPolicy Bypass -File .\tools\uninstall.ps1 -ProfileName desktop

install.ps1 只做三件事:在 profile 的 node_modules 里建一个指向本目录的

junction、备份 cordis.patch.yml、往里追加一段 - insert: 挂载项(id: boot-video-manager)。

不改 package.json、不跑 pnpm —— 所以它不会出现在 dsh plugin --profile desktop list 的输出里,

这是正常的(pnpm 只认 package.json 里记过的依赖)。


装好之后长什么样

设置(齿轮)→ 左侧导航多出一条 「插件管理」:

区域 · 说明

顶部一行 · 素材总体积、参与播放条数 / 总条数

添加视频… · 打开系统文件选择框,可多选;第 1 个加进来的就是 1 号,排在最上面(有进度条)

刷新 · 重新读一遍磁盘与播放列表

打开素材文件夹 · 在资源管理器里打开素材目录

播放方式 · 顺序播放 / 随机播放 / 单次播放 三选一

播放影片声音 / 点鼠标直接进入 · 直接改上游插件的设置(见下「开屏声音」),改完立刻生效

播放列表每一行 · 1. 编号 · 勾选框(是否参与播放)· 文件名 · 体积 · ↑ ↓(调顺序)· 设为下一个(顺序模式)/ 固定播这支(单次模式)· 回收

徽章 · 下一个 = 下次启动播它;每次播 = 单次模式下固定播它;在池中 = 此刻就在素材池里;上次启动播了 = 已经播过

已回收 · 回收掉的素材(只列出来,不参与播放)

底部说明 · 提醒改动刷新页面即生效

三种播放方式

方式 · 行为 · 池目录里留什么

顺序播放 · 第一次启动播 1 号、第二次 2 号……播完最后一支回到 1 号 · 只留「下一个」那支

随机播放 · 每次启动在勾选参与的那些里随机抽一支 · 参与播放的全部留着

单次播放 · 每次都播同一支(用「固定播这支」选它),永远不换 · 只留固定那支

顺序播放 = 「第一次启动播 1 号,第二次播 2 号」

上游插件每次启动都会在素材池里随机抽一支。为了不改上游一个字节还能做到确定性播放,

本插件用的是「池目录里只留该播的那一支」:

  • 顺序模式下,只有「下一个」那一支待在 assets\videos\,其余参与播放的都停在 assets\videos\disabled\

(这不是被停用,是在排队 —— 轮到自己时会被自动搬回池目录)

  • 每次 DSH 启动(插件 apply() 跑的时候)把游标往前推一格,于是下次启动就是下一支;播完最后一支回到 1 号
  • 单次播放用同一套机制,只是不推进游标,所以每次都是它
  • 因此:在资源管理器里看到 disabled\ 里堆着视频是正常现象,别手动去搬
  • 随机模式则相反:所有勾选参与的视频都待在池目录里,由上游随机抽

开屏声音(以及「开机启动为什么没声音」)

面板上的 「播放影片声音」、「点鼠标直接进入」 两个开关,改的不是本插件的配置,而是

上游 dsh-boot-animation 自己的设置(命名空间 boot-animation):客户端通过 DSH 的

configForms 服务直接读写它。所以:

  • 和上游插件设置页里的开关是同一个值,两边改都行,改完立刻生效,不用重启 DSH。
  • 这里只做搬运、不另存一份配置,也就不会出现「两处设置打架」。

开机第一次没声音的元凶是「开屏自己把自己静音了」,不是浏览器那条规矩。 上游

dsh-boot-animation 的启动逻辑是「先试着不静音播,播不动就退回静音」,但那个「播不动」的判定只有一个

1.2 秒的窗口:开机后第一次播放时音频管线还没起来,经常要两三秒才响应,窗口先到,它就把自己静音了

(第二次启动管线已经热了,所以从此都有声)。这正好解释「启动一次、退出、再启动才有声」,也解释了为什么

加启动参数没用 —— 参数让带声播放合法了,可它自己掐掉得更早。

已在 dsh-boot-animation 的 src/boot-screen.js 里修好(本机那份就是正在跑的那份):

  • 1.2 秒的窗口只用来把「点一下重试」架起来,不再静音元素;
  • 真正静音推迟到 5 秒的兜底窗口(给冷管线留出时间,同时仍在 6 秒无画面看门狗之内);
  • 已经在放静音片子时,最多再要三次声音,把声音在中途接回来;
  • 结论写进 .dshba 根元素的 data-sound(on: / late: / muted: + 毫秒数),面板上的自检能看出

这次到底是哪一种。

浏览器那道 autoplay 规矩依然存在,只是在这台机器上不是主因:页面在用户交互过之前不许自动播放带声音

的视频,右下角的「开声音」按钮就是为它准备的;点一下画面(或那个按钮),这一支才会带上声音(第一次点

先开声音,再点一下才进界面)。

开关 · 开 · 关

播放影片声音 · 尝试带声音播,右下角显示「开声音」按钮(默认) · 彻底不尝试,连按钮都不出现

点鼠标直接进入 · 点一下画面就直接进界面,不再拿第一下去开声音 · 第一下先开声音、第二下才进界面(默认)

素材池里这两支都有音轨(maid-splash.mp4 8.06 s / 1280x720 / 带音频,绝区零蕾米埃尔.webm

是 VP9 + Opus 立体声),所以「没声音」不是文件的问题。

冷启动直接出声的保险(启动参数)

真正的修复在 dsh-boot-animation 里(就是上面那段 1.2 秒抢跑)。这一段是保险:万一某台机器上

autoplay 策略真的是拦路的那一道,浏览器只认启动参数 —— DSH 的 Electron 没有开 autoplayPolicy,

插件本身也改不了它(宿主半侧跑在没有 Electron API 的子进程里),所以只能从快捷方式的参数上加:

--autoplay-policy=no-user-gesture-required

tools\autoplay-on.ps1 帮你把它加到 DSH 的快捷方式上(开始菜单 / 桌面 / 任务栏固定项挨个扫),

原始参数备份在同目录的 .autoplay-backup.json:

# 先看一眼会改哪个(不改动任何东西)
powershell -NoProfile -ExecutionPolicy Bypass -File .\tools\autoplay-on.ps1 -DryRun

# 加上参数
powershell -NoProfile -ExecutionPolicy Bypass -File .\tools\autoplay-on.ps1

# 想回到默认策略
powershell -NoProfile -ExecutionPolicy Bypass -File .\tools\autoplay-on.ps1 -Revert

加完要完全退出 DSH 再启动(启动参数只在进程启动时读一次),之后开屏就直接带声音。

tools\uninstall.ps1 卸载时会自动调一次 -Revert,把它摘干净。

这条只对「从被改过的快捷方式启动」有效:直接双击 DeepSeek Harness.exe、或换别的启动器,
还是默认策略。它不写任何注册表键,随时可以还原。
面板上的音频自检

声音卡片底下多一行采样结果,说明上次启动到底有没有出声——取的是启动画面里那个 <video> 的

真实状态:当时是否被静音、Chromium 的 autoplay 策略、页面有没有拿到用户手势、以及上游「开声音」

按钮的提示文案(浏览器为什么拒)。上次是「先静音」的话这一行会直接说出来;配完上面的启动参数、

重启 DSH,看它变成「出声了」就知道生效了。没装上游时这一行显示「上次启动的音频状态未知」。

如果页面提示「没找到上游开屏插件」、或开关不出现,说明 dsh-boot-animation 没装,

或者它的设置服务还没就绪(先刷新一下页面)。


数据放

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::8,最后更新 2026-10-17

Links

GitHub · Homepage · npm

Same category