Skip to main content
Z

dsh-zdd-pet

zz555z/dsh-zdd-pet

吃白饭的蓝色大肥鱼,赖在 DeepSeek Harness 里不走了。平时爱玩魔方、爱吃各种零食、偶尔打个盹,闲不住就在桌面上溜达两圈,被你拖来甩去也照旧赖着;你忙起来它跟着忙前忙后,也会帮你打理余额钱包,闲下来爱碎碎念,还乐意陪你唠两句。

Install

dsh plugin --profile web add github:zz555z/dsh-zdd-pet

README

dsh-zdd-pet 🐾

本仓库是 PC2005-cloud/dsh-pet 的二次开发分支(fork),项目名 dsh-zdd-pet。 在原版基础上新增了下面这些功能,其余行为与上游一致;原作者的署名与素材授权约定见文末「许可」。

本分支新增 / 改动

  • 🐟 气泡任务进度:宠物跟随 DSH 会话任务时,气泡里显示当前具体动作(如「编辑 work-status.ts」「运行 npm test」)+ 清单进度(▰▰▱▱▱ 2/5 方块条 + 数字);进度随 todo 实时更新、工具执行期间不清空,有任务时不被碎碎念/余额顶掉。
  • 🍅 番茄钟(专注 / 休息):设置页可选专注时长与休息时长;右键菜单新增「番茄钟」子菜单——开始专注 / 暂停 / 继续 / 查看剩余 / 跳过当前阶段 / 重置。支持短休息、长休息、自动开始休息;开始后气泡常驻显示倒计时,到点让桌宠说一句(零 token,文案池可在配置里自定义)。
  • 🎉 任务彩蛋:任务完成 / 出错时,气泡额外配一张随机表情包 + 一句话(纯配置、零 token;taskEasterEggs)。
  • 💰 余额告急演出:额度快用光(已用 ≥ 阈值)时让桌宠演一段(带表情包),阈值 + 冷却 + 已告急锁定三层防刷屏,只弹一次(balanceGag)。
  • 📍 位置与气泡优化:
    • 四个角落统一只用 marginX / marginY 贴角,按宠物身体(而非透明的动画盒子)贴边,marginX/marginY 即身体到屏幕边缘的真实像素,size 调大调小都稳定。
    • 顶部角(左上 / 右上)的气泡改为侧弹(左上→气泡在身体右侧、右上→在身体左侧),避免气泡顶出屏幕被裁;底部角气泡仍在上方。桌面端与浏览器端行为一致。
  • 🎊 启动吉祥话:每次 DSH 启动时让宠物说一句吉利话(带表情包)。两种模式可配——「语言池」首次调模型预生成一批(默认 100 句)存本地、之后随机抽一句(省 token、响应快),或「每次实时生成」每次现调模型;模型不可用时用内置几句兜底,保证一定开口。设置页「启动吉祥话」卡片可开关、选模式、改预生成句数。
  • 💗 心情 / 亲密度(双端):摸它会涨、久不理随时间衰减,分「低落 / 平常 / 超开心」三档;档位影响点击台词与空闲动作(开心会撒娇、低落更易叹气/打盹),心情满格还会触发「原地冲刺跑」彩蛋。心情值按宠物分别持久化,浏览器与桌面端行为一致;设置页新增「心情 / 亲密度」卡片。
  • 🎉 节日自动演出:当天命中节日表(春节 / 中秋 / 端午 / 腊八 / 重阳 / 万圣夜 / 圣诞…)时,宠物自动说一句祝福并播对应节日动画(零 token,不调模型);同一天只演一次,跨重启去重,文案与动画都可在 festival 里按节日名覆盖。
  • 🖼️ 气泡表情包总开关:设置页一个「气泡表情包」开关,统一控制所有气泡消息是否配表情包(碎碎念、对话、番茄钟、任务彩蛋、余额演出、启动吉祥话);关掉即全部只显示纯文字。
  • 👆 点击台词:点宠物时,除播点击动画外再从 clickTexts 文案池随机说一句气泡。
  • 😴 宠物作息:空闲超过 rest.sleepAfterSec 秒打瞌睡、一有交互就醒来伸懒腰(rest)。
  • 🎉 任务完成庆祝:一轮任务成功完成时播专属庆祝动画(celebrate,代替默认完成档)。

状态与提醒行为

  • 心情内部保留小数,界面显示整数;持续在线和离线重启按相同速率衰减。
  • 亲密度使用独立长期数值,互动增加,不随心情衰减或满心情彩蛋回落。首次从旧心情值迁移到带版本号的新本地状态,后续不重复迁移;浏览器和桌面仍各自保存。
  • 番茄钟运行或暂停时关闭功能,会在最多 5 秒内停止并收起自己的倒计时;关闭后仍可停止或重置。
  • 宿主说话气泡按来源调度:等待确认优先于任务完成,倒计时暂时让位,重要提示结束后恢复最新倒计时。收起请求携带消息编号,避免迟到请求清掉新提示。

内置默认配置(本分支的初始状态)

assets/config.jsonc 的默认值已按本人使用习惯调整:宠物 size 300、display desktop(仅桌面)、右下角 marginX 24 / marginY 20、字体 yahei 21、番茄钟开启 5 分钟、启动吉祥话开启(语言池 100 句)、余额开关与系统托盘默认关闭。安装 / 恢复默认后即为此状态,可在设置页或 ~/.dsh/dsh-zdd-pet/main-config.jsonc 中随时改。

🚀 安装本分支(fork)

本 fork 已把构建好的 lib/ 提交进仓库,所以可以直接从 GitHub 安装,无需自己构建:

# --profile 填实际在用的:桌面版一般 desktop、dsh web 用 web
dsh plugin --profile desktop add "github:zz555z/dsh-zdd-pet#path:/dsh-zdd-pet"
  • 桌面应用(Electron 版):在应用内「插件」页/插件管理里填 github:zz555z/dsh-zdd-pet#path:/dsh-zdd-pet。
  • #path:/dsh-zdd-pet 不能省(插件包在仓库这个子目录里)。
  • 装完 重启 DSH 生效。
  • 若安装后提示缺运行时依赖,进 node_modules/dsh-zdd-pet 跑一次 npm install(或 pnpm install)再重启。

想自己改代码从源码装:clone 后 cd dsh-zdd-pet && npm install && npm run build,再 dsh plugin --profile desktop add file:/绝对路径/dsh-zdd-pet/dsh-zdd-pet。

npm version npm monthly downloads total downloads stars license awesome dsh plugin repo size issues platform assets

一只住在 DeepSeek Harness 里的桌面宠物:待机呼吸、随机动作(打瞌睡、玩魔方、吃火锅……)、左右转向、屏幕漫游、点击 Q 弹、拖拽甩抛反弹、右键菜单点播——一百余个透明动画随时无缝衔接;还能跟随 DSH 会话事件切换工作状态动画、按档位播放余额动画 + 头顶气泡、碎碎念与对话聊天、窗口失焦时弹系统通知。可多开同屏,能脱离浏览器住上桌面(透明置顶小窗),也能自己添加全新宠物种类(pet pack)。

这不是一个普通插件,而是完整的三件套项目:

① 提示词(配方)    →  ② 素材生成链(引擎)  →  ③ 插件(成品)
AI 生成动画的配方     源视频 → 透明动画的管线    运行在 DSH 里的宠物

任何人 clone 本仓库,都可以从零生成自己的桌面宠物——换角色、换动作、换风格,全流程可复现。


快速开始(安装插件)

装法取决于你在用哪个 DSH:

🪟 桌面应用(Electron 版)

直接在应用内「插件管理」页的安装框里填 dsh-pet,不用开终端;需要在终端里操作插件时,用桌面应用自带的那份 CLI。

🌐 dsh web

以下命令都在你的命令行终端(PowerShell / CMD 等)中运行。前提是 DSH 环境已就绪:

# ① 前置要求:确认 Node.js 已安装
node -v

# ② 安装 DSH 启动器与 pnpm(已装可跳过;装完请重新打开终端)
npm install -g @deepseek-ai/dsh pnpm
dsh --version   # 验证 dsh 命令可用

# ③ 安装本插件(web 模式用 --profile web)
dsh plugin --profile web add dsh-pet

装完重开桌面应用(dsh web 用户则重启 dsh web)才生效——运行中的进程持有内存里的旧插件。宠物出现在界面右上角(默认配置角落,可在设置页修改)。

兼容性:本插件当前在 dsh 0.2.1-rc.2 下开发并测试(dsh --version 可查看你的版本)。建议使用相同版本;其他版本如遇问题欢迎反馈。

从源码安装(clone 本仓库后)

lib/ 构建产物不入库,clone 后需要先构建再安装:

# ① clone 本仓库,进入插件目录
git clone https://github.com/PC2005-cloud/dsh-pet.git
cd dsh-zdd-pet/dsh-zdd-pet

# ② 安装依赖
npm install

# ③ 构建(完整 lib:tsdown → lib + 桌面共享核心 + 类型声明)
npm run build       # 必须手动跑一次(克隆后 npm install 不再自动构建)

# ④ 安装到 DSH(file: 指向**插件目录**——上面 cd 进去的那一层,用构建好的 lib)
#    --profile 填实际在用的那个:dsh web → web;
#    桌面应用(Electron 版)改用应用内「插件管理」安装,见上方快速开始
dsh plugin --profile web add file:D:/path/to/dsh-zdd-pet/dsh-zdd-pet

注:npm run build(即 scripts/prepare.js)才产出完整可安装的 lib——除 tsdown 构建外还构建桌面共享核心(shared-core.js)、生成类型声明并收敛发布 files 清单;裸 tsdown 构建会缺桌面运行时与类型。发布与打包(npm publish / npm pack)时由 prepack 自动调用它,克隆仓库后需手动跑一次。

安装后你会看到什么

默认配置是 display: "both"(浏览器与桌面都显示),所以重开 DSH 之后会依次出现两处,不必手动开:

  1. 浏览器端先出现。 宠物落在界面右上角(默认角落,设置页可改),此时桌面上还是空的。

  2. 宿主自动补桌面运行时。 本机没有 Electron 时,插件会自己下载一份(落在 ~/.dsh/electron,同一版本只下一次;默认走 npmmirror 镜像)。进度直接打在 DSH 的控制台里,形如:

    [dsh-pet] Electron not found, downloading to <用户目录>/.dsh/electron/electron.exe ...
    [dsh-pet] Electron not found, downloading v43.3.0 (win32-x64) ...
    [dsh-pet] downloading 42.3MB / 104.1MB
    [dsh-pet] download complete (37.5s), extracting to <用户目录>/.dsh/electron ...
    

    这一步在后台进行,浏览器里的宠物照常可用;要等多久取决于网速(几十秒到几分钟),期间不用管它。

  3. 桌面端随后出现。 解压完自动拉起桌面 Helper,同一只宠物以透明窗形式落到桌面上——此时屏幕上一共两只:浏览器里一只、桌面上那只,共用同一份配置与同一套动画。

  4. 想只留一只。 两条路都行,改完即时生效:

    • 设置页:选中该宠物 →「显示位置」下拉框 → 仅浏览器 / 仅桌面 / 两者都显示 / 都不显示;
    • 宠物右键:菜单里的「显示位置」子菜单 → 仅网页 / 仅桌面 / 两者 / 都不(不用回设置页)。

已经装过 Electron(或设了 DSH_PET_ELECTRON_PATH 指向现成可执行文件)时,第 2 步会跳过,桌面端几乎立刻出现。下载失败只影响桌面模式:控制台会给出提示,浏览器里的宠物不受影响;网络受限时可以设 DSH_PET_ELECTRON_MIRROR 换镜像、DSH_PET_ELECTRON_VERSION 指定版本,重启后再试。

插件功能

  • 纯粹的桌宠:不做天气、监控等无关功能,不碰 DSH 内核;可选能力只有下面这些(余额 / 碎碎念 / 对话 / 工作状态 / 系统通知)
  • 动画链:每个动画(含待机)播完即按权重选下一个(默认 idle 10 / turn 5 / move 5 + 分类权重,config.jsonc 可调),首尾相接
  • 事件动画:余额 / 碎碎念 / 工作状态按档位触发专属动画;档位支持候选数组——触发时档内随机、循环播放自动轮换,避免连播同一段
  • 多开:同时显示多个宠物,各自独立大小与位置(设置页「桌宠配置」添加/删除)
  • 屏幕漫游:朝朝向方向行走,先探测空间、不走出屏幕(多屏按各屏边界判定;设置页「锁定在当前屏幕」开启后只在当前所在那块屏内走)
  • 点击 / 拖拽 / 甩抛:点击有回应动画并 Q 弹挤压;拖拽过阻尼弹簧跟手,甩出即抛物线飞行、屏幕边缘反弹、落地摩擦停稳并 Q 弹一下;温柔放下原地停住;两端同一套纯函数物理与挤压曲线(dsh-zdd-pet/src/shared/physics.ts)
  • 右键菜单:「动作 → 分类 → 具体动画」任意点播(移动类动画点播会真实行走一段);工具项——浏览器端:碎碎念 / 对话 / 回到初始位置;桌面端:+ 打开网站、查看余额(余额启用时显示)、重载配置(改完配置文件直接右键重载全部桌面宠物,不必回设置页点保存)
  • 「打开网站」按宿主自动分派:宠物宿主是 DSH 桌面应用时,该项自动变成「打开 DeepSeek Harness」——用应用自注册的 dsh://open 协议把桌面应用主窗口唤到前台(已运行则前置、未运行则拉起);宿主是 dsh web / 独立模式时,仍是系统默认浏览器打开站点
  • 朝向与落地:全部动画可镜像(可朝左 / 朝右);脚底线统一,宠物始终站在地面上
  • 流畅切换:双缓冲交叉淡入,切换无空白帧
  • 余额展示:按已用百分比分档播余额动画 + 头顶联想气泡(10 秒自动消失);DeepSeek 显示账户余额,OpenCode Zen Go 与 Command Code 显示最紧迫的一个额度窗口;未登记余额接口的服务商改为弹文字说明(不静默);按宠物独立开关
  • 碎碎念与对话:碎碎念按周期自动生成一句(说话动画 + 气泡,也可手动触发);对话在右键弹输入框与宠物聊天,还能附一张图(上传 / 拖拽 / 粘贴 / 截屏),记忆持久化(浏览器 / 桌面共享同一份)
  • 工作状态联动:监听 DSH 会话事件,切「思考 / 工作 / 整理 / 等待 / 成功 / 出错」档位动画 + 常驻气泡;目标多轮任务只在真正收尾轮庆祝
  • 等待确认常驻气泡:审批 / 向用户提问时,宠物显示对应表情包 + 一句话气泡;用户不确认就一直存在,确认后自动收起
  • 系统通知:窗口失焦时弹系统 toast(对话完成 / 生成失败 / 输出截断 / 权限申请 / 用户选择)
  • 桌面模式(可选):每只宠物开一个独立透明置顶局部小窗,与浏览器严格同行为、共用同一份素材与纯逻辑(见下节)
  • pet pack(额外宠物种类):pet/ 下建 种类名-config.json + 种类名-animation/ 即新增独立动画池与素材的全新种类,多实例共享素材(见 CONFIG.md 的「方式四」)
  • 自定义动画:往 main-animation/webm/ 放 VP9-Alpha 的 .webm 即为新动画,优先于包内素材
  • 无障碍:支持 prefers-reduced-motion(减少动效时跳过 Q 弹挤压与淡入切换)

🔌 对外接口(供其他插件调用)

桌宠不只自己玩,也对外开放两条调用通道,让别的插件或脚本能驱动它、读它的状态。

  • 能做什么:让它说一句指定的话、播一段指定动画、与它对话;读它当前说的话、工作状态、系统通知与余额
  • 为什么开放:桌宠不该只是个摆设——比如一个「女仆」插件巡检验完想说句话,就能让桌宠当它的「实体」开口;也方便任何人基于它做二次开发
  • 通道一 · HTTP:挂在 DSH 自己的 Web 服务上(前缀 /dsh-zdd-pet-7340,只监听本机、无鉴权),跨进程、脚本可直接调。动作类接口只回 {ok},数据统一从 GET /state 读
  • 通道二 · Cordis 服务:客户端半侧在 DSH web 页面内注册,同页客户端插件用 ctx.get('petApiZdd') 直接取,零网络、零端口;只在该页面实例内有效,方法与返回见 CORDIS.md

相关文件(HTTP 与 Cordis 各一套):

  • API.md —— HTTP 接口一览(每个接口一句话,功能预览)
  • openapi.yaml —— 完整契约(OpenAPI 3.1,可直接导入 Swagger UI / Postman)
  • CORDIS-API.md —— Cordis 服务一览(每个成员一句话,功能预览)
  • CORDIS.md —— 对外 Cordis 服务(客户端半侧,页面内 ctx.get('petApiZdd'),不走网络)
  • tools/api-tester.html —— HTTP 侧示例:桌宠控制台,扮演第三方消费方,可直观试用(node tools/api-tester.cjs 启动)
  • tools/cordis-probe —— Cordis 侧示例:扮演同页客户端插件,用 ctx.get() 消费服务

扩展做出来后欢迎分享:统一收录在 PC2005-cloud/petE——本项目的扩展收录仓库,每个扩展占一个目录、元信息写在 plugin.json,列表由流水线生成。想把自己的加进去,按仓库里的 CONTRIBUTING.md 提 PR 即可。安装:dsh plugin --profile web add "github:PC2005-cloud/petE#path:/<扩展目录>"。收录不代表对功能或安全性的审核,安装前请自行阅读代码。

兼容性

  • 操作系统:Windows / Linux / macOS 三端均可运行——浏览器 overlay 与桌面模式(Electron 透明置顶窗)行为完全一致;Electron 按平台自动探测/下载(electron.exe / Electron.app / linux 单文件),无需手动安装
  • 无头 / 无桌面环境:支持 Linux headless 等无图形会话——桌面模式自动检测显示环境(Linux 无 DISPLAY / WAYLAND_DISPLAY 时判定无显示、跳过桌面窗口,仅日志告警),浏览器 overlay 不受影响
  • 浏览器:浏览器 overlay 兼容 Chromium 内核(Chrome / Edge 等)与 Firefox——透明动画依赖 VP9-Alpha webm,三者均已实测透明确认;不支持 Safari(macOS 不认 webm alpha,透明渲染为黑底)——macOS 用 .mov 素材(GitHub Release assets-mov),下载放入即可(见「②.5 Safari/HEVC 兼容素材」)
  • 多显示器:支持多屏环境——跨屏漫游/抛掷以各屏工作区为界,异构缩放(各屏 DPI 不同)、任务栏条带、屏幕之间空洞均正确判定(横屏 / 竖屏 / 上下叠放皆可);设置页「锁定在当前屏幕」可让宠物(抛掷与漫游)只在当前所在那块屏内活动

🪟 桌面模式(可选,脱离浏览器)

插件内建双模式:安装后默认会拉起独立透明置顶小窗——为每只桌面宠物各开一个局部窗口(跟随宠物移动,不铺满屏幕),与浏览器 overlay 严格同行为、功能完全对齐:

  • 依赖:首次启动自动探测/下载 Electron(~/.dsh/electron/,也可 cd dsh-pet && npm run ensure:electron 手动触发);缺失时仅日志告警,不影响浏览器形态
  • 开关 = 每只宠物的必填字段 display:web = 仅浏览器 / desktop = 仅桌面 / both = 两者 / none = 都不显示;桌面模式渲染 display 含 desktop 的全部宠物(多开同屏,与浏览器一致),设置页「桌宠配置」编辑即时生效
  • 桌面端数据走独立进程管道,不依赖 DSH 的 HTTP 路由,不受 web 访问闸门影响
  • 本地调试:cd dsh-pet && npm run start:desktop -- http://127.0.0.1:3080/dsh-zdd-pet-7340/config(无宿主时自动回落 HTTP 路径)

🧍 独立运行(完全不打开 DSH)

连 DSH 都不用开:插件的宿主半边跑在伪 ctx 上,由一个本机 HTTP 服务接管路由(路由表仍是插件那一份)。

npm install -g dsh-pet        # 必须 npm 装;dsh plugin add 装进 profile,bin 不在 PATH 上
dsh-pet-standalone            # http://127.0.0.1:3080/dsh-zdd-pet-7340/(占用则顺延)
dsh-pet-standalone --check    # 只体检
dsh-pet-standalone --port 3100

npm run build && npm run standalone   # 仓库里(先构建)
  • 能用:动画链、点击/拖拽/甩抛、右键菜单、多开、自定义动画与表情包、pet pack。
  • 不可用:余额、碎碎念、对话、系统通知——返回带 reason 的结构化失败(见 API.md)。
  • 配置:与 DSH 同一份($DSH_HOME/dsh-zdd-pet/main-config.jsonc → 包内默认)。
  • 只显示 display 含 desktop/both 的实例;端口默认 3080;Ctrl+C 或 POST /shutdown 退出。
  • 与 DSH 内运行可同时开,但共用 %APPDATA%\dsh-pet-electron-helper,可能互相踩缓存(仅告警)。

⚙️ 余额展示(Balance)

按 eventsRefreshSec.balance(秒)周期拉取当前服务商的余额/用量数据,每次刷新按档位触发一次余额动画,并在宠物头顶弹出联想气泡(随宠物大小等比缩放,10 秒自动消失):

  • DeepSeek 官方(deepseek-official):气泡显示账户余额(如 余额 ¥8.79);余额按 ¥20 满额折算成已用百分比,分 6 档播放动画(钱袋满溢 → 金袋叮当 → 钱袋如常 → 数金皱眉 → 袋空如洗 → 分文不剩)
  • OpenCode Zen Go(opencode-go):气泡显示 5h/周/月 三个额度窗口中最先告急的一个(如 周额度已用 88% / 2.5 天重置),同样按已用百分比分档
  • Command Code(commandcode,含 GOAT 等套餐):气泡显示 5h/周/月 三个额度窗口中最先告急的一个(与 opencode 同一口径:剩余额度最少者,通常先报 5h);套餐无窗口限制时只报月度窗
  • 暂不支持的服务商:未登记余额接口的服务商不播档位动画,改为弹一句文字说明——第一行「当前服务商暂不支持余额查询」,第二行报出当前 provider id(便于自查);缺凭证 / 抓取失败同理(原因写在第二行)。自动轮询只在原因变化时弹一次(不反复打扰),手动 /balance 或桌面右键「查看余额」则每次都会弹
  • 按宠物开关:pets[i].balanceEnabled(必填布尔)控制该宠物是否触发余额动画/显示气泡
  • 所需凭据:对应 provider 的 API key(deepseek-official → DEEPSEEK_API_KEY;opencode-go → OPENCODE_GO_API_KEY;commandcode → COMMANDCODE_API_KEY),在 DSH 凭据中配置后启用;未匹配的服务商不触发动画,改为弹上面的文字说明气泡

⚙️ 碎碎念与对话

  • 碎碎念:pets[i].whisperEnabled 开启后,按 eventsRefreshSec.whisper(秒,默认 300)周期自动生成一句——每只宠物独立周期、独立文案;触发时随机抽 events.whisper 动画 + 头顶说话气泡(10 秒消失)。默认开启
  • 手动触发:右键菜单「碎碎念」随时来一句——不受 whisperEnabled 门控(该字段只关自动周期轮询)
  • 对话:右键菜单「对话」或 /chat 命令打开输入框,与宠物聊天——回复走碎碎念同款展示(说话动画 + 气泡);记忆持久化在 $DSH_HOME/dsh-zdd-pet/memory.json,浏览器与桌面共享同一份;多宠物时先用 /pet 选择对话目标
  • 带图对话:输入框下方两枚按钮——上传图片、截取当前屏幕;也可以把图拖到宠物身上,或直接 Ctrl+V 粘贴截图。图片只跟随这一轮请求,不进记忆、不进气泡;原图 ≤640 KiB 且长边 ≤2048 时原样发送,超限会缩到长边 2048 并按质量阶梯压成 JPEG(对应 POST /chat 的可选 attachment,见 API.md)
  • 打开对话的快捷键:鼠标停在某只宠物上按 T(右键菜单「对话」右侧有同样的提示)。桌面端要求窗口已聚焦——透明窗用 showInactive 显示、默认不抢焦点,先点一下宠物即可
  • 截屏的边界:只在点击/粘贴/拖拽那一瞬抓一帧,随即停流;桌面端取「宠物所在那块屏」,不建长连接、不落盘。图片与用户在 DSH 里贴图走同一个附件存储(内容寻址、同图去重)

⚙️ 工作状态联动(Work Status)

pets[i].workStatusEnabled 开启后,宠物跟随 DSH 会话活动切「思考 / 工作 / 整理 / 等待 / 成功 / 出错」六档动画 + 头顶气泡:非终态动画循环播、气泡常驻;成功 / 出错播一遍、气泡 10 秒自动收起。

  • 档位动画:animations.events.workStatus 数组,索引即档位(勿在中间插入新档,只可追加末尾)
  • 气泡文案:workStatusTexts 每档可配多句随机,任务详情(todo)优先
  • 档位候选数组:任意档位槽位可写 string | string[]——数组 = 档内随机抽 1,循环播放自动轮换、避免连播同一段(余额 / 碎碎念档位同样适用)
  • 等待用户确认:approval/asked(工具审批)与 ask_user_question(选择题)时,额外显示「对应表情包 + 一句话」的常驻气泡,优先级最高且不自动收起;用户作出选择 / 审批结果回来 / 回合结束时自动清掉。表情包优先从该宠物的池里挑与场景匹配的(审批:压力/无语类;提问:哦鲸鲸/疑惑类),池里没有则随机一张。

⚙️ 配置(大小 / 位置 / 多开)

设置页可改大小、位置、边距、显示位置、余额开关、多开与物理参数;配置文件则可以任意自由配置(动画池、播放权重、事件动画、刷新周期……)。

三种配置途径与「pet pack 额外宠物种类」的完整说明见 CONFIG.md。

运行效果

宠物实际运行在 DSH Web 界面中的样子:

dsh-pet 运行效果 1 dsh-pet 运行效果 2 dsh-pet 运行效果 3 dsh-pet 运行效果 4 dsh-pet 运行效果 5 dsh-pet 运行效果 6 dsh-pet 运行效果 7 dsh-pet 运行效果 8

效果预览

全部动画(640×360,插件实际播放用的资源)——GIF 预览存放于仓库 dsh-zdd-pet/assets/preview/(raw 直链渲染,文件名采用拼音便于跨平台);完整透明视频见插件包 dsh-zdd-pet/assets/webm/(VP9-alpha,唯一发布格式):

待机 / 转向

待机呼吸休闲 东张西望

移动

螃蟹走路 原地漂浮踏步 原地左转奔跑

小动作

悠闲哼歌 超大伸懒腰 原地敲击桌面互动 原地重力下蹲压缩 哈欠连天 原地小憩沉眠 女仆屈膝礼仪 被吓一跳 小幅度原地360度旋转展示 偷吃零食被抓住 用鲸鱼尾巴拍打地面 打瞌睡被惊醒 照镜子 整体换装试色 轻快记录 写代码 摇扇纳凉 晨间刷牙

玩耍

原地专心玩魔方 原地蹲下玩玩具汽车 鲸鱼吐泡泡特效 原地跳跃抓碎头顶物品 玩游戏气急败坏 玩水枪 小提琴演奏 蓝鲸现世 优雅女仆舞 轻快摇摆舞 可爱宅舞 吹气球 动物环绕 放风筝 拆礼物 变鸽子 扑克魔术 抽陀螺 吹笛子 蝴蝶蜜蜂环绕头顶开花 撸猫 凭空生花 骑木马 三球抛接 踢毽子 下五子棋 荡秋千

吃什么

吃白饭 大口吃零食 吃Token 吃早餐 吃午餐 吃晚餐 吃冰淇淋融化 吃大闸蟹 吃糖葫芦 吃长寿面 吃西瓜 涮火锅

时节

被落叶淹没 中秋赏月吃月饼 堆雪人 放烟花 吃粽子 吃年糕 吃青团 吃腊八粥 吃重阳糕 收红包 写福字 穿针乞巧 舞狮头 讨糖南瓜灯 插茱萸赏菊 放河灯 萌化小幽灵 装点圣诞树 放孔明灯 吃汤圆 吃饺子

文字

是啊,吃什么 深度思考碎碎念

点击回应

点击回应-开心跃动 点击回应-害羞惊讶 点击回应-傲娇生气 点击回应-挠痒咯咯笑 点击回应-元气挥手

拖拽

被鼠标拖拽悬空反馈

余额事件(按余额已用百分比分档,满格 → 告急 → 耗尽)

余额-钱袋满溢 余额-金袋叮当 余额-钱袋如常 余额-数金皱眉 余额-袋空如洗 余额-分文不剩

碎碎念说话动画(碎碎念 / 对话回复触发,随机抽 1 段)

碎碎念-擦桌碎碎念 碎碎念-发呆碎碎念 碎碎念-对屏碎碎念

工作状态动画(跟随 DSH 会话事件,六档:思考 / 工作 / 整理 / 等待 / 成功 / 出错)

工作状态-思考冒泡 工作状态-忙碌点按 工作状态-清点归档 工作状态-原地踱步张望 工作状态-雀跃庆祝 工作状态-垂头叹气冒汗

注:动画为透明背景;GIF 预览中透明部分显示为页面底色,实际 webm 播放为透明。

从零生成你自己的宠物

AI 提示词 → 绿幕视频 → 透明动画 → 插件,换角色、换动作、换风格,全流程可复现。

完整步骤见 MAKE-YOUR-OWN-PET.md(提示词配方、素材链、Safari 兼容、发布)。

项目结构

只列代码与发布相关目录;素材链的 video / scripts / step / pr 见 MAKE-YOUR-OWN-PET.md 的 ② 章节(gitignore 的本地目录不列):

├── README.md  MAKE-YOUR-OWN-PET.md  CONFIG.md  API.md  CORDIS.md  openapi.yaml   # 说明 / 宠物制作指南 / 配置 / HTTP 接口 / Cordis 服务 / OpenAPI 规范
├── prompts/           # ① 动画生成提示词配方(绿幕规范 + 按秒分解)
├── assets/            # 仓库展示用截图
├── tools/             # 开发工具:API 调试页、cordis-probe mock 服务商、DPI 探针
├── .github/workflows/ # CI:Safari/HEVC 转码流水线(macOS runner,手动触发 → 发布 assets-mov Release)
├── dsh-zdd-pet/           # ③ 插件(可独立 npm 发布)
│   ├── src/
│   │   ├── host/       # 宿主半侧:配置 / 路由 / 余额 / 工作状态
│   │   ├── client/     # 浏览器半侧:宠物渲染 / 动画链 / 设置页
│   │   ├── shared/     # 双端共用纯逻辑(物理 / 菜单 / 取数)
│   │   └── standalone/ # 独立模式 CLI(不依赖 DSH 直接跑桌宠)
│   ├── lib/            # 构建产物(npm run build 生成,不入库)
│   ├── runtime/        # 桌面模式运行壳(Electron 透明窗)
│   ├── assets/         # webm 动画 / preview GIF / 字体 / 图标 / config.jsonc 默认配置
│   └── scripts/        # 构建、发布与开发脚本
└── LICENSE             # MIT

💬 反馈与发版节奏

欢迎提 issue 与 PR——bug、体验问题随时反馈。新功能请先开 issue 说明使用场景,由维护者判断是否实现、以及放在插件本体还是作为第三方扩展,不要在确认前直接提交实现 PR。与桌宠本身关系不大、或实现特别复杂的功能,通常不会进本体,而是通过现有接口由第三方扩展实现。动手前也请先翻一眼 提交记录,确认不是已经修掉的同款问题(有些问题可能已经在 main 上修好了,只是还没发版)。

  • 小修不单独发版:不影响使用的小 bug 与优化会累计到下一个版本一起发,避免版本更迭过于频繁。所以「main 上已经修了」不等于「你装的这版已经包含」——latest 没更新时,以 main 的提交记录为准。
  • 想立刻用上未发布的修复:按上面的「从源码安装」把插件指向本地仓库即可;注意宿主半侧的代码改动要重开 DSH 才生效(浏览器半侧刷新页面即可)。
  • 报 bug 时请带上:插件版本、dsh 版本、操作系统、复现步骤(有日志或截图更好)。

许可

  • 代码:MIT
  • 素材(动画/提示词/源视频):允许开源使用,禁止商用
  • 二次创作(二创)约定:基于本项目的衍生 / 改版 / 换皮作品,在 GitHub 仓库、产品官网等公开渠道上须附上原作者 GitHub 地址:https://github.com/PC2005-cloud/dsh-pet
  • 形象出处:宠物形象为社区二创的 DeepSeek「大肥鱼」(鲸鱼娘),非 DeepSeek 官方形象;原型「溟月」出自 B 站 @上善无形,DeepSeek 版(女仆鲸鱼娘)设计出自 B 站 @ZipZipPipe
  • 形象授权:CC BY-NC-SA 4.0(署名 · 非商业 · 相同方式共享),声明原文:「大肥鱼是遵守CC BY-NC-SA 4.0协议的形象,不可以以任何形式商业化。若您非常喜爱该形象,希望其拥有实体,您可以自行定制。」

Related plugins