前言¶
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 注入階段內聯啓動頁腳本,消除桌面端啓動白閃。
- 維護者:1jincheng
- 社區目錄:SkillHub 插件頁
- 源碼與說明:GitHub — 1jincheng/dsh-first-paint
- 許可證:MIT(README 與
package.json一致) - 當前包版本(
package.json):0.1.0
DSH 生態強調「一切皆插件」;SkillHub 等社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。安裝前建議自行查看源碼與許可證——插件以當前 DSH 進程權限運行。
核心機制與能力¶
解決什麼問題¶
- 桌面端首幀是空白/白色加載態,視覺上像「閃一下白屏」。
- 依賴
tapIndex的啓動動畫在桌面端 index-inject 路徑下不生效,動畫晚於白屏出現。 - 本插件把啓動頁寫進首幀 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 可關閉注入,便於對比有無白閃差異。
典型用法¶
- 按上文命令爲
desktop或webprofile 安裝插件,完全重啓 DSH。 - 若只需默認 HARNESS / LOADING 文案與配色,無需建配置文件。
- 需要品牌文案或配色時,編輯
~/.dsh/dsh-first-paint.json,保存後再次完全重啓 DSH。 - 若已安裝
dsh-startup-screen:首幀由本插件鋪底,啓動動畫接管後自動淡出;若未安裝啓動動畫插件,頁面會在maxMs後自動淡出進入正常界面。
適用場景與注意¶
適合誰
- 使用 DSH 桌面端、對啓動瞬間白閃敏感,希望窗口一齣現就是統一品牌底色的開發者或日常用戶。
- 已用或計劃用
dsh-startup-screen,需要補齊桌面端 index-inject 路徑下首幀空白的問題。 - 希望不改主程序、僅通過插件市場安裝即可調整啓動首屏的場景。
注意
- 插件不能延遲窗口顯示,只能改善首幀 HTML 內容。
- 安裝與啓用前請閱讀 GitHub 倉庫 源碼與 MIT 許可證。
- 社區目錄頁:https://www.skillhub.cn/plugins/1jincheng/dsh-first-paint。
結尾¶
dsh-first-paint 把啓動頁寫進 DSH 首幀 index 注入,在獨立插件前提下消除桌面端常見的啓動白閃,並與 dsh-startup-screen 解耦協作。需要安裝命令、配置字段與限制說明時,以 GitHub README 爲準;在 SkillHub 或插件市場搜索 dsh-first-paint 即可找到目錄入口。