dsh-first-paint:用首幀 HTML 注入消除 DSH 啓動白閃

前言

DeepSeek Harness(DSH)桌面端啓動時,Electron 會先建窗口再加載頁面,首幀往往是應用自帶的空白或白色加載態。若再配合 dsh-startup-screen 一類啓動動畫插件,常見鏈路是用 webServer.tapIndex 往 HTML 裏塞啓動頁;但在桌面端,這條鏈路往往只渲染 index-inject 注入行,tapIndex 不生效,於是會出現黑窗 → 白閃約 1–2 秒 → 啓動動畫纔出來的體驗。

dsh-first-paint(首幀啓動頁)由社區維護者 1jincheng 發佈,分類爲客戶端插件。它不改主程序、不碰 app.asar,通過訂閱 webserver/index-inject 把啓動頁作爲一條 script 注入行交給 webServer 的 index 渲染器,隨 boot payload 一起下發,讓窗口出現的第一幀就是可配置的黑底品牌頁。下面介紹它的定位、安裝與配置方式。

這是什麼

一句話:dsh-first-paint 是 DSH 的獨立插件,專門做首幀兜底——在 index 注入階段內聯啓動頁腳本,消除桌面端啓動白閃。

DSH 生態強調「一切皆插件」;SkillHub 等社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。安裝前建議自行查看源碼與許可證——插件以當前 DSH 進程權限運行。

核心機制與能力

解決什麼問題

  1. 桌面端首幀是空白/白色加載態,視覺上像「閃一下白屏」。
  2. 依賴 tapIndex 的啓動動畫在桌面端 index-inject 路徑下不生效,動畫晚於白屏出現。
  3. 本插件把啓動頁寫進首幀 HTML 注入行,桌面端第一幀即爲黑底品牌頁(默認 #0A0A0B 等可配)。

與 dsh-startup-screen 的分工

兩個插件互相獨立、各自一條 bundle 行:

  • dsh-startup-screen:完整啓動動畫(授權序列、語音等)。
  • dsh-first-paint:首幀兜底;檢測到 #dsh-startup-root 或 window.__DSH_STARTUP_RUNNING__ 後按 handoffDelayMs 淡出,把畫面交給啓動動畫。
  • 不裝 dsh-startup-screen 也能用:到 maxMs 自動淡出,不會一直鎖在啓動頁。
  • 升級 dsh-startup-screen 不會影響本插件。

技術邊界(README 限制)

  • 隻影響首屏渲染,不能改 Electron 主進程創建窗口、show() 的時機。
  • 宿主若調整 index 注入行的渲染位置,插件可能需要跟着改。
  • 注入內容全部內聯,不依賴外部資源,離線可用。

安裝與啓用

在 README 中給出的安裝命令如下(桌面端與網頁端 profile 二選一或按需都裝):

dsh plugin --profile desktop add dsh-first-paint
# 或 web profile
dsh plugin --profile web add dsh-first-paint

裝完後完全退出 DSH 再打開,否則可能看不到注入效果。

發佈側說明:npm 包名爲 dsh-first-paint;向 Design and Make Marketplace / DSH 插件市場提交時需聲明 dsh.bundle.patch,以便 dsh plugin add 識別(與 package.json 中 "dsh.bundle.patch": "./cordis.patch.yml" 一致)。運行環境要求 Node >=20(package.json engines)。

配置

可選,默認開箱即用。配置文件路徑:

~/.dsh/dsh-first-paint.json

若設置了 DSH_HOME,則配置目錄以該環境變量爲準(覆蓋 ~/.dsh)。

示例(README 中的字段與默認值說明;表中「默認」列以 README 表格爲準,示例 JSON 裏的 cn/en 爲展示用文案):

{
  "enabled": true,
  "cn": "天樞",
  "en": "TIANSHU",
  "maxMs": 6000,
  "handoffDelayMs": 500,
  "background": "#0A0A0B",
  "accent": "#FF7500"
}
字段 默認 說明
enabled true 設爲 false 時完全不注入
cn HARNESS 大字(中文或任意文本)
en LOADING 副標題(英文或小字)
maxMs 6000 未檢測到啓動動畫接管時的最長遮擋時間(毫秒)
handoffDelayMs 500 檢測到啓動動畫後,延遲多久淡出
background #0A0A0B 底色
accent #FF7500 強調色(副標題與進度條)

將 enabled 設爲 false 可關閉注入,便於對比有無白閃差異。

典型用法

  1. 按上文命令爲 desktop 或 web profile 安裝插件,完全重啓 DSH。
  2. 若只需默認 HARNESS / LOADING 文案與配色,無需建配置文件。
  3. 需要品牌文案或配色時,編輯 ~/.dsh/dsh-first-paint.json,保存後再次完全重啓 DSH。
  4. 若已安裝 dsh-startup-screen:首幀由本插件鋪底,啓動動畫接管後自動淡出;若未安裝啓動動畫插件,頁面會在 maxMs 後自動淡出進入正常界面。

適用場景與注意

適合誰

  • 使用 DSH 桌面端、對啓動瞬間白閃敏感,希望窗口一齣現就是統一品牌底色的開發者或日常用戶。
  • 已用或計劃用 dsh-startup-screen,需要補齊桌面端 index-inject 路徑下首幀空白的問題。
  • 希望不改主程序、僅通過插件市場安裝即可調整啓動首屏的場景。

注意

結尾

dsh-first-paint 把啓動頁寫進 DSH 首幀 index 注入,在獨立插件前提下消除桌面端常見的啓動白閃,並與 dsh-startup-screen 解耦協作。需要安裝命令、配置字段與限制說明時,以 GitHub README 爲準;在 SkillHub 或插件市場搜索 dsh-first-paint 即可找到目錄入口。

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

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

小夜