Lsc-Cyber
dsh-whale
一个DeepseekHerness的动画插件,在对话框上生成一个会动的小鲸鱼。点按可以喷水,右键呼出菜单。
- Stars
- 1
- Language
- JavaScript
- Created
- Aug 15, 2026
- Updated
- Aug 15, 2026
Introduction
🐋 dsh-whale — 会游泳会喷水的小鲸鱼(DeepSeek Harness 动态 Cordis 插件)
一个为 DeepSeek Harness 打造的动态 Cordis 插件(纯 Client): 在聊天输入框上方注入一只与页面 LOGO 逐像素同款的小鲸鱼。它会优雅地来回游动、随机起伏, 左键点击喷水,右键打开菜单开关游泳——全程纯 CSS 动画,零定时器、零 DOM 侵入,卸载即彻底清理。
✨ 功能一览
| 交互 | 效果 |
|---|---|
| 观察 | 14s 一个来回的游动,横跨输入框上方约 76% 宽度;到墙边减速、压扁翻转、掉头,头永远朝前进方向 |
| 游动中 | 叠加 9s 不规则起伏(高度/俯仰角随机错开),模拟真实游泳姿态 |
| 悬停 | 停下等你,放大、歪头、变主题色 |
| 左键 | 喷水(水柱 + 7 颗水珠,受"重力"回落渐隐),鲸鱼欢快跳跃 |
| 右键 | 弹出小菜单:✓ 游泳(开关)、喷水(快捷触发) |
| 切换模式 | 淡出 → 隐形切换 → 淡入 的优雅过渡,无瞬间跳变 |
| 静止模式 | 关掉游泳后鲸鱼静立居中,但左键喷水 + 跳跃依然有反应 |
| 无障碍 | 跟随系统"减少动态效果"设置自动停用动画;支持键盘触发(焦点 + 菜单键) |
🚀 快速开始(动态插件方式)
前提:DSH Web 界面已启动(本插件为 Client 端,无需任何 Host 代码、无需改配置)。
-
在 DSH 会话中,把
plugin/client.js的文件内容整体作为code.client传入cordis_define:cordis_define plugin.kind = new plugin.idPrefix = whale code.client = <plugin/client.js 的完整内容> -
用返回的
pluginId/packageId调用cordis_run(首次运行mode = run)。 -
浏览器弹出运行审批,点允许。搞定 🎉
-
想改代码后升级:
cordis_define用plugin.kind = existing+ 原pluginId追加新包, 然后cordis_run用mode = update切换(旧版本存档,可随时回滚)。
🛠️ 技术实现
- 纯 Client:无 Host 半区,无网络请求,无持久化。
- 插槽:注册在
conversation.input.dock(输入框正上方的整行插槽,id: 'whale',加法式、不替换任何现有单元格)。 - 动画:全部 CSS
@keyframes(styles.insert注入,随运行自动清理)——- 水平游动:绝对定位层
translateX(百分比按泳道宽度解析,窗口多宽游多宽); - 掉头朝向:同步
scaleX关键帧(LOGO 原生头朝左,向右游时镜像); - 随机起伏:多关键帧不规则曲线模拟;
- 喷水/跳跃:水珠用 CSS 变量(
--dx/--rise/--fall/--delay)做粒子动画。
- 水平游动:绝对定位层
- 时序:切换/喷水的复位全部用
animationend事件驱动,不用setTimeout。 - 不碰产品 DOM:不查询、不修改任何产品内部元素(LOGO 本体是外壳固定组件,无法直接动画,本插件是"同款鲸鱼")。
⚙️ 参数速查(想定制就改这些)
| 想要的效果 | 改哪里 |
|---|---|
| 游动更快/更慢 | plugin/client.js 中 dsh-whale-swim / dsh-whale-face 的 14s |
| 游动幅度 | dsh-whale-swim 的 ±38% |
| 鲸鱼大小 | 组件里 <svg width={44}> |
| 起伏更明显 | dsh-whale-bob 的 translateY 数值 |
| 喷水更高/水珠更多 | DROPS 数组 + dsh-whale-drop 的 --rise |
| 切换过渡时长 | dsh-whale-fade-out/in 的 .35s |
📦 版本历史
| 版本 | 内容 |
|---|---|
| v1 | 原地漂浮 + 点击喷水 |
| v2 | 来回游动 + 随机起伏 |
| v3 | 修复游动朝向(消除"太空步") |
| v4 | 恢复优雅转向动画 + 右键菜单开关游泳 |
| v5 | 修复静止模式喷水无反应 |
| v6 | 模式切换加入淡出/淡入过渡(当前) |
⚠️ 已知说明
- 新会话空状态页(hero 屏)的标题行里还有一只外壳自带的静态鲸鱼(产品外壳固定组件,无法被插件操作); 本插件的动感鲸鱼出现在输入框正上方。开始对话后,原版消失,只剩本插件的鲸鱼。
- 需要 DSH 版本支持动态 Cordis 插件(Client 侧插槽注入)。