dsh-inju-boot:给 DeepSeek Harness 加一支 WebGL2 启动动画

前言

DeepSeek Harness(DSH)的 Web 界面加载完成后,通常直接进入工作区。若你希望每次启动有一段固定的视觉开场——而不是自己改前端或塞静态图——需要一种挂在 Harness 扩展点上的做法:覆盖层播完再淡出,参数能在设置里改,且不必动宿主核心代码。

下面介绍社区插件 dsh-inju-boot(INJU 启动动画,维护者 inju0524)。它在 DSH 分类里属于「趣味换装」:每次启动全屏播放一支 WebGL2 实时粒子动画(花 → 月球 → 虚影文字 → 实体 LOGO),可选极客 HUD / 终端层与程序化音效,播完自动把界面交还给你。

这是什么

dsh-inju-boot 是一个 DSH bundle 插件(dsh.id 为 dsh-inju-boot,package 版本 1.0.0),主要做两件事:

能力 挂载点
启动覆盖层 shell.overlay,页面加载后全屏播放,到设定位置后淡出
设置页 settings.section,与宿主其它设置页并排,动画参数在此调整

动画本体是零 npm 运行时依赖的单文件 WebGL2 作品:默认约 6 万颗自发光粒子、10 个阶段(完整循环约 21.05 秒,README 示例 GIF 标注 6.3 秒为 10 段硬切预览节奏),程序化 3D 雏菊、粒子月球、虚影文字与实体 LOGO,并有一层画在画布内的极客 HUD(数字雨、目标框、扫描线、点云小图、终端日志、遥测、hex dump 等)。另有一层 DeepSeek Harness 产品身份装饰:如 DEEPSEEK HARNESS 铭牌、root@deepseek-harness:~# dsh --profile desktop、遥测里的 MODEL / RUNTIME 与 DSH 启动序列式终端日志。

插件还注册本地 HTTP 路由(/api/inju-boot/*),用于提供动画页、合成配置等;权限说明见 package 中的 dsh.permissions 字段。

动画在播什么

README 用表格列出了 10 个阶段及默认时间轴(数值来自动画目录的 inju.config.js)。节选如下,便于对照设置里的「结束阶段」与「时长倍率」:

阶段 时间(约) 画面要点
汇聚 0 – 3.2s 星尘聚成参数化 3D 雏菊
花体 · 环绕巡游 3.2 – 5.8s 相机环绕花体
崩解 5.8 – 7.3s 粒子向外爆散
重聚 7.3 – 9.3s 聚合成 3D 粒子月球
月球 · 静默自转 9.3 – 11.7s 月面光照旋转
显影 → 虚影 · 闪烁漂移 11.7 – 15.7s 月球变为虚影文字并漂移
像素偏移闪切 15.7 – 16.45s 切片错位、RGB 分离等
实体 · 平面 LOGO 16.45 – 20.05s 硬切实体 LOGO + 扫光
循环 · 淡出 20.05 – 21.05s 淡出并可循环

各阶段时长、粒子尺寸、抖动、爆散冲量、体积光等,可在设置页或通过 inju.config.js 覆盖调整。

核心功能(已文档说明部分)

启动覆盖层与播放控制

  • 启用启动动画:总开关。
  • 每次启动只播一次:会话级去重,开发热重载时不会反复重播。
  • 时长倍率:等比拉伸整条时间轴。
  • 结束阶段 / 淡出时长:可只播到某一阶段末尾再淡出。
  • 点击 / 按键中断、右下角跳过按钮(Esc 始终可跳过)。

画面与 HUD

  • LOGO / 虚影文字、粒子数量(1000 ~ 400000)、尺寸 / 亮度 / 泛光 / 机距。
  • 极客 HUD / 终端层(可选,默认开启)。
  • 模式:flower3d(程序化 3D 雏菊)或 photo(照片粒子化)。
  • Windows 桌面端:可选顶栏融入动画、动画期间隐藏「应用 / 编辑」菜单(README 标明仅 Windows 桌面端)。

背景音乐与浏览器策略

  • 背景音乐 / 音效开关;音量 0~1;首次点击只解锁声音(默认开,第一次点击/按键只出声、不中断动画)。
  • 自动播放被拦截时可提示。

配置持久化与优先级

用户配置落在 <DSH_HOME>/inju-boot/config.json(默认 ~/.dsh/inju-boot/config.json)。优先级为:内置默认值 ← cordis.patch.yml 种子 ← config.json(设置页写入)。

高级项包括:动画目录(留空则自动探测)、HUD 终端台词(一行一条 秒 文本,{text} 替换为 LOGO 文字)、inju.config.js 覆盖(JSON 深度合并到动画目录的配置上)。

动画资源查找顺序(README):

  1. 设置页显式填写的「动画目录」(含 inju-particles.html 的目录)
  2. 插件上一级目录(便于与自有动画工程联调)
  3. 插件自带 assets/ 副本

Host 对 inju.config.js 做运行时合成(动画目录配置 + 设置页 advanced 覆盖 + 时间轴倍率),动画按请求读取,改配置后刷新页面即可,不必重启 Harness;新增 bundle 本身仍需重启一次(见安装说明)。

安装与启用

安装前请自行阅读仓库源码与 MIT 许可证。插件在 DSH 进程权限下运行,并请求覆盖层、设置页与本地 /api/inju-boot/* 路由。

方式 A:Harness 内 plugin_manager(推荐)

让 Harness 里的 Agent 调用 plugin_manager,target 填本仓库在本机的绝对路径:

plugin_manager action=install_bundle target=<这个仓库的绝对路径>

它会写入 profile 的 package.json / cordis.patch.yml 并完成安装;README 明确建议不要手改这两个文件。

方式 B:dsh CLI

dsh --profile <你的 profile> plugin add "file:<这个仓库的绝对路径>"

或从 GitHub 安装:

dsh --profile <你的 profile> plugin add "github:inju0524/dsh-inju-boot"

装完后重启一次 Harness(新增 bundle 需重新组装 profile)。下次启动即可看到动画。

卸载示例:

plugin_manager action=remove_bundle target=dsh-inju-boot

若仅暂时不想看:在设置页关闭「启用启动动画」,或在 cordis.patch.yml 对应行加 disabled: true。

典型用法

在设置里调参

打开 Harness 设置 → INJU 启动动画,按分组调整播放、跳过、画面、背景音乐与高级覆盖。需要改时间轴手感时,可在「inju.config.js 覆盖」里只写要改的键,例如:

{
  "camera": { "orbitYaw": 0.6, "dist": 20 },
  "moon":   { "radius": 2.6, "craters": 110 },
  "render": { "bloom": 1.2, "exposure": 1.1 },
  "hud":    { "brand": { "title": "MY HARNESS", "subtitle": "我的启动序列" } },
  "stages": [ { "dur": 3.2 }, { "dur": 4.0 } ]
}

stages 按下标合并,只写需要改的阶段即可。

单独预览某一帧(Harness 已运行)

插件将动画挂在 /api/inju-boot/boot.html。README 示例(默认端口 19387,以你本机为准):

http://127.0.0.1:19387/api/inju-boot/boot.html?t=4.0&hud=0&telemetry=1
http://127.0.0.1:19387/api/inju-boot/boot.html?t=10.5&hud=0&telemetry=1
http://127.0.0.1:19387/api/inju-boot/boot.html?t=17.6&hud=0&telemetry=1

查询参数含义:t= 定格秒数;hud=0 隐藏页面 DOM 装饰;telemetry=1 保留极客 HUD。关背景音乐时动画侧使用 ?audio=0(与设置里关闭背景音乐一致)。

仓库内自检(开发者)

package.json 中测试脚本包括:

node tools/selftest.mjs && node tools/selftest-client.mjs && node tools/check-animation.mjs

查看 HUD 绘制调用示例:

node tools/check-animation.mjs --dump

适用场景与注意

适合谁:希望在 DSH 桌面/Web 启动时有一段统一、可配置的粒子开场,且愿意接受全屏覆盖层与可选音效的开发者;分类上属于界面「趣味换装」,不改变 Agent 逻辑。

需要注意:

  • 粒子数、分辨率与 HUD 开关会影响 GPU 与观感;低配机器可在设置里降低粒子数量或关闭 HUD。
  • 浏览器可能拦截自动播放音频,插件提供了首次交互解锁与提示项。
  • 社区目录 SkillHub 与 GitHub 仓库由社区维护,并非 DeepSeek / 幻方官方应用商店;安装前请核对仓库与权限说明。
  • README 要求 Node >= 20;与 DSH profile 组装方式一致,新增插件后需重启 Harness 一次。

结尾

dsh-inju-boot 把 INJU 粒子启动序列接到 DSH 的 shell.overlay 与设置页上:10 阶段 WebGL2 动画、可选 HUD 与音效,参数集中在「INJU 启动动画」设置与 config.json。若你要给 Harness 加一支可调的启动画面,可按上文安装命令接入,并在设置里按会话需求开关或缩短播放。

羽毛球分组比赛记分
小程序二维码

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

小夜