启动时鲸鱼娘挥手眨眼,再随界面淡入沉回背景
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/5 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xulianglong-akk/dsh-whale-intro该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 30 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 5 处,展示前 5 条)
- 读取本地文件entry.js:135
const info = statSync(absolute) - 读取本地文件entry.js:162
if (!absolute.startsWith(ASSET_DIR + sep) || !existsSync(absolute)) { - 读取本地文件entry.js:167
const info = statSync(absolute) - 读取本地文件entry.js:188
const stream = createReadStream(absolute, { start: from, end: to }) - 读取本地文件entry.js:206
return readFileSync(SCREEN_FILE, 'utf8')
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 启动时挥手眨眼
- 沉回界面背景
鲸鱼娘开场:DSH 启动时她先出现,挥手、眨眼,然后连贯地沉回界面里。DeepSeek Harness 的预启动开场屏,在内核启动页之前注入到 <head>。
README
由 DeepSeek 最新模型翻译生成dsh-whale-intro 🐋
给 DSH 的一个开场:加载页面时鲸鱼娘先在海里出现,挥手 → 眨眼,然后随着界面淡入沉回背景里。
和「播一段视频再淡出」的区别在于时机:
| | 普通的启动视频插件 | 本插件 |
| 什么时候出现 | 界面已经渲染出来之后,再盖一层上去 | 在界面的启动页出现之前就占住屏幕 |
| 怎么接进界面 | 视频放完 → 淡出 → 露出界面(中间必然有一次"切") | 她一边沉下去,界面一边浮上来,是同一个动作 |
原理:客户端插件的浮层永远晚一步——DSH 的启动页是内核在 shell 脚本里同步建出来的。
只有往 里插一行解析阻塞脚本才能抢在它前面,这也是本插件把动画放在 Host 半侧、通过 webserver/index-inject 注入的原因。
行为
- 她出现时是淡淡的浮入(透明度 + 轻微上浮),不是"啪"地弹出来。
- 站着的时候有缓慢的浮动 + 轻微摆动(不是因为素材是动图,是 CSS 让她活着)。
- 2.3 秒时交叉淡入到眨眼那张——两张是同角度的站姿立绘,所以看起来像一个小动作,不像跳帧。
- 点一下、按任意键、滚一下滚轮,立刻跳过(0.42 秒的快速淡出)。
- 界面就绪(内核启动页消失 + #root 有内容)之后才交接;最早 3.4 秒、最晚 6 秒,两个边界都是硬的:界面再慢也不会被她挡住。
展开完整文档(README 剩余 1 节)
dsh-whale-intro 🐋
给 DSH 的一个开场:加载页面时鲸鱼娘先在海里出现,挥手 → 眨眼,然后随着界面淡入沉回背景里。
和「播一段视频再淡出」的区别在于时机:
| | 普通的启动视频插件 | 本插件 |
| 什么时候出现 | 界面已经渲染出来之后,再盖一层上去 | 在界面的启动页出现之前就占住屏幕 |
| 怎么接进界面 | 视频放完 → 淡出 → 露出界面(中间必然有一次"切") | 她一边沉下去,界面一边浮上来,是同一个动作 |
原理:客户端插件的浮层永远晚一步——DSH 的启动页是内核在 shell 脚本里同步建出来的。
只有往 里插一行解析阻塞脚本才能抢在它前面,这也是本插件把动画放在 Host 半侧、通过 webserver/index-inject 注入的原因。
行为
- 她出现时是淡淡的浮入(透明度 + 轻微上浮),不是"啪"地弹出来。
- 站着的时候有缓慢的浮动 + 轻微摆动(不是因为素材是动图,是 CSS 让她活着)。
- 2.3 秒时交叉淡入到眨眼那张——两张是同角度的站姿立绘,所以看起来像一个小动作,不像跳帧。
- 点一下、按任意键、滚一下滚轮,立刻跳过(0.42 秒的快速淡出)。
- 界面就绪(内核启动页消失 + #root 有内容)之后才交接;最早 3.4 秒、最晚 6 秒,两个边界都是硬的:界面再慢也不会被她挡住。
- 开场期间会把内核自己的启动页按住([data-dsh-boot]{opacity:0})。它由 shell 脚本在运行时创建,排在覆盖层后面——不按住的话同层级下它会盖在她上面,就又变成 "先闪一下白底加载卡"了。交接时这条规则会一起撤掉。
- 素材请求失败、脚本抛错、素材 1.5 秒内解不出来、标签页后台被节流—— 任何一条路都是立刻放行,不是卡住。
- 同一标签页内一次启动只演一遍(刷新不重播)。想看:地址后面加 ?whaleintro=1;想临时关掉:?whaleintro=0。
- 进场层挂在 document.documentElement 上,不进 #root,所以不会干扰 React 挂载。
为什么现在是清楚的
之前那版播的是一段 640×360 的视频,其中她本人只占约 262×308 像素;按窗口高度 58% 显示时相当于放大约 1.5 倍,所以发糊——编码怎么调都救不回来(实测换 hqx、换 libplacebo 的 ewa_lanczossharp 都更差或只是更"干净")。
现在用的是两张 512×512 带透明通道的立绘,按 58% 显示时约 522px,基本是原生 1:1,所以发丝、荷叶边、围裙上的小鲸鱼都是清楚的。透明通道还顺手解开了一个限制:她身上不再带黑色底,所以尺寸上限从 0.62 放宽到 0.95,想放多大放多大(超过 512px 会开始软)。
安装
桌面版(DSH Desktop,profile 名 desktop)
官方桌面版的市场只收 npm 上已发布的精确版本,GitHub 仓库装的插件在市场里点不了;但桌面版自带 CLI 的 plugin 子命令对 desktop profile 放行,直接用它:
把 <你的 DSH 安装目录> 换成实际路径,例如 E:\DSH $dsh = "<你的 DSH 安装目录>\resources\runtime\cli\bin\dsh.cmd"
① 直接从 GitHub 装(需要能访问 github.com) & $dsh plugin --profile desktop add "https://github.com/xulianglong-akk/dsh-whale-intro"
② 或者先下载到本地目录,再按目录装(路径里不要有空格) & $dsh plugin --profile desktop add "D:\DSH\plugins\dsh-whale-intro"
装完完全重启 DSH(bundle 层是启动时装配的)。
卸载:& $dsh plugin --profile desktop remove dsh-whale-intro,然后手工删掉残留链接 cmd /c rmdir "<profile>\node_modules\dsh-whale-intro" ——留着它下次启动可能被重新挂载(两层同 id 会产出两条 entry)。
旧版 dsh web(profile 名 web)
dsh plugin --profile web add "https://github.com/xulianglong-akk/dsh-whale-intro"
改代码后要不要重启,看改的是哪半边
| 改的东西 | 生效方式 |
| src/intro.js(屏幕脚本)、assets/* | 刷新页面即可(每次渲染索引都从磁盘重读) |
| entry.js(Host 半侧:路由、注入内容) | 必须完全重启 DSH(一个进程只导入一次) |
| profile 里 cordis.patch.yml 的配置覆盖行 | 刷新(补丁层热重载) |
改了 entry.js 之后、重启之前,开场是不显示状态(不是坏了)。
配置
改 profile 的 cordis.patch.yml,加一条按 id 定位的覆盖行(不用改本包):
- id: dsh-whale-intro
name: dsh-whale-intro
config:
enabled: true # false = 完全不注入,回到 DSH 原生启动页 oncePerLaunch: true # false = 每次刷新都演一遍 minMs: 3400 # 最早交接时间(毫秒) maxMs: 6000 # 最晚交接时间(毫秒) poseMs: 2300 # 第几毫秒交叉淡入到第二张(眨眼) sizeVh: 0.58 # 她占窗口高度的比例 maxHeightPx: 620 # 她的高度上限(px),高窗口想让她更大就调这个
不改任何文件就能试参数(地址栏)
这些参数只影响这一次打开,优先级高于配置,适合先试出来再写进配置:
| 参数 | 作用 | 取值范围 |
| ?whaleintro=1 / =0 | 强制演一遍 / 这次不演 | — |
| ?whalesize=0.5 | 她占窗口高度的比例(默认 0.58) | 0.2 – 0.95 |
| ?whalemax=900 | 她的高度上限(px,默认 620) | 160 – 1600 |
| ?whalepose=1500 | 第几毫秒切到眨眼(默认 2300) | 400 – 20000 |
| ?whalemin=2000 | 最早交接时间(毫秒,默认 3400) | 0 – 20000 |
| ?whalemaxms=4000 | 最晚交接时间(毫秒,默认 6000) | 1000 – 30000 |
例如「大一点、眨眼早一点」:?whaleintro=1&whalesize=0.7&whalepose=1400。
换素材
assets/pose-1.webp(挥手)和 assets/pose-2.webp(眨眼)就是全部内容。要求:
- 带透明通道的 WebP / PNG(本插件也会发 .gif .avif);
- 两张同角度、同比例、同位置最好——不然交叉淡入会看起来像跳帧;
- 换完刷新页面即可,不用重启(路由按文件大小 + 修改时间自动换 URL)。
想只用一张:把 entry.js 里的 POSES 数组删到只剩一个文件名即可(那时不会交叉淡入)。
本地预览(不装进 DSH 也能看)
双击 preview.html,就是一遍完整的开场(含跳过与重播按钮)。
结构
entry.js Host 半侧:素材路由(白名单 + Range)+ 注入 src/intro.js 注入进 的进场层脚本(每次渲染索引时重新读取) assets/pose-1.webp 鲸鱼娘·挥手(512×512,透明) assets/pose-2.webp 鲸鱼娘·眨眼(512×512,透明) cordis.patch.yml 让 DSH 认识本插件的挂载声明 NOTICE.md 素材来源与许可(务必保留) preview.html 本地预览
素材来源
立绘来自 Sutera-Diffusus/dsh-whale-musume(MIT),只改名未改动。角色与立绘归原作者所有,详见 NOTICE.md。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
xulianglong-akk/dsh-whale-intro
启动时鲸鱼娘挥手眨眼,再随界面淡入沉回背景
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目