liuwenji007/dsh-muyu

liuwenji007/dsh-muyu

右下角电子木鱼,默认是鲸鱼娘图包:敲头记功德,模型忙碌时自动敲;功德按会话存本机,可换自定义图源。

娱乐deepseek-harnessdshdsh-plugin-market

dsh-muyu

中文 | 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.

ManualAuto
tapauto-tap

Play

  • Click the head: +1 merit. Enough knocks in a row and she bumps.
  • Use the lock chip to unlock, drag, then lock again; while unlocked, scroll or use −/+ to scale. Settings can hide the chip.
  • While the current session is busy: auto-knocks also score (about 1 merit per second by default).
  • Switch session: the plaque shows that session's count (0 if unseen); pose resets.
  • Plaque is censer or board (default censer). Exact digits through 9999, then 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).

Install

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:

HostThis pluginResult
new (has dsh-client-store)≥ 0.1.5OK
new≤ 0.1.4dsh-client-runtime/client missed the module table
old (only dsh-client-runtime/client)≤ 0.1.4OK
old≥ 0.1.5dsh-client-store missed the module table
dsh ≥ 0.1.7≤ 0.1.8Knocks, 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.

From GitHub

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

Verify and remove

  • Working: the fish is in the corner, or dsh --profile web --dump-config lists this package. A page refresh is not enough — restart dsh web / dsh --profile web.
  • Remove: 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.

Troubleshooting

IfThen
dsh-client-runtime/client or dsh-client-store missed the module tableHost/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 overlaysThe Web bundle may already ship ui-muyu. In the profile cordis.patch.yml, set - id: ui-muyu / disabled: true
git install hits allowBuildsSee “From GitHub” above
prefer a tarballpnpm pack, then dsh plugin add ./dsh-muyu-0.1.0.tgz

Settings

FieldDefaultMeaning
Show overlayonOff hides the sprite; the settings page stays
PlaquecenserCenser or wooden board
First auto-knock after busy1000 ms
Auto-knock interval1000 ms
Big-bump combo5Release at or above this plays big bump, then recover (or small bump if that sprite is missing)
Art sourcebuilt-inBuilt-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.

Notes

  • Merit lives in this browser's 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.
  • No dragging, so it does not cover the side panel.
  • You can also replace files under src/client/assets/ and rebuild to ship a new default skin.

This repo

pnpm install
pnpm test
pnpm run build

MIT