前言¶
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 倉庫。