A Windows desktop pet for DeepSeek Harness — launch, stop and monitor the DSH service and summon the GUI with a whale.
Install
# from npm (prebuilt)
dsh plugin --profile web add @miku00039-01/dsh-whale-pet
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:miku00039-01/dsh-whale-pet
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
A Windows desktop pet that bundles DeepSeek Harness service management — start, stop, monitor — and GUI launching into a single zero-dependency .exe.

✨ Features
| Feature | Description |
|---|---|
| One-click launch | Double-click the exe: detect the DSH service → start it in the background if not running → open the GUI when ready → the whale appears |
| Character-shaped pet | Per-pixel transparent always-on-top window shaped exactly like the image; draggable, remembers its position |
| Double-click to summon | Double-click the whale to open the GUI (reuses the same PWA window, no tab stacking) |
| Right-click menu | Open / Close / Status / Exit |
| Close program | Stops the DSH service and closes the GUI app window (matched by window title — does not touch your other browser windows) |
| Exit | Confirmation dialog, then exits together with the service |
| Tray icon | Left-click to summon, right-click for the menu (fallback entry) |
| Status monitor | Only green/red states (no yellow intermediate); adaptive interval — 5s online / 2s offline |
| Status card | Floating card with service state/address/PID/uptime + pet memory/GDI handles (leak self-check) |
| Single instance | Second launch just summons the existing instance |
| Crash log | Unhandled exceptions are written to dsh-whale-pet-crash.log |
📦 Dependencies
| Dependency | Required? | Notes |
|---|---|---|
| Windows 10 / 11 | ✅ Yes | Uses WinForms / layered windows / netstat |
| .NET Framework 4.x | ✅ Yes | Preinstalled on Windows — nothing to install; the exe is compiled by the built-in csc.exe targeting 4.x |
| DeepSeek Harness | ✅ Yes | Must be properly installed: ① Node.js ② dsh CLI installed globally (npm i -g @deepseek-ai/dsh) ③ API credentials configured (DEEPSEEK_API_KEY in ~/.dsh/.credentials.yaml). The pet starts the service via node <dsh lib/bin.js> web, listening on 127.0.0.1:3080 |
| Chrome | ⚪ Optional | Used for the PWA standalone-window mode (via the DeepSeek Harness.lnk shortcut generated by the DSH GUI). Falls back to the default browser when absent |
In short: a working DeepSeek Harness install is all you need; Chrome only improves the window experience.
🚀 Quick Start
Option A: install as a DSH plugin (recommended)
dsh plugin --profile web add github:miku00039-01/dsh-whale-pet
Then type /whalepet in DSH to launch the whale pet.
Option B: download the exe directly
- Download
DSH桌宠.exefrom Releases (or build it — see below) - Double-click to run — the whale appears at the bottom-right of your screen
- First run generates
dsh-whale-pet.confnext to the exe (auto-detected paths); edit it if needed
⚙️ Configuration (dsh-whale-pet.conf, INI format)
| Key | Default | Description |
|---|---|---|
workspace |
(exe directory) | DSH workspace root (which workspace your sessions attach to) |
nodePath |
auto-detect | Path to node.exe |
dshBin |
auto-detect | Path to @deepseek-ai/dsh/lib/bin.js |
pwaShortcut |
auto-search | Path to the Chrome PWA shortcut; empty + not found → falls back to the browser |
pwaWindowTitle |
DeepSeek Harness |
GUI window title prefix (used to close exactly that window) |
port |
3080 |
DSH service port |
lastX / lastY |
-1 | Last whale position (auto-recorded) |
🖥️ Open behavior & switches
- How the pet opens the GUI: prefers a Chrome PWA standalone window (via the shortcut in
pwaShortcut); falls back to a default-browser tab when the shortcut is missing. - Service start switch: the pet starts the service with
dsh web --no-open— newer dsh (0.1.1+) auto-opens the browser by default, and--no-openlets the pet control window opening so you don't get "a web page first, then the app window". - Want a different behavior?
- Point
pwaShortcutat another PWA shortcut, or leave it empty to always open in the default browser. - Running
dsh webmanually (without--no-open) will auto-open the browser — that is dsh's own behavior, unrelated to the pet.
- Point
All keys left empty = auto-detection. Restart the pet after editing. See dsh-whale-pet.conf.example.
🔨 Building from Source
# Requires: Windows 10/11 (ships csc.exe and .NET Framework), PowerShell 7 or 5.1
pwsh -File build.ps1
The script: ① generates the multi-size assets/pet.ico from assets/whale.png; ② compiles src/DSHPet.cs → DSH桌宠.exe using the built-in csc.exe (zero third-party dependencies).
📁 Project Layout
dsh-whale-pet/
├── src/DSHPet.cs # All source (single file, WinForms + P/Invoke)
├── assets/whale.png # Pet artwork (see attribution)
├── assets/pet.ico # exe icon (generated by build)
├── assets/WHALE_ATTRIBUTION.md# Artwork attribution & license
├── build.ps1 # One-click build script
├── .github/workflows/ci.yml # CI: build on push, release on tag
├── dsh-whale-pet.conf.example # Sample config
├── CHANGELOG.md # Version history
└── README.md
🚀 Publishing a Release
Push a version tag — CI builds on Windows and attaches the exe to a GitHub Release automatically:
git tag v1.0.0
git push origin v1.0.0
🖼️ Artwork Attribution
The whale artwork source and license are documented in assets/WHALE_ATTRIBUTION.md. Please make sure it meets the license terms before distributing.
📄 License
Code: MIT — see LICENSE. Artwork: see the attribution note above.
Links
More in this category
PC2005-cloud/dsh-pet#dsh-pet★ 960
Desktop pet for the DSH Web UI with 25 transparent animations, screen wandering, click reactions and drag, plus a reproducible asset-generation pipeline.
Nagi-ovo/dsh-ads★ 643
Parody ads in 2005-Chinese-web style: sidebar banners, in-chat feeds, corner popups, and a close button whose hit area is smaller than it looks. All fictional.
vlln/whale-girl★ 339
Desktop pet (QQ-pet style): floats in the corner, draggable, feedable, playable.
a86582751/dsh-nexttavern★ 128
Roleplay workspace for DeepSeek Harness: import SillyTavern/TauriTavern character cards or author one from scratch through an interactive flow; turn a long TXT novel into a playable card with either an intensive or a coarse reading pass; the main agent consults worldbooks on demand, and prose is read in a dedicated tavern reader tab; explore multiple worldlines inside one conversation (regenerate, edit-and-send, explicit clone); scoped style presets with 16 built-in styles, a character agent cluster, a standalone decision card, and card or novel export; long stories hold together through a frozen settings prefix, a hard-cut context window, traceable director notes and keyword/semantic/hybrid recall, with embeddings either online or fully local. Targets Harness 0.1.2-alpha.3 and applies its documented compatibility patches.
yyh-001/dsh-meme★ 120
Chat meme stickers: text-only send, mood auto-send, QQ/WeChat-style picker, auto-learn, custom packs.
Sutera-Diffusus/dsh-whale-musume★ 106
A whale-girl desktop pet for the DeepSeek Harness Web UI: pat-to-raise growth, work-state poses per tool type, 494 dialogue lines, 30 achievements, a growth diary, drag physics, theme sync and an accessibility mode. Chat-keyword sensing and API-balance care ship off and are opt-in; an optional weather mood calls Open-Meteo only after you name a city. No telemetry.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.