zzbkl/dsh-cold-boot ↗★ 0

dsh-cold-boot

DSH 开机动画:44 秒六场戏的冷启动序列(线框描边 → 鲸鱼标识 → 三栏自检 → 权限校验 → 授权接管 → 名牌定格),带四句英文人声与音效,纯 DOM 实现,零 peer 依赖。Boot animation for the DeepSeek Harness web GUI: a 44-second cold-boot sequence with voice-over, rendered with plain DOM/CSS.

パッケージ
dsh-cold-boot
互換性
未検証
バージョン
1.1.0
ライセンス
NOASSERTION
最終更新
2026/10/16

インストール

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:zzbkl/dsh-cold-boot

ドキュメント

README 全文を読む ↗

dsh-cold-boot · DSH 开机动画

给 DeepSeek Harness 的界面加一段 44 秒的冷启动演出:黑底、等宽字、扫描线与 glitch, 六场戏、四句英文人声,音效全部用 Web Audio 现场合成。纯 DOM + CSS,零运行时依赖, 装完下次打开就播(点画面或按任意键跳过)。

非官方同人作品,与 DeepSeek 官方无关。产品名与鲸鱼标识归其权利人所有 —— 见 LICENSE。

开场 标识与光扫 三栏全貌 授权通过 定格名牌

安装

方式怎么做
应用内插件市场在市场里搜 dsh-cold-boot,一键装
npmdsh plugin --profile web add dsh-cold-boot(预构建,免构建授权)
本地 tgz下载 dsh-cold-boot-.tgz → DSH 的插件页「从本地文件安装」
源码git clone 后 npm run build(prepare 钩子也会自动构建),再从目录安装

关掉 / 只播一次(浏览器控制台):

localStorage['dsh-cold-boot'] = 'off'    // 永不播
localStorage['dsh-cold-boot'] = 'once'   // 每个标签页只播一次;删掉这个键就恢复每次开机都播

装完在 profile 的 package.json 里会多一条 dsh.profile.bundles 记录 (本机是 %APPDATA%\dsh-desktop\harness\profiles\web,patchReload: live,不用重启)。 想关掉就把它从 bundles 里去掉,或者直接卸载。

看效果(不装插件也能看)

npm run standalone     # → preview-standalone.html(1.7MB 单文件,引擎 + 四句人声全内联)

双击打开即可,不需要服务器、不依赖相对路径(可以随便拷给别人)。

控件作用
▶ 从头播整段 44 秒跑一遍(点画面、按任意键都能跳过)
⏭ 跳过直接走收尾流程
时长 32s / 44s / 56s整段压缩或拉长,人声音高不变、语速跟着缩放
🔊 / 🔇开关音效与人声(浏览器拦自动播放,点一下才有声音)
① ~ ⑥定格在六场戏的任意一场

npm run frames 16000 34000 会生成 dev/frame-.html 定格页 —— 改完时间轴先拿它逐帧核对。

六场戏(基准 44000ms)

时刻场画面
0–7.6s①冷启动字幕(COLD BOOT / 冷启动序列 · 逐项自检 / SEQUENCE 00)+ 日志开始打字
2.6s / 12.8s①③人声 1「Uplink established. Terminal boot sequence initiated.」;人声 2「Self-check complete…」
8.0–12.8s②标识逐笔描线(六边形线框 → 鲸鱼 → 一道光扫掠过 → DSH 字标落下)、档案栏、幽灵编号 07
13.4–26.2s③三栏全貌 + 标题 DEEPSEEK HARNESS + 副标题 + 代号 + 日志 18 行 + 进度条与六盏步骤灯
23.6s③人声 3「Permission proxy armed. Session handover standing by.」
26.2–30.6s④权限校验面板:六条 scope 逐行落(workspace-write OK / 9 industrial modules ON / MCP ONLINE / modbus write ASK / credentials LOCKED / session OK),右侧百分比推到 100
31.6–40.2s⑤授权通过:三个同心环 + AUTHORIZATION GRANTED + 一道红细线(全片唯一的红);33.8s 人声 4「System ready. Welcome back, Engineer.」
41.2s⑥白闪 → 切三栏 → 41.8–44s 干净名牌停 2.2 秒 → 0.9 秒淡出,露出 DSH 界面

场景层之间是先出后进(前一块淡完才开始下一块),不会出现两块面板同时半透明。

里面有多少「真的是 DSH」

不是套壳文案,几个读数是对着本机实际安装抄的:

  • 鲸鱼= DSH 桌面端 resources\icon.png 里那只抠出来的,不是网上随手找的图;
  • v0.11.1= DSH Desktop.exe 的 ProductVersion;30 loaded= profile 里 dsh.profile.bundles 的条数;
  • 场① 第二行 81 SKILLS · 30 PLUGINS · 9 MCP · $ dsh doctor、场③ 的 DSH desktop v0.11.1 · web profile 与 dsh doctor 日志行,都可以按你自己的机器改(改 DEFAULT_LOG / TEXT 常量即可);
  • 三条读数(CONTEXT / PERMISSION / TOOLS)跟着动画时间走,不是写死的静态条。

人声与音效

  • 四句人声:英文,Windows SAPI(Zira,Rate −4 ≈ 比常速慢 45%)+ scripts/voice-fx.py -ann 提亮到参考素材的频谱(F0 190Hz / 质心 1063Hz)。文件 audio/en/L1..L4-zira-rm4-ann.wav, 实测 7.16 / 7.74 / 7.34 / 6.63 秒。每句时长写进了 DEFAULT_VOICE[].dur —— 漏写会退回 3900ms 的假设值,就是之前「两个声音」的根因(第三句实际说到 24.87s,压上第四句)。
  • 音效(createSound()):低频底噪、终端 blip、glitch 噪声、白闪、收尾 chime 全部用 Web Audio 现场合成,不带素材;音量比人声低 12~20dB,说话时自动 duck。
  • 语音时刻表 2.6 / 12.8 / 23.6 / 33.8s,末句 40.4s 收,白闪 41.2s —— 每句都留 ≥800ms 余量。

插件形态

文件说明
lib/client.js浏览器半边(1.7MB):引擎 + CSS + 四句人声(base64 WAV)全内联,window.__ModuleLoader__.load({...}) 外壳
lib/index.js宿主半边(`
scripts/make-icon.py用抠好的鲸鱼遮罩画插件图标
scripts/voice-fx.py · scripts/voice-analyze.py人声染色 / 量化(numpy)
docs/img/README 里那五张图

引擎 API

var handle = DSHBootAnimation.play({
  duration: 44000,          // 整段时长;相位按比例缩放
  sound: true, volume: 0.55,
  soundBase: '', voiceBase: '',   // 装成插件后指向只读资源路由
  voice: [{ src, dur, text, meta }],
  log: [...], steps: [...], rail: [...],
  skipOnClick: true, oncePerSession: false, seek: null, onDone: fn
});
handle.finish();   // 跳过
handle.destroy();  // 立刻摘掉遮罩

改时间轴只需要动:相位表 T、步骤灯时刻 STEP_AT、日志 DEFAULT_LOG、人声 DEFAULT_VOICE (CSS 里的 --t-* 变量与 T 一一对应,两处要一起改)。

已验证 / 已知

  • 六场戏 + 结尾定格逐帧截图核对(1280×800 与 512×900 两种窗口);量尺(getBoundingClientRect) 确认窄窗下标题单行不溢出、档案栏一行一条、日志底部不被步骤灯压住。
  • 实跑收尾、点击跳过、destroy() 三条路径都实测会摘掉 #dsh-boot-animation 与 ``,不会留黑屏。
  • 打包体积:lib/client.js 1.7MB → tgz 830KB(四句人声内联占 1.2MB)。
  • 踩过的坑:animation 是简写,收尾的 dsb-keep 必须写在各元素自己的规则里(分组规则会覆盖入场动画); 淡出动画只能 forwards,配 both 会在延迟到点前就按不透明显示;inset:auto 会把前面的 left/top 一起重置,居中元素要把它写在 left/top 之前。

许可

MIT(见 LICENSE)。人声由 Windows SAPI 合成、音效现场生成,仓库里不含任何第三方素材。