资讯详情

给 DeepSeek Harness 做个「大肥鱼」开机动画:一个可安装的开屏插件

📅 2026/10/31 11:09:58 | 华诺云谱 👁 阅读
给 DeepSeek Harness 做个「大肥鱼」开机动画:一个可安装的开屏插件
给 DeepSeek Harness 桌面版加一段开机动画三段随机播放、可跳过、自动隐藏标题栏按钮。做成可安装的插件一条命令装完。缘起DeepSeek Harness 桌面版启动很快快到几乎没有开场——白屏一闪界面就出来了。想给它加个开屏翻了一圈发现官方并没有这个能力于是自己写了一个插件。题材选的是社区里的「大肥鱼」有人把 DeepSeek 的蓝色鲸鱼 Logo 丢给模型自己识别模型一本正经地说这看上去是一条蓝色大肥鱼隔了两秒才反应过来这不就是我自己吗。这个照镜子愣住的瞬间被截图传开成了 DeepSeek 在中文互联网上的外号。开屏这东西本身没什么实用价值它不提升任何性能也不解决任何问题。但它是一天里你和这个工具打的第一个照面——每次打开都看到同一张脸久了会形成一点奇怪的熟悉感。这大概也是为什么各家客户端都在开屏上花心思。插件已经开源装完重启就能看到效果。下面按「效果 → 安装 → 它做了什么 → 怎么换成你自己的片子」的顺序写想看实现细节可以直接跳到「实现上只用了三个公开接口」。效果每次启动从三段里随机抽一段播放播完自动淡出。随包的三段素材从左到右各取一帧片段时长码率画面stardust8.06s2659 kbps闭眼半身特写柔光星尘datastream7.05s2951 kbps左侧 DEEPSEEK 大字 右侧脸部 数据流gaze7.05s2106 kbps深色字标 青色瞳孔特写三段的节奏不太一样随机播的时候感受差别挺明显stardust是最安静的一段。纯黑底几道彗星状光带从两侧掠过然后人物以发光线稿的形态浮现——先有线再有颜色最后睁眼。整个过程没有台词、没有字标像一段片头曲的前奏。datastream偏科技片头。左侧砸下 DEEPSEEK 大字右侧是脸部特写中间穿插数据流与扫描线节奏最快、信息密度最高适合喜欢冲击力的。gaze最暗也最克制。深色背景上一个字标配眼部特写和细碎的 HUD 元素青色瞳孔是唯一的亮部。看久了有点像在盯屏幕里的另一个人。播放期间按Esc或点一下画面即可跳过。Windows 右上角的三个窗口按钮会在开屏期间隐去动画结束自动恢复——不然它们会白晃晃地压在画面上很出戏。三个设计取舍开屏动画看着简单但有三个参数会直接决定它是加分还是添堵这里说下取值理由。时长压在 8 秒。短于 5 秒感觉还没开始就结束了不如不做超过 10 秒第一次看惊艳、第三次开始不耐烦、第十次就想找地方关掉。8 秒左右是能完整看完一镜又不至于催你的区间。三段的时长都控制在 7–8 秒浮动不大。一律静音起播。浏览器禁止带声音的自动播放这是硬限制另一方面开屏出声本身就是风险——深夜开电脑、开会投屏、戴着耳机切窗口突然来一段 BGM 很容易社死。静音播放还有个好处动画可以在后台加载应用的同时跑不需要等音频解码。必须留逃生口。任何强制等待最后都会转化成怨气哪怕只有 8 秒。所以这里有三道Esc、点画面、以及 20 秒的兜底超时。前者给知道自己在干什么的人中间给随手想跳过的人最后一层给万一某个环节彻底卡住的情况。为什么用插件而不是改安装包想给客户端加开屏通常有三条路选哪条直接决定后续维护成本方案做法代价改安装包解包app.asar直接替换页面里的入口 HTML每次升级被整包覆盖宿主对入口文件有字面量依赖改错一个标签就直接启动失败独立启动器先弹一个小窗口播动画再拉起主程序多一个进程、任务栏会闪、快捷方式要改指向还得处理动画没播完用户就点了关闭插件注入走宿主暴露的扩展点把自己的东西挂进去需要先读懂加载机制换来的是升级不丢、能开关、能分发前两条都属于绕过系统能跑但每次升级都要重来一遍。插件方案前期麻烦后期省事——这也是最后选它的原因。安装dsh plugin --profile desktop add github:muning0214/dsh-custom-splash桌面版用--profile desktopWeb 版用--profile web装完完全退出 DSH 再重开bundle 在启动时装配热重载不生效仓库没有prepare/postinstall脚本pnpm add不编译任何东西不会触发构建授权首次安装会偏慢素材 7MBpnpm 会持续输出进度不是卡死不习惯命令行的话也可以在 App 里操作左侧「插件」→ 右上「添加插件」→ 输入github:muning0214/dsh-custom-splash→ 安装 → 启用 → 重启。卸载同样一条命令dsh plugin --profile desktop remove dsh-custom-splash插件解包后约 7.2MB其中 6.9MB 是视频素材。pnpm 会把它硬链接到全局 store同一台机器装第二次不会重复占空间。它具体做了什么随机播放。三段素材每次页面加载时用 Fisher–Yates 洗牌取一段。注意是在客户端抽而不是服务端抽——视频请求带Range如果服务端每次请求随机返回不同文件浏览器拿第 1 段和后 1 段数据时是不同片子直接播不了。随时跳过。Esc或点击画面立刻淡出正常播完也会淡出420ms 过渡。点画面任意位置都算不需要找按钮。隐藏标题栏按钮。DSH 桌面用titleBarStyle: hiddentitleBarOverlay那三个按钮由系统直接画在网页内容上方z-index给到最大也盖不住。真正的入口在 preload 里它有一个隐藏的span读这个探针的background-color/color通过 IPC 交给主进程setTitleBarOverlay()。所以只要让探针变透明按钮就跟着透明[data-windows-titlebar] body:has( #dsh-custom-splash) span[style*--dsw-specific-sidebar-fill]{background-color:transparent!important;color:transparent!important;}preload 监听着document.head的变动所以插一条style进去它就会自动重读重发移除时配色自动还原不用碰 IPC。透明之后按钮仍然可点只是看不见——8 秒里想关窗点右上角照样有效。实时锐化。素材是 720p在 1080p 以上的屏幕上会被放大。用 SVG 的卷积滤镜做一层反锐化kernelMatrix 0 -0.35 0 -0.35 2.4 -0.35 0 -0.35 0权重和正好是 1.0所以亮度不变、只提升边缘对比。中心值超过 3.2 就开始出白边。码率足够的素材其实可以把这层关掉我保留它是因为暗场细节损失比较明显。绝不卡启动。素材坏一个自动换下一个全部失败、解码报错、播放被拒、或者遮挡超过 20 秒任一条件成立立刻放行。开屏是个锦上添花的东西没理由让它拦住你干活。换成你自己的视频把 mp4 丢进assets/改index.mjs顶部的ASSETS表constASSETSnewMap([[stardust.mp4,video/mp4],[datastream.mp4,video/mp4],[gaze.mp4,video/mp4]])加一行多一段删一行少一段。视频需要faststartmoov在mdat之前否则浏览器要下完整个文件才能起播。素材没优化过的话用一行命令重排无损ffmpeg -i in.mp4 -c copy -movflags faststart out.mp4素材自己做也不难现在用 AI 生成一段几秒的动漫风短片成本已经很低了。要点只有三个——分辨率别低于 720p、时长压到 8 秒以内、导出时加 faststart。太长的片头第一次看惊喜、第三次就烦了。可调参数位置作用默认值MAX_HOLD最多遮挡多久毫秒兜底放行20000fade淡出时长毫秒420kernelMatrix锐化强度中心值越高越锐2.4 / -0.35CAPTION_CSS标题栏按钮透明规则见源码这几个参数都在index.mjs顶部或PLAYER常量里改完重启 DSH 即可生效不需要重新安装插件。装完没效果先看这四条现象原因与处理完全没出现先确认「插件」页里能看到dsh-custom-splash。能看到 → 是完全退出重开过吗看不到 → 安装没成功黑屏几秒后进界面多半是素材没 faststart或路由没挂上。用上面的 ffmpeg 命令重排一次播到一半自己消失20 秒看门狗超时通常还是 faststart 或解码太慢标题栏按钮还在只在 Windows 桌面版生效Web 版没有原生按钮不需要处理实现上只用了三个公开接口没有改任何打包文件全靠宿主暴露的扩展点connection.fetch.register()—— 在/api/dsh-splash/下挂本地视频路由必须支持Range否则 Chromium 无法流式解码。只读白名单里的三个文件路径不可穿越。webserver/index-inject—— 往index.html的 body 开头注入一段自包含脚本在应用外壳挂载之前用 Shadow DOM 盖一层全屏video。用 Shadow DOM 是为了跟应用样式彻底隔离卸载时也随插件一起消失。借 preload 的色探针—— 就是上面那段 CSS间接驱动setTitleBarOverlay()。整套代码不到 300 行没有第三方依赖、没有构建步骤改完重启直接生效。已知限制分辨率 1280×720这是素材源文件本身的分辨率不是压缩掉的。1080p 以上屏幕会放大显示靠实时锐化补偿码率 2106–2951 kbps高于视频平台常见的 720P 档但暗场与发丝细节仍有损失只在Windows 桌面版验证过macOS / Linux 上标题栏处理会自动跳过其余功能照常但没实测三段时长不一致8.06s / 7.05s / 7.05s所以开屏时长会略有浮动三段的开场都是纯黑所以刚出现时会有约 0.3 秒看不见东西——那是素材本身的设计不是加载问题开屏只覆盖应用外壳挂载之后这一段进程启动到页面开始渲染之间的极短白屏无法遮住想要更多功能这个插件的定位就是打开时放一段视频不做片库、不做触发规则。如果你想要的是更细的控制——比如按时段自动换片头、钉住某个会话每次都播、或者对视频加颗粒和暗角滤镜——社区里已经有更完整的实现Yiheng-guo/dsh-boot-animation-pro原版是 NativeDog1/dsh-boot-animation功能覆盖得比我这个全建议直接用那个。造这个轮子的意义不在功能多而在于它是从零到一写给你看的不到 300 行、三个接口、没有黑魔法看完你就能改。参考本项目的思路同时参考了下面两个项目特此致谢NativeDog1/dsh-boot-animation——原始项目DSH 开机动画的最初实现BSD-3-Clause。这个插件后来所有的变体都是从它长出来的Yiheng-guo/dsh-boot-animation-pro—— 上面那个项目的二次开发版在原有基础上补了播放控制、触发规则、片库管理、画面特效和分时段片头功能最完整两者一个是原版、一个是二开版本项目在看它们的时候各取了一部分原版定了「插件注入 全屏播放」这个基本形态二开版把「不做片库、只做好一件事」和「完全不碰安装包」这两条边界理得更清楚。仓库https://github.com/muning0214/dsh-custom-splash有问题欢迎提 Issue也可以直接改index.mjs里的参数哪里不合适自己调最快。如果它让你的每次启动多了一点期待点个 Star 就够了。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑