Skip to main content

dsh-whale-pet

7Stars0Forks0Issues0Watchers

Place a blue-haired whale girl desktop pet on the DSH desktop. It switches expressions and voice based on conversation state, and includes a balance badge and recharge option in the conversation header.

Evidence4/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki
Language
HTML
License
NOASSERTION
Branch
master
deepseekdeepseek-harnessdsh-plugindsh-plugin-desktopdsh-plugins

Install

cmdweb profile
$ dsh plugin --profile web add dsh-whale-pet

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin aceice01/dsh-whale-pet for me: review the repository at https://github.com/aceice01/dsh-whale-pet first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

One-Line Description

Place a blue-haired whale girl (fan-made desktop companion) on the edge of DSH desktop/web, automatically switching expressions, animations, and voice based on session state, while also displaying DeepSeek account balance and one-click recharge entry at the session header.

Core Features

  • Display the whale girl companion on DSH desktop (Electron transparent always-on-top window) and Web (bottom-right floating iframe), switching between idle/running/happy/coquetry/sad states following DSH session events (turn/start, turn/end, tool/call, todo/write, goal/change, approval/*, command/*)
  • Play jump + confetti + arpeggio + voice celebration on task completion; play "error comfort" voice on tool call failure; show bubble notification when waiting for approval
  • Poke (65% coquettry / 20% bouncing / 15% grievance random), long-press hat for 0.7s to trigger head pat, double-click hat to mute, right-click menu, Esc to close menu
  • Persist balance badge in Web session header, auto-refresh every minute, click to refresh immediately, with "Recharge" link next to it pointing to DeepSeek Open Platform recharge page
  • Balance goes through server-side /api/balance reverse proxying official interface (https://api.deepseek.com/user/balance), server caches for 30 seconds, browser will NOT get API Key
  • Network failure preserves last balance and marks it as stale to avoid UI flickering; main volume + separate voice/effects/celebration volume persisted via localStorage

Technical Implementation

  • Language: JavaScript (ESM) + minimal Python (build/composition tools)
  • Key Dependencies: @deepseek-ai/dsh-credentials (credentialRef), React (injected via window.__ModuleLoader__ in browser), node:fs (reading pet.html), @deepseek-ai/dsh-client-runtime (manifest declared injection)
  • Architecture: Cordis dual-end plugin, server-side plugin/dsh-balance-widget/lib/index.js listens to firehose via ctx.on("session/event"), registers three routes /api/balance / /api/status / /pet.html via ctx.webServer.register; client-side lib/client.js loads React component via window.__ModuleLoader__.load and injects balance badge into conversation.session.header.actions via ctx.slots.inject, injects Web companion into shell.overlay; companion body is a 1.5 MB single-file pet.html (animated webp + 49 pre-composed mp3 all base64 inlined)
  • Entry Files: plugin/dsh-balance-widget/lib/index.js (server-side) + plugin/dsh-balance-widget/lib/client.js (browser-side) + plugin/dsh-balance-widget/lib/pet.html (companion page)

Use Cases

Users who want a cute companion that interacts with tasks while using DSH, and also want to glance at DeepSeek account balance and one-click recharge in the session. The companion cheers on task completion, comforts on errors, and reminds when waiting for approval, making the wait between dialogues less dull. This project is a non-commercial fan work, please do not use for commercial purposes.

Prerequisites and Compatibility

DependencyMinimum VersionNotes
DSHNot specifiedNo dsh version constraint in package.json, auto-mounted to web profile via dsh.bundle.patch
Node.js>=22Declared in package.json engines.node field
Desktop PlatformWindowsREADME explicitly states dsh-desktop only verified on Windows, main process patch scripts apply-main-patch.ps1 / install.ps1 are also PowerShell
Web PlatformCross-platformBrowser version works as long as dsh web service can run, no OS restrictions
Native ModulesNone—

Installation

dsh plugin --profile web add dsh-whale-pet

Configuration

No additional configuration required. All adjustable parameters (main volume, mute state, separate voice/effects/celebration volumes) are adjusted via sliders in the companion's right-click menu at runtime, with state saved in browser localStorage. No external files, environment variables, or DSH configuration items involved.

FAQ

Q: Companion doesn't appear after installation?

A: Confirm all install.ps1 steps output [OK], then restart DSH desktop app or dsh web service (companion window is only created when plugin loads); also check if profile's cordis.patch.yml contains balance-widget line (official dsh plugin add one-click install writes this automatically).

Q: Balance badge shows "Balance Unavailable" or keeps spinning?

A: Need to configure DEEPSEEK_API_KEY locally. Server reads it via @deepseek-ai/dsh-credentials and proxies official interface, browser will NOT receive API Key. Click badge to force refresh; on network failure, badge preserves last balance and marks it stale, no flickering.

Q: Companion has no sound?

A: Browser autoplay policy requires clicking the companion once first (hat hotspot) to unlock AudioContext; right-click hat to open menu with master volume slider and separate voice/effects/celebration volumes, confirm they are non-zero. Web version also needs to confirm ad blocker isn't blocking the companion iframe.

Q: Companion stays on screen after closing DSH Desktop main window?

A: This is known behavior of DSH original main.js. Optional to run apply-main-patch.ps1 to patch main process (automatically backs up original file, can restore with -Revert if needed), which closes companion with main window. If desktop is installed at C:\Program Files, run as administrator.

Q: Is this an officially licensed project? Can it be used commercially?

A: No. This is a non-official fan project, not affiliated with or endorsed by DeepSeek official, using "Non-Commercial Use License" (commercial use prohibited). Character materials copyright belongs to original author (see README acknowledgments).

Q: Web version companion doesn't display?

A: Confirm visiting restarted dsh web service, not old connection lingering in browser; force refresh browser (Ctrl+F5); also check if ad blocker is blocking /pet.html iframe.

Q: How to uninstall?

A: Simply run install.ps1 -Uninstall, script automatically restores cordis.patch.yml and profile config; if manually installed, can also delete balance-widget line from cordis.patch.yml, then restart dsh web.

Difficulty

Beginner — install with one command; all adjustable parameters are in companion's right-click menu, no config file changes needed.

Known Issues and Limitations

  • Closing DSH Desktop main window doesn't close companion window synchronously, need to manually run apply-main-patch.ps1 to patch main.js (CHANGELOG.md:14)
  • Browser (Web version) autoplay policy requires user to click companion once first before playing sound (pet.html:531-549)
  • Only registered in DSH Web client (dsh-client-runtime + client.platform = "web"), pure CLI/IDE形态 DSH client won't mount companion
  • pet.html is 1.5 MB build artifact (animation + audio base64 inlined), takes several seconds to load first time; right-click menu "Refresh" item carries ?timestamp to force reload
  • Long-press head pat may be overwritten by poke if click event fires at moment of mouse release, longPressFired flag added in pet.html to skip; moving more than 5 px also cancels long press (pet.html:968-1000)
  • Occasional exists and is not a symlink error during pnpm install, fix-fallback-layer.ps1 provided to move out fallback layer (CHANGELOG.md:27-30)
  • Desktop install.ps1 / apply-main-patch.ps1 are PowerShell scripts, Windows only; macOS / Linux desktop users need to manually edit cordis.patch.yml to add balance-widget line

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/aceice01/dsh-whale-pet)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory