dsh-pet
PC2005-cloud/dsh-petDSH Web UI 桌面宠物,Windows / macOS / Linux 三端可用:浏览器浮层或透明置顶桌面窗口,106 个透明动画、带挤压与粒子的甩抛反弹物理、随会话事件实时联动的工作状态气泡、碎碎念与带持久记忆的对话、余额展示、表情包配图、多开同屏,并支持直接放入的自定义动画与宠物种类(pet pack)。
A little tabby cat that wanders around the DeepSeek Harness web UI — walking along the top edges of text and components, hopping onto ledges, sniffing, sprinting, tumbling off cliffs, getting hurt and recovering, taking long naps, and letting you pet it.
localStorage["dsh-cat-skin"])prefers-reduced-motionPublished on npm: dsh-client-ui-cat. One command installs and activates it — the package declares dsh.bundle, so dsh plugin registers the loader entry for you:
dsh plugin --profile web add dsh-client-ui-cat
Restart the harness and refresh the page — the cat appears at the bottom of the page and starts exploring.
Copy the cat-plugin/ folder into your profile's web/node_modules as dsh-client-ui-cat, then add a loader entry to the profile's cordis.patch.yml (create the file if missing):
- insert:
- id: ui-cat
name: 'dsh-client-ui-cat'
| Action | Effect |
|---|---|
| Left-click | Pet the cat (hearts + purring); also heals it after a fall |
| Drag | Pick the cat up, then release to drop it |
| Right-click | Cycle to the next skin (橘猫 / 白猫 / 奶牛猫 / 黑猫 / 灰猫 / 暹罗猫) |
| Click a poop | Remove it (otherwise it stays until the page reloads) |
| Right-click a poop | Clear every poop on the page |
The browser bundle (lib/client.js) is assembled from three sources by surgery.cjs:
svg.css → cat animations & styles (inlined as CAT_CSS)
markup.txt → the root innerHTML template
skins.txt → generated skin data + renderSkin()
Workflow:
# 1. Edit skin SVGs in assets/cats/, then regenerate skins.txt
node gen-skins.cjs
# 2. Edit svg.css / markup.txt, then splice everything into lib/client.js
node surgery.cjs
Note:
surgery.cjssplices intolib/client.jsin place — running it on a bundle that already contains the skins block will duplicate it. Keep the three source files andclient.jsin sync, or re-splice from a pristine copy.
The package is pure-source (no build step): lib/client.js is a ready-to-serve ES module with the CSS inlined, so any distribution channel works:
# publish to npm (files whitelist: lib/, cat.svg, READMEs)
npm publish
# or hand out a tarball
npm pack # → dsh-client-ui-cat-0.1.0.tgz
dsh plugin --profile web add ./dsh-client-ui-cat-0.1.0.tgz
# or install straight from git (no build required for this package)
dsh plugin --profile web add github:you/dsh-client-ui-cat
npm pack runs prepack → npm run check (syntax-checks both lib files) before building the tarball.
cat-plugin/
├── lib/
│ ├── index.js # host half (no-op)
│ └── client.js # browser half — the whole cat runtime
├── assets/cats/ # 6 walking-cat skins + silhouette
├── svg.css # cat styles & keyframe animations
├── markup.txt # innerHTML template fragment
├── skins.txt # generated skin data (gen-skins.cjs output)
├── gen-skins.cjs # skin generator
├── surgery.cjs # bundle assembler
├── cordis.patch.yml # profile loader patch sample
└── package.json
cat.svg # default walking-cat skin (cat-orange.svg, preview image)
cat-preview.html # standalone preview page (loads lib/client.js)
MIT