Zum Hauptinhalt springen
G

dsh-whale-girl-pet

ghsyes/dsh-whale-girl-pet

Pixel-Waljungfer als Desktop-Haustier für DSH unter Windows. Zeigt den Agentenstatus anhand echter Sitzungsereignisse, lässt sich anstupsen und kitzeln, mit Ctrl ziehen und auf 72–480 px skalieren. Läuft in einem transparenten, stets im Vordergrund liegenden Electron-Fenster mit 22 enthaltenen Animationen.

Installation

dsh plugin --profile web add github:ghsyes/dsh-whale-girl-pet

README

鲸娘桌宠 · dsh-whale-girl-pet

把 DeepSeek Harness(DSH)的会话状态,变成一只真的住在 Windows 桌面上的像素鲸娘。

English

鲸娘桌宠

动作预览

它是什么

这不是一个网页里的小挂件:鲸娘是一个独立的 Electron 透明置顶窗口,浮在 Windows 桌面上,不占任务栏,也不会在 DSH 页面里重复出现。她监听 DSH 宿主真实的会话、工具调用、审批、子代理、归档事件,把「我正在干什么」翻译成 22 个像素动作;你还可以戳她、挠她、按住 Ctrl 把她拎走、随时缩放。

素材随插件一起分发,安装完就能用;本机 %DSH_HOME%\pets\whale-girl-emoji 里的同名素材会覆盖内置版本,方便换装。素材均来源于dsh-tui

能力

  • 实时状态:不是定时随机,而是真读会话事件。状态优先级: 设置预览 > 互动反应 > 等待确认(审批/提问) > 出错 > 上下文清理/会话归档 > 抱书搬运(worktree) > 小鲸鱼分身(≥2 子代理) > 施工中(≥3 个会话在调工具) > 听歌(2 个) > 敲代码(1 个) > 思考(回合未结束) > 任务完成(循环,点一次才停) > 呼呼大睡(5 分钟无互动) > 待机循环(眨眼 30 秒 + 随机 1 个其他动作,只播一轮)。
  • 待机是循环,不是一直眨眼:每一轮先「待机眨眼」30 秒,然后随机播 1 个其他待机动作(只播一轮),再回到眨眼;5 分钟没有互动就进入「呼呼大睡」,一直睡到你点她,醒后重新开始循环。会话、工具、审批等真实状态始终优先。
  • 完成任务会一直提醒:主会话正常结束,或者个人工作台里有任务验收通过,鲸娘会循环播「任务完成」;单击她一次,才播「举大拇指」并回到正常待机。子代理收尾不会误触发;出错也不会庆祝。
  • 可以交互:单击左脸/右脸 = 挨戳;1 秒内连点 3 下 = 挠痒;按住 Ctrl 再拖 = 拎起来换位置(普通拖动不会移动窗口);右键 = 原生菜单(放大 / 缩小 / 恢复默认 / 收起)。睡着时点她会先被吵醒。
  • 彩蛋:戳脸有 12% 概率变成「冒爱心」;主会话正常结束有 18% 概率冒爱心(其余进任务完成循环)。
  • 实时缩放:设置里 72–480 px;右键菜单每次 ±32 px;窗口位置和大小记在 %DSH_HOME%\whale-pet\desktop\window-state.json,下次原位复原。
  • 设置交互面板:DSH 设置 →「鲸娘桌宠」。显示开关、大小、不透明度、点击穿透、待机轮换,以及全部 22 个动作的点击预览。
  • 归档会话也有反应:归档一个会话时播「上下文清理」约 4 秒。
  • 首次运行自动准备 Electron:没有现成 Electron 时,从 npmmirror / GitHub Releases 下载固定版本 44.0.0 的 win32-x64 运行时,SHA-256 校验后解压;已经装过 dsh-orb 的话直接复用它的运行时。

环境

  • Windows 10/11 x64
  • DSH Desktop(engines.dsh >= 0.2.0-rc.2),Node.js 20+
  • 磁盘:插件约 3.5 MB;Electron 运行时下载约 160 MB、解压约 370 MB(已有 dsh-orb 运行时则不需要重复下载)
  • 可选:@dely0/dsh-personal-workbench,用于「工作台验收通过 → 任务完成循环」

安装

插件市场(推荐)

在 DSH 的 插件 → 发现 / 插件市场 里搜索 dsh-whale-girl-pet 或「鲸娘桌宠」,点安装。市场目录从 awesome-dsh-plugin 同步,收录后通常一天内出现;暂时搜不到就用下面的界面或命令行方式。

DSH 界面「添加插件」

打开 插件 → 添加插件,在输入框里填:

github:GHSYES/dsh-whale-girl-pet

也可以填完整地址 (https://ghfast.top/https://github.com/GHSYES/dsh-whale-girl-pet/archive/refs/heads/main.tar.gz)。这里只填“来源”,不要粘贴整条 dsh plugin ... add ... 命令,否则会报“无法识别这个包名或地址”。

命令行

dsh plugin --profile desktop add github:GHSYES/dsh-whale-girl-pet

dsh plugin 会把参数转发给 pnpm,成功后自动把 dsh-whale-pet 写进 profile 的 dsh.profile.bundles。重启 DSH Desktop 生效(宿主插件只在启动时加载)。 如果提示 Open DeepSeek Harness Desktop once to initialize its profile,先启动一次 DSH Desktop 再完全退出,然后重跑命令。如果入口没出现,打开 %DSH_HOME%\profiles\desktop\package.json 确认 bundles 里有 dsh-whale-pet。

手动安装

git clone https://github.com/GHSYES/dsh-whale-girl-pet.git "$env:USERPROFILE\.dsh\plugins\dsh-whale-pet"
dsh plugin --profile desktop add "file:$env:USERPROFILE\.dsh\plugins\dsh-whale-pet"

重启 DSH Desktop。

没有网络 / 不想自动下载 Electron

任选一种:

  1. 安装 dsh-orb,插件会自动复用 %DSH_HOME%\dsh-orb\electron-runtime\electron.exe;
  2. 自己准备 Electron 44.x,把环境变量 WHALE_PET_ELECTRON 指向 electron.exe 再启动 DSH。

下载日志在 %DSH_HOME%\whale-pet\spawn.log 和 desktop.log;设置面板会显示下载进度与失败原因,并提供「重试」。

交互面板

DSH 设置 → 鲸娘桌宠:

控件作用
显示在桌面上启动/收起桌面窗;Electron 未就绪时自动下载并显示进度
大小72–480 px,桌面窗即时 resize
不透明度20%–100%
点击穿透打开后鼠标事件穿透桌面窗(防止挡住工作)
待机轮换关闭后待机固定为「待机眨眼」
状态预览22 个动作网格,点一下强制播放 3 秒

22 个动作

动作key什么时候出现
待机眨眼idle没活;待机循环的 30 秒眨眼
东张西望idle-look待机循环,随机出现,只播一轮
开心喷水idle-spout待机循环,随机出现,只播一轮
思考中thinking回合已开始、还没结束
敲代码typing1 个会话正在调工具
戴耳机听歌music2 个会话在调工具;也在待机循环
小鲸鱼分身conducting≥2 个子代理;也在待机循环
施工中building≥3 个会话在调工具;也在待机循环
出错啦error工具失败 / 回合异常结束,约 4.5 秒
任务完成happy主会话正常结束 / 工作台验收通过,循环到点击确认
需要你确认notification审批或提问在等你
上下文清理compacting上下文压缩或归档会话,约 4.2 秒
抱书搬运carrying创建 worktree,约 4.2 秒
呼呼大睡sleeping5 分钟没有互动;一直持续到被点醒
被吵醒waking睡着时点她;醒后回到待机循环
戳左边poke-left点左半脸
戳右边poke-right点右半脸
被挠痒痒tickle1 秒内连点 3 下
被拎起来drag按住 Ctrl 拖动
游来游去swim待机循环,随机出现,只播一轮
冒爱心smile-hearts戳脸 12% / 正常结束 18%
举大拇指thumbs-up单击确认「任务完成」

数据与隐私

  • 全部状态、设置、窗口位置只写本机 %DSH_HOME%\whale-pet\。
  • 不发送遥测;唯一的主动网络请求是首次下载 Electron 运行时。
  • 工作台轮询只访问本机 DSH 的 GET /api/workbench/tasks(2 秒一次,接口不可达就静默跳过)。
  • 桌面窗加载的是本机 DSH 的 /whale-pet/standalone,不访问外部网页。

路由(prefix /whale-pet)

方法路径说明
GET/api/state当前动作、GIF、设置、会话统计、Electron 状态
GET/api/catalog22 个动作与运行时状态
GET/POST/api/settings读 / 合并写设置
GET/POST/api/runtime查看 / 重试 Electron 运行时下载
POST/api/hello前端上报 origin;端口变化会重启桌面窗
POST/api/interactionpoke-left / poke-right / tickle / drag / drag-end / waking
POST/api/desktop{open:true} 显示 / {open:false} 收起
POST/api/preview强制播放某个动作 3 秒
GET/standalone桌面窗的透明页
GET/standalone.js桌面窗交互脚本
GET/assets/<file.gif>22 张 GIF(素材库同名文件优先)

实现要点

  • index.js:ESM 宿主插件。状态机 + HTTP 路由 + Electron 进程管理。ctx.inject(['webServer'], ...) 挂 prefix 路由,用 webServer.getOrigin() 校正端口;每 10 秒自愈桌面窗;宿主退出时收掉桌宠。
  • runtime.js:Electron 44.0.0 运行时下载器。npmmirror → GitHub Releases,断点续传、SHA-256 校验、tar/PowerShell 解压、原子替换。
  • client.js:只负责设置分区(slots.inject('settings.section', ...)),不渲染页内悬浮层。
  • desktop/main.js:透明无边框、alwaysOnTop('screen-saver')、skipTaskbar、单实例锁、移动/缩放防抖落盘、原生右键菜单。
  • standalone.js:桌面页交互——Ctrl 拖动、左右脸判定、三连击、睡着唤醒、右键菜单命令。
  • desktop/preload.js:window.whalePet.move/dragStart/dragEnd/resizeTo/setClickThrough/hide/show/close/openMenu/onCommand。

已知限制

  • DSH 完全退出后桌宠会关闭;重新打开 DSH 会自动回来。
  • 改 index.js / runtime.js / desktop/* 需要重启 DSH Desktop;改 standalone.js 只需重启桌宠窗口;改 client.js 刷新页面。
  • 工作台联动依赖 @dely0/dsh-personal-workbench 的 GET /api/workbench/tasks;没装时静默跳过。启动时把当时已完成的任务当基线,不会给旧任务补庆祝。
  • 自动下载的 Electron 只覆盖 Windows x64;其他平台请设置 WHALE_PET_ELECTRON。
  • 单实例锁:同一 Windows 用户只允许一个桌宠窗口;重复启动会聚焦已有窗口。

素材与许可

开发

node --check index.js
node --check runtime.js
node --check client.js
node --check standalone.js

插件目录本身就是可安装包;assets/ 里的 22 张 GIF 与 catalog.json 是运行所需文件,不要只拷 index.js。


如果鲸娘让你在等模型的时候笑了一下,欢迎点个 Star。

Ähnliche Plugins