前言¶
DSH(DeepSeek Harness)的 Web 界面背后本来是一块不透明背景。这个插件在 z-index:-1 挂一张 position:fixed 的全屏 canvas,再把界面自己的背景 token 调成半透明玻璃——于是海、光点、水母、鲸鱼就从界面底下透出来了。
插件定位¶
- 名称:dsh-whale-pond
- 维护者:wenwubei5
- 分类:趣味换装
- 仓库:https://github.com/wenwubei5/dsh-whale-pond
- 插件目录:https://www.skillhub.cn/plugins/wenwubei5/dsh-whale-pond
这是一个纯视觉背景插件:不拦鼠标、不抢键盘、不碰任何业务代码。
核心功能¶
海与光点¶
- 默认 400 颗光点在海里飘(可拉到 2100),鲸鱼游过去会把它们吃掉,头上飘一行
-1 token。 - 鼠标是一盏提灯,带着洋流把光点往鲸鱼嘴边赶。
- 右下角有个发射区:鼠标进圈,圈里的光点和鲸鱼一起被甩出去(最远约 4 倍圈直径)。
控制台¶
界面右上角的小齿轮 ⚙(悬停变亮)点开就是控制台,拖动即时生效、不用刷新。设置存在 localStorage['whale-pond-settings-v1'](词库单独一个键),面板底部「恢复默认(词库保留)」一键回默认。
控制台包含 20 个控件,分为 10 个分组:
| 分组 | 控件 | 默认 |
|---|---|---|
| 开关 | 启用壁纸 ☑(和右上角 ■ / ▶ 等价) | 开 |
| 看海 | 全屏屏保 · 小窗摸鱼 · 回到壁纸(三个按钮,当前生效那个亮橙) | 壁纸模式 |
| 界面 | 面板不透明度 · 画布亮度 | 0.34 · 1.6 |
| 海 | 光点数量 · 光点速度 | 400 · 1.0 |
| 鼠标(提灯) | 洋流吸引光点 ☑ · 吸引半径 · 吸引强度 · 显示吸引范围光环 ☑ | 340px · 1.0 |
| 吃光点 | 飘字「-1 token」☑ · 飘字「吃掉「词」」☑ | 都开 |
| 词库 | 一行一个词,最多 200 个 / 每个 24 字,改一下存一下 | 内建 10 个词 |
| 右下角发射台 | 启用发射台 ☑ · 圈半径 · 距右下角 · 弹射力度 | 170px · 132px · 4.0 |
| 光点运动 | 运动方式 · 运动强度 · 呼吸灯 ☐ · 呼吸快慢 | 漂移 · 1.0 · 关 · 1.0 |
| 性能 | 内部清晰度 · 运行状态(只读) | 1.0 |
看海模式¶
控制台最上面「看海」组里三个按钮:
- 全屏屏保 —— 整片海铺满窗口,把界面文字全盖住,鲸鱼和光点在整屏里游。底部会浮出一条「点击画面或按 Esc 退出」的胶囊提示,5 秒后自己淡出。副屏上放着纯看很合适。
- 小窗摸鱼 —— 一个约 280×180 的圆角小海窗浮在右下角,界面照常能点能用;拖窗内任意处移动,拖右下角手柄缩放(280×180 ~ 560×347)。窗口一直被夹在视口里,不会拖丢。
- 回到壁纸 —— 回到正常的「铺满整个界面背后」模式。
三种模式互斥,当前生效的按钮亮橙色。这个模式本身不记忆:刷新页面就回到壁纸模式(「启用壁纸」那个停用开关倒是会记住)。
运动与性能¶
- 五种运动方式(漂移 / 飘落 / 上浮 / 洋流 / 漩涡)+ 呼吸灯,和鼠标吸引、发射台叠加生效。
- 深浅色主题自动跟随;
prefers-reduced-motion时跑 120 帧后定格;页面隐藏时暂停。
停用与恢复¶
要认真工作、不想再看海的时候,点右上角齿轮左边那个 ■ 就停(停用后按钮变成 ▶、亮橙色,再点一下回来);也可以打开控制台,最上面「开关」组里取消「启用壁纸」。两条路等价,状态存在 localStorage,刷新页面依然是停的。
它是真停,不是把画布藏起来:
cancelAnimationFrame停掉动画,canvasdisplay:none;- 120ms 吃光点、12s 造带词光点两个定时器和补货入口都提前返回;
- 宿主那层玻璃整份撤掉(
tokens.reset():body 的background:transparent !important与 8 个--dsw-alias-bg-*覆盖全部移除),界面回到原本不透明的深色; - 齿轮与面板留着当入口(齿轮降到 0.3 透明度),控制台「运行状态」会写「已停用 · 动画停、玻璃已撤」。
恢复时按 tokens.apply() → run() → 补齐光点数 的顺序来,不会出现「海回来了但界面还是实心」的中间态。
安装与启用¶
前提:页面必须是 DSH 自己的 Web 界面 —— 桌面端窗口,或者用 dsh web 起在浏览器里打开,两者都行。
插件走的是 DSH 的客户端插件机制(window.__ModuleLoader__),所以不能当普通 <script> 塞进别的网页;但它不是 Electron 专属,Chromium 内核的浏览器里实测正常。
方式 A:一条命令从 GitHub 直装(推荐)¶
# 1) 先确认活动 profile —— 这个文件里 "active" 那一项就是(常见 desktop / web)
cat "$APPDATA/DSH Desktop/profile-selection"
# 2) 用桌面端自带的 CLI,把 GitHub 上的包直接装进 profile(dsh 一般不在 PATH 里)
DSH="/c/Program Files/DSH Desktop" # 换成你自己的安装目录
ELECTRON_RUN_AS_NODE=1 DSH_HOME="$HOME/.dsh" "$DSH/DSH Desktop.exe" \
--expose-internals "$DSH/resources/app/lib/desktop-cli.js" \
plugin --profile desktop add "github:wenwubei5/dsh-whale-pond"
plugin add 后面的参数是原样转给 pnpm 的,所以三种写法都行:
| 写法 | 例子 | 说明 |
|---|---|---|
| GitHub 简写 | github:wenwubei5/dsh-whale-pond |
装当前 main 的最新提交 |
| git URL | git+https://github.com/wenwubei5/dsh-whale-pond.git |
同上,可加 #v1.0.0 钉版本 |
| 本地目录 | "D:/code/dsh-whale-pond" |
装成 link:,改源码刷新即生效 |
方式 B:先 clone 再装(想改源码用这个)¶
git clone https://github.com/wenwubei5/dsh-whale-pond.git "D:/code/dsh-whale-pond"
# 然后照上面第 2 步,最后一段换成:
# plugin --profile desktop add "D:/code/dsh-whale-pond"
改完 src/whale_pond.html 或 src/whale_panel.js 后跑 python build/build.py 重新生成 lib/client.js(只要 Python 3 + 标准库,没有第三方依赖)。
新增插件包必须重启一次 DSH(客户端入口要重新扫描)。之后再改代码就只要刷新页面(Ctrl+R)。
方式 C:下载 zip(离线 / 机器上没有 git)¶
到 Releases 下载 dsh-whale-pond-1.2.0.zip(约 50 KB,里面是 package.json + lib/ + cordis.patch.yml + README.md + LICENSE),解压出 dsh-whale-pond/,再把上面的命令最后一段换成那个目录:
... plugin --profile desktop add "D:/下载/dsh-whale-pond"
zip 里的 lib/client.js 就是生成好的产物(59,680 B),解压即可用,不需要构建。
卸载:把上面的 add 换成 remove。
在浏览器里用(不打开桌面端窗口)¶
插件跑在 DSH 的 Web 界面里,所以只要页面是 DSH 提供的,用浏览器打开效果完全一样。桌面端自带的 CLI 就能起一个纯 Web 实例:
DSH="/c/Program Files/DSH Desktop" # 换成你自己的安装目录
ELECTRON_RUN_AS_NODE=1 DSH_HOME="$HOME/.dsh" "$DSH/DSH Desktop.exe" \
--expose-internals "$DSH/resources/app/lib/desktop-cli.js" \
--profile web --port 4407 --no-open
它会打印一行 http://127.0.0.1:4407/?token=…,复制到 Chrome / Edge 里打开就有鲸鱼、光点和控制台。
插件要装进提供这个页面的那个 profile —— 上面安装命令里的 --profile desktop 换成 --profile web 即可。
两点要知道:
- 桌面端窗口自己那个端口(默认
43120)是给 Electron 渲染进程用的:浏览器直接开会被 DSH 的鉴权挡住(401),插件路由还带x-dsh-desktop-renderer头校验。这是宿主自己的限制,跟插件无关。 - 实测用的是 Chromium 内核(Chrome / Edge);Firefox / Safari 没测,理论上没问题(只用到 canvas 2D、CSS 变量和 localStorage)。
适用场景与注意¶
适合对界面视觉有要求、想在工作时放一点轻松场景的开发者。插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
短结尾¶
鲸鱼游在界面背后,光点随洋流聚拢又散开,控制台 20 项参数实时可调。目录页与 GitHub 仓库见上方链接。