🐋 DeepSeek 鲸鱼娘桌宠:给 DSH 加一只会撒娇、会提醒任务的赛博宠物

⚠️ 本文是非官方同人项目分享,与 DeepSeek 官方(深度求索)无隶属或背书关系,项目不用于商业用途

最近 OpenAI Codex 的宠物模式(赛博桌宠)很火,于是我也给 DeepSeek Harness(DSH)做了一只桌宠——鲸鱼娘:蓝发女仆 + 鲸鱼尾,会撒娇、会提醒你任务完成、会用神经网络人声说话。

先看效果:

DeepSeek 鲸鱼娘桌宠

✨ 功能一览

功能 说明
🐋 同人形象 DeepSeek 鲸鱼娘动画(社区开源素材,已去绿幕/品红残留)
🎞️ 状态动画 待机 / 工作 / 完成 / 出错 / 撒娇 / 跳跃,待机变体轮换
🗣️ 晓伊语音 神经网络人声,49 条台词预合成,完全离线播放
🥰 互动 戳一戳随机反应 · 长按摸头 · 双击静音 · 右键菜单
📢 提醒 任务完成(跳跃+纸屑+琶音+语音)· 出错安慰 · 审批提示 · 进度播报
🎛️ 音量 总音量 + 语音/音效/庆祝分动作音量(持久保存)
🖱️ 拖动 桌面版全身拖动 · Web 版按住鲸鱼娘拖动
💰 余额徽章 会话头部显示 DeepSeek 余额 + 一键充值入口

支持 两种形态

  • 🖥️ 桌面版:DSH Desktop(Electron)右下角独立透明置顶小窗
  • 🌐 Web 版:浏览器访问 dsh --profile web 时,页面右下角悬浮层

📦 安装

一键安装(Windows)

powershell -ExecutionPolicy Bypass -File install.ps1

脚本自动安装到两个 profile 并启用插件(自动备份原文件):

版本 Profile 路径
桌面版 %APPDATA%\dsh-desktop-client\dsh\profiles\web
Web 版 %USERPROFILE%\.dsh\profiles\web

安装后重启 DSH 桌面应用 / dsh web 服务生效。

其他选项:

install.ps1 -Target desktop   # 只装桌面版
install.ps1 -Target web       # 只装 Web 版
install.ps1 -Uninstall        # 卸载
install.ps1 -DryRun           # 预览,不实际改动

💡 可选补丁apply-main-patch.ps1 修复原版 DSH 的一个小问题——
关闭主窗口时桌宠窗口不会同步关闭(残留在屏幕上),应用补丁后桌宠随主窗口一起关闭。

🎮 使用

桌面版交互

操作 效果
按住角色任意位置 拖动窗口
单击帽子 戳一戳(随机撒娇/蹦跳/委屈)
长按帽子 0.7s 摸头(开心蹦跳)
双击帽子 静音 / 恢复
右键帽子 功能菜单(音量/测试/诊断/版本/刷新)
三击帽子 TTS 诊断面板

Web 版交互

操作 效果
按住鲸鱼娘 拖动悬浮面板
右上角 ✕ 隐藏(变 🐋 按钮)
点击 🐋 恢复

🏗️ 技术原理

桌宠本质是一个 Cordis 插件dsh-balance-widget),分为服务端和客户端两部分:

DSH server (session/event firehose)
        │  turn/start · turn/end · tool/call · todo/write ...
        ▼
index.js  ── /api/status ──►  pet.html (轮询 1.5s)
                                ├─ 状态机:idle/running/happy/coquetry/sad
                                ├─ 动画:webp 内嵌(帧延迟×3,节奏舒缓)
                                ├─ 语音:AudioContext 播放预合成晓伊 mp3
                                └─ 交互:拖动/戳/摸头/右键菜单/音量

几个有意思的技术点

  1. 事件驱动:服务端从 session firehose 监听 turn/startturn/endtool/calltodo/writeapproval/asked 等事件,/api/status 输出工作状态,桌宠页面每 1.5s 轮询——能感知"正在用哪个工具"“任务完成”“需要批准”。

  2. 神经网络语音:用 edge-tts 在构建时把 49 条台词预合成为 晓伊(XiaoyiNeural) 人声 MP3,内嵌进页面,AudioContext 离线播放——不依赖运行时网络,也不怕 Electron 沙箱里系统 TTS 不发声的问题。

  3. 桌面版 vs Web 版:桌面版是 Electron 独立透明置顶窗口(-webkit-app-region: drag 全身可拖);Web 版注入 shell.overlay 悬浮层,用 iframe 加载同一份 pet.html,拖动通过 postMessage 桥接

  4. 素材清理:角色动画是绿幕抠图,边缘有绿幕(品红)残留,用 despill.py + defringe.py 逐帧清理,白色背景下边缘干净。

🛠️ 自定义

换语音 / 加台词

pip install edge-tts pillow
# 编辑 tools/synth_all.py 里的台词表
python tools/synth_all.py        # 重新合成(可换 PET_VOICE 音色)
node tools/build-pet.mjs         # 构建 pet.html
powershell -ExecutionPolicy Bypass -File install.ps1

可用的音色(edge-tts)

PET_VOICE=zh-CN-XiaoyiNeural    # 晓伊(年轻可爱,默认)
PET_VOICE=zh-CN-XiaoxiaoNeural  # 晓晓(温柔标准)
PET_VOICE=zh-CN-YunxiNeural     # 云希(男声)

📁 项目结构

dsh-whale-pet/
├── install.ps1              # 一键安装/卸载(-Target / -Uninstall / -DryRun)
├── apply-main-patch.ps1     # main.js 补丁(桌宠随主窗口关闭)
├── patch/                   # 补丁文件(main.js + 原版)
├── plugin/dsh-balance-widget/  # 桌宠插件(核心)
│   └── lib/
│       ├── index.js         # 服务端:/pet.html /api/status /api/balance
│       ├── client.js        # 客户端:余额徽章 + Web 版悬浮桌宠
│       └── pet.html         # 桌宠页面(动画+语音+交互)
├── lib/                     # 构建源(template + anim + audio.json)
└── tools/                   # 语音合成/构建/修图工具

🔗 项目地址

❓ FAQ

桌宠没出现?

  1. 确认安装脚本输出均为 [OK]
  2. 重启 DSH 桌面应用 / dsh web 服务(插件在启动时加载)
  3. 检查 cordis.patch.yml 是否包含 balance-widget

Web 版桌宠不显示?

  • 确认访问的是重启后的 dsh web 服务,浏览器强制刷新(Ctrl+F5)

语音没声音?

  • 确认首次使用时点击过桌宠(解锁 AudioContext,浏览器自动播放策略)
  • 检查右键菜单里的音量滑块 > 0

🙏 致谢


最后:本项目是非官方同人项目,与 DeepSeek 官方无隶属或背书关系,不用于商业用途。角色素材版权归原作者所有。

如果你也想要一只会撒娇、会提醒任务的鲸鱼娘,快去试试吧!🐋✨

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐