A fixed-corner DeepSeek balance whale widget for the DSH web GUI: three switchable skins (default / bowl-on-head / bowl-in-hand), balance with today usage, per-turn cost popups, peak/off-peak price conversion, press sound effects and random talk lines. Modified from MeteorNOX/DeepSeek-Balance-Whale-Widget.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:Witherwithwinter/DeepSeek-Balance-Whale-Widget-Bowl
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 fixed-corner balance widget for DeepSeek Harness (DSH) — the web GUI and the official desktop client (Electron). This repository integrates MeteorNOX/DeepSeek-Balance-Whale-Widget v0.3.18 in full — every duplicated feature follows the upstream implementation, including upstream's official-desktop support — and adds two things on top:
- Two built-in "iron-bowl" whale-girl skins: bowl-on-head (
bowl) and bowl-in-hand (hold), registered as built-in roles in the upstream role system. They appear in the menu's Role dropdown next to the default whale, cannot be deleted, can be pinned, and the pinned choice survives a restart. Existingroles.jsonfiles are back-filled with them automatically. - A steel-pipe sound set (
assets/P1.mp3/P2.mp3) as a third built-in preset group next to duck and sfx-1: press plays the impact + early ring-out, release plays the fade-out tail. It is also selectable as the task-end / question / approval sound.
Everything else — ledger accounting, customizable bubbles (click sequences, weighted A/B, modular rows), per-turn cost with real usage, balance alerts / daily budget, multi-vendor balance & quota (33 provider templates), custom characters, importable sound groups, task-end sounds, snap & flip settings, Codex local-session stats — works exactly like upstream v0.3.18. It ships as a standard DSH bundle plugin.
Install
Web (dsh web)
dsh plugin --profile web add dsh-whale-widget-bowl
Local development install, from the repository root:
dsh plugin --profile web add link:.
Restart DSH; the widget appears in the bottom-right corner.
Official desktop client (Electron)
The desktop client reads the desktop profile, not web — and dsh plugin refuses to touch it by design:
error: profile "desktop" is managed exclusively by the Electron application
So the correct way is to let DSH inside the desktop client install it: just ask it in a desktop session (e.g. "install dsh-whale-widget-bowl"). It calls the built-in plugin_manager, whose scope is the current profile (desktop), installs with the client's bundled pnpm, and writes the package into that profile's dsh.profile.bundles.
A new plugin usually hot-applies; upgrading to another version requires restarting the client. If the widget still does not show up after a fresh install (issue #162), restart the client first before debugging.
Verification (desktop): %USERPROFILE%\.dsh\.dshw-turn.json exists and its seq grows with each turn (host half); dshw-pos / dshw-last-seq appear in the desktop client's Local Storage leveldb (client half).
Note: the route prefix is the same as upstream (
/dsh-whale/), so this plugin and the upstreamdsh-whale-widgetmust not be enabled in the same profile at the same time — routes and ledger files would collide.
Upstream also ships a For-Codex branch (a Codex desktop port); this fork does not maintain it.
Skins
The menu's Role dropdown switches between three characters instantly; pin (📌) your choice to keep it across restarts.
| Default | Bowl on head | Bowl in hand |
|---|---|---|
assets/DSniang1.png |
assets/DSniang-bowl.png |
assets/DSniang-hold.png |
Both bowl skins are high-resolution cut-outs on a 1179×1179 square transparent canvas, subject-aligned to the default skin by face width. To replace one, overwrite the matching png and restart DSH.
Configuration
DEEPSEEK_API_KEY— used to read the account balance. Ledger mode needs no other token.- Other providers / optional tokens are configured in the widget's own menus, keys stored via the DSH credential service.
Settings live under the DSH home directory (.dshw-size.json, .dshw-usage.json, whale-roles/, whale-audio/, …).
Development
npm test # pure functions + fork invariants; no DSH runtime required
The self-check also asserts the fork invariants (built-in roles, steel-pipe sound set, the desktop webserver/index-inject row, and package-name / patch-id / version consistency), because this repository is maintained by re-applying its increments on top of each upstream release — that is exactly where an increment can silently disappear.
Zero-dependency static audits (the same ones CI runs):
node tools/ci-audit.mjs --no-pack
node tools/z-layer-audit.mjs assets/whale-widget.js
node tools/check-dead-settings.mjs
lib/index.jsis the host side (routes, ledger, sound/role services, desktop injection row);assets/whale-widget.jsis the browser side. Frontend changes take effect on a hard refresh; host changes need adsh webrestart.- The full specification and visual parameters are kept in
whale-widget-prompt.md(Chinese). - See CHANGELOG.md for the release history.
License
MIT — see LICENSE. Original work by MeteorNOX; this repository is a modified redistribution under the same license. Artwork under assets/ is not covered by MIT — see PROVENANCE.md.
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 8801
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 8801
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 4908
A fixed-corner whale widget for the DSH web GUI — balance, today's usage and per-turn cost with peak/off-peak pricing, editable balance-alert and daily-budget bubbles, a module-based custom bubble queue with A/B weighted choices and random lines or images, 30+ vendor templates (OpenAI, OpenRouter, Kimi, SiliconFlow, Ark, Zhipu, MiniMax and more) with per-model balance and subscription quota, plus task-end sound, imported audio, custom roles and a resource manager. Local-only, no telemetry.
ccch1mneyyy/dsh-TUI★ 4640
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
omdsh-dev/DSH-better-sidebar★ 4198
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
Devin-AXIS/deepseek-design#deepseek-idesign★ 1463
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.