前言¶
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 即可找到目录入口。