前言¶
DeepSeek Harness(DSH)采用“一切皆插件”的架构。桌面版在运行时主要加载 app.asar,直接修改该文件存在每次更新覆盖、重打包损坏安装或难以回滚的问题。dsh-boot-anim 插件通过宿主侧插件契约,利用 webserver/index-inject 机制实现注入,在不触碰原始源码的前提下提供启动体验的定制化。
这是什么¶
dsh-boot-anim 是一个为 DSH 桌面版设计的启动动画插件。
* 维护者:gxpppp
* 分类:趣味换装
* 许可:MIT
* 核心价值:提供 SteamOS 风格的七段分镜启动动画,以及 UI 由外向内、环环平移的入场过渡效果。
核心功能¶
- SteamOS 风格七段分镜:包含黑屏、鲸鱼浮现、双线内合、轮廓勾勒、中线展开、落白、UI 环环入场等阶段。
- UI 入场过渡:采用由外向内、环环平移的分层入场方式,分为外层三列、列内主块、主块内内容块三个波次。
- 宿主侧注入:插件通过
webserver/index-inject注入,属于宿主侧插件,不修改源码。 - 零依赖:不依赖额外的第三方库。
- 官方素材:使用
@deepseek-ai/dsh-client-ui-primitives中的鲸鱼和品牌字标矢量数据。 - 安全网:支持
prefers-reduced-motion、按键跳过、异常捕获与降级。
安装与启用¶
- 安装插件
使用一条命令将插件添加到桌面版 profile:
dsh plugin --profile desktop add github:gxpppp/dsh-boot-anim
注意:此命令只写入依赖,不会自动修改 `bundles` 配置。
- 配置 bundles
插件生效必须出现在dsh.profile.bundles中。在配置文件中添加包名:
"dsh": { "profile": { "bundles": [ /* ... */ , "dsh-boot-anim" ] } }
- 重启
重启 DeepSeek Harness 桌面版即可生效。
本地开发与调试¶
如果需要修改动画或快速验证代码,建议从本地安装:
git clone https://github.com/gxpppp/dsh-boot-anim.git
cd dsh-boot-anim
powershell -ExecutionPolicy Bypass -File install.ps1
此脚本会创建 junction 到 node_modules,修改 lib/ 下的文件后刷新页面即可看到效果。
技术细节¶
- 定位机制:由于 DSH 前端使用 CSS Modules,没有稳定类名,本插件通过
[data-shell-overlay]语义锚点定位 UI 分区,并利用getBoundingClientRect().left对列进行排序。 - 鲸鱼绘制:直接复用官方组件的矢量路径,使用 SVG 的
vector-effect: non-scaling-stroke解决压扁描边变细的问题。 - 过渡逻辑:所有动效集中在
boot-anim.js的T表中,通过 Web Animations API 实现。
注意事项¶
- 包名一致性:插件包名必须与仓库名一致(
dsh-boot-anim),否则加载器会静默跳过该 bundle。 - 权限运行:插件在当前 DSH 进程权限下运行,安装前应检查源码与许可证。
- 依赖关系:依赖官方组件
dsh-client-ui-primitives。
结尾¶
dsh-boot-anim 提供了一种无需重打包即可深度定制 DSH 桌面启动体验的方案。通过宿主侧注入和矢量动效,实现了接近 SteamOS 原生的视觉体验。更多细节可查阅 GitHub 仓库。