dsh-pet
PC2005-cloud/dsh-petDSH Web UI 桌面宠物,Windows / macOS / Linux 三端可用:浏览器浮层或透明置顶桌面窗口,106 个透明动画、带挤压与粒子的甩抛反弹物理、随会话事件实时联动的工作状态气泡、碎碎念与带持久记忆的对话、余额展示、表情包配图、多开同屏,并支持直接放入的自定义动画与宠物种类(pet pack)。
右下角电子木鱼,默认是鲸鱼娘图包:敲头记功德,模型忙碌时自动敲;功德按会话存本机,可换自定义图源。
中文 | English
Harness is still preview. Capacity feels tight, the API sometimes crawls, and a loop can die mid-turn. Waiting those minutes gets under your skin — so here is a sulky little blue whale in the corner. Knock her once for a merit while you wait. Hope the compute farms catch up and the prices come down. When she is busy she knocks herself; AFK merit, goof off a little.
Wooden-fish overlay in the lower-right of the Web client. Knock the head for merit; while the model is thinking or streaming she knocks on her own. Merit stays in this browser — never the session log, never an extra request. Swap the art if you want.
| Manual | Auto |
|---|---|
Nk.prefers-reduced-motion skips the hop and the floating +1.Tune feel and packs in Settings → Wooden fish. Library to import/switch; Edit to align; remote URL for hosted packs.
Community skins: dsh-muyu-skins (import zip → Library → Use).
You need a working dsh web (DeepSeek Harness).
Requires dsh ≥ 0.1.0-rc.8 (recommend 0.1.1-rc.2). dsh-muyu 0.1.5+ needs @deepseek-ai/dsh-client-store in the host module table.
Upgrade in pairs — the market will not block a mismatched bump:
| Host | This plugin | Result |
|---|---|---|
new (has dsh-client-store) | ≥ 0.1.5 | OK |
| new | ≤ 0.1.4 | dsh-client-runtime/client missed the module table |
old (only dsh-client-runtime/client) | ≤ 0.1.4 | OK |
| old | ≥ 0.1.5 | dsh-client-store missed the module table |
| dsh ≥ 0.1.7 | ≤ 0.1.8 | Knocks, but records no merit and floats no +1 |
Do not bump only the fish to 0.1.5 on an old dsh — upgrade the host first, then the plugin; or pin dsh-muyu@0.1.4 until you can.
≤ 0.1.8 on dsh ≥ 0.1.7 records no merit and floats no +1. From 0.1.7 the open session is no longer current on the list; the main view holds that row (retainedBy.mainView). 0.1.9 reads that hold (older hosts still use current). Stored merit is left as it is.
Check the host first:
dsh --version
# if too old: npm i -g @deepseek-ai/dsh@latest
dsh plugin --profile web add dsh-muyu
dsh --profile web
Already installed: update from Plugin Market, or dsh plugin --profile web add dsh-muyu@latest, then restart Web. The published tarball already contains lib/, so allowBuilds is usually unnecessary.
dsh plugin --profile web add github:liuwenji007/dsh-muyu
dsh --profile web
pnpm ≥10 may block a git dependency's prepare. After the first failure, add the package key pnpm printed to that profile's pnpm-workspace.yaml:
allowBuilds:
dsh-muyu: true
Then add again. Prefer pinning a commit: github:liuwenji007/dsh-muyu#<sha>.
cd /abs/path/to/dsh-muyu
pnpm install
dsh plugin --profile web add link:/abs/path/to/dsh-muyu
dsh --profile web
dsh --profile web --dump-config lists this package. A page refresh is not enough — restart dsh web / dsh --profile web.dsh plugin --profile web remove dsh-muyu, then restart. Remove does not wipe browser merit or library packs; reinstall restores them. To erase everything, use Settings → Wooden fish → Data → Clear all wooden-fish data.| If | Then |
|---|---|
dsh-client-runtime/client or dsh-client-store missed the module table | Host/plugin mismatch: new host needs ≥ 0.1.5; on an old host upgrade dsh ≥ 0.1.0-rc.8 then the plugin (or pin dsh-muyu@0.1.4); Market update or add dsh-muyu@…, restart Web |
| Knocking records no merit and floats no +1 (dsh ≥ 0.1.7) | The plugin is ≤ 0.1.8. Upgrade to ≥ 0.1.9 and restart Web |
| two overlays | The Web bundle may already ship ui-muyu. In the profile cordis.patch.yml, set - id: ui-muyu / disabled: true |
git install hits allowBuilds | See “From GitHub” above |
| prefer a tarball | pnpm pack, then dsh plugin add ./dsh-muyu-0.1.0.tgz |
| Field | Default | Meaning |
|---|---|---|
| Show overlay | on | Off hides the sprite; the settings page stays |
| Plaque | censer | Censer or wooden board |
| First auto-knock after busy | 1000 ms | |
| Auto-knock interval | 1000 ms | |
| Big-bump combo | 5 | Release at or above this plays big bump, then recover (or small bump if that sprite is missing) |
| Art source | built-in | Built-in / workshop / library / URL |
| Library | (empty) | Imported zips / packs saved from the workshop; switch, rename, delete |
| Local workshop | (empty) | Folder or PNGs to align; export an aligned pack or save into the library |
| Pack URL | (empty) | Hosted directory or .zip URL; optional layout.json |
| Export aligned pack | — | Under the workshop; bakes pose crops and writes layout.json so others can import and use it |
Files in that folder or zip: idle.png, auto-hit.png, manual-hit.png, bump.png, bump-big.png, stick.png, board.png, censer.png, add.png. Optional bump-recover.png and layout.json. Aligned packs bake pose crops into the PNGs; layout.json mainly carries hotzone / stick / float / plaque placement. Changes apply immediately — no reinstall.
Settings → Wooden fish → Export template downloads the official filenames zip; after aligning, use Export aligned pack under the workbench to share. A zip URL needs CORS on the host.
The workshop and library are separate: importing a zip adds a library entry and does not wipe files you are editing.
Bump hold and auto-hit pose length stay matched to the default art — edit ART_TUNABLES in src/config.ts and pnpm run build. Stick hotspot and hotzone are tunable in the workbench / layout.json.
localStorage (dsh.muyu.merit), capped at the 100 most recently knocked sessions. Workshop drafts and library packs live in IndexedDB (dsh.muyu.art), separate from the URL field. Deleting a chat in the Host does not prune it. Private mode or quota failure only disables persistence on this page. After reinstall, if meaningful old data is found (merit knocked, prefs changed, or a non-empty library), you get a one-time prompt; choosing Keep using stores dsh.muyu.dataPrompt.src/client/assets/ and rebuild to ship a new default skin.pnpm install
pnpm test
pnpm run build
MIT