CAPTAIN1275/dsh-ui-web--packages-dsh-pet23

@captain1275/dsh-pet

鲸鱼娘宠物插件 for the dsh web GUI: a soft healing whale-girl companion that reacts to model activity (idle/waiting/thinking/tool/done), with petting/feeding interactions and an affinity score

AI Analysis

核心用途是提供趣味交互与状态反馈。适合在等待模型思考或执行任务时,希望有看板娘进行趣味互动和状态提示的用户。

Package
@captain1275/dsh-pet
Version
0.2.7
License
Apache-2.0
Last updated
Aug 16, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:CAPTAIN1275/dsh-ui-web#4a275b080cb6ff1a1a7a91a77e08aad6ad1eab56&path:packages/dsh-pet

dsh-pet — 鲸鱼娘宠物插件

version license platform language

一只软萌治愈的鲸鱼娘,陪你在 DeepSeek Harness 里工作。

模型思考的时候你在等,她在游。她会跟着模型的工作状态切换动画——干活、等待、思考、庆祝完成;你还可以摸头、喂小鱼干,看着她从幼鲸慢慢长成你的深海羁绊。

复刻自 Codex 桌面版的宠物功能,以 DSH 官方插件形态实现(cordis bundle:host 半区 + client 半区单包)。

功能

功能说明
状态动画模型状态 → 鲸鱼娘动画:thinking/tool → 工作waiting → 等待done → 跳跃庆祝、空闲 idle 呼吸待机
摸头互动点击鲸鱼娘 → 气泡反馈 + 亲密度 +1(10s 冷却)
喂食悬浮面板「喂食」→ 消耗 1 条小鱼干 + 亲密度 +5(30s 冷却)
饲料经济小鱼干库存(上限 20):工作每 3 回合 +1 条、每 30 分钟 +1 条;库存不足会提示「多陪鲸鱼娘工作一会儿」
亲密度每完成一个回合 +1;4 个等级:幼鲸 → 伙伴 → 挚友 → 深海羁绊(100 点封顶)
自定义命名悬浮面板「改名」→ 1–20 字符,持久化,召唤按钮/面板同步显示
拖动按住鲸鱼娘拖动重新摆放,位置持久化
隐藏/召唤悬浮面板「隐藏」;隐藏后输入选择行出现「召唤{名字}」按钮
状态气泡工作时显示模型当前状态短语

动画演示

素材为 8 列 × 9 行图集(192×208 单元),由 hatch-pet 流水线生成,以下为各状态动画预览:

idle 待机waiting 等待running 干活jumping 庆祝
idlewaitingrunningjumping
waving 挥手review 复盘failed 失败左右移动
wavingreviewfailedrunning-left running-right

架构

dsh-pet/
|-- src/
|   |-- index.ts        # host 半区:插件入口(cordis apply,注册路由)
|   |-- service.ts      # PetService:宠物状态机 + 亲密度 + 配置(HTTP API 服务面)
|   |-- state.ts        # 宠物状态机:activity/status phase → 9 状态动画
|   |-- affinity.ts     # 亲密度账本(纯函数 + 冷却)
|   |-- treats.ts       # 小鱼干库存账本
|   |-- persist.ts      # 持久化($DSH_HOME/pet.json,原子写入)
|   |-- routes.ts       # /api/pet/* JSON API + /pet/whale/* 素材静态路由
|   `-- client/         # 浏览器半区
|       |-- index.ts    # 全局挂载(createRoot → body)+ 轮询(800ms)+ 交互接线(fetch)
|       |-- PetDockEntry.tsx  # 全局浮层入口(document.body,无会话/新会话/会话中全程显示)
|       |-- WhalePet.tsx      # 浮层组件(portal + rAF 帧动画 + 拖动)
|       |-- spritesheet.ts    # 图集几何 + 每状态动画轨道(帧/时长)
|       `-- pet.module.css
|-- assets/whale/       # 鲸鱼娘素材(pet.json + spritesheet.webp + 动画预览)
`-- cordis.patch.yml    # bundle patch:插入 pet 插件行

数据流

activity/status session 事件(原 working-activity 插件发布) --> PetService(host)
                                                              | /api/pet/* JSON
global React root(createRoot → document.body) `。

## 素材与动画轨道校准

鲸鱼娘图集由 hatch-pet 流水线按 9 状态 × 8 列生成:`assets/whale/spritesheet.webp`(1536×1872,8 列 × 9 行 192×208 单元)+ `assets/whale/pet.json`。每行实际帧数与节奏在 `src/client/spritesheet.ts` 的 `TRACKS` 中定义。若素材重做导致帧数变化,只需更新该表(行序契约:0 idle / 1 running-right / 2 running-left / 3 waving / 4 jumping / 5 failed / 6 waiting / 7 running / 8 review)。

## License

[BSD-3-Clause](https://github.com/CAPTAIN1275/dsh-ui-web/blob/4a275b080cb6ff1a1a7a91a77e08aad6ad1eab56/packages/dsh-pet/LICENSE)