Skip to main content

deepseek-harness-desktop/packages/dsh-pet

156Stars5Forks6Issues0Watchers

A whale girl pet placed in the bottom-right corner of the DSH Web interface. Its animations change based on conversation activity. Players can feed it after completing rounds to accumulate affection.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki

ⓘ This plugin is a sub-package of the ningbainb/deepseek-harness-desktop monorepo — stars and activity count the whole repository.

Language
TypeScript
License
BSD-3-Clause
Branch
main
ai-agentai-coding-assistantcodexdeepseekdeepseek-harnessdesktop-appdshdsh-plugin

Install

cmdweb profile
$ dsh plugin --profile web add @linxin666/dsh-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 ningbainb/deepseek-harness-desktop/packages/dsh-pet for me: review the repository at https://github.com/ningbainb/deepseek-harness-desktop 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

A whale girl companion in the bottom-right corner of the DSH Web interface: she swims while the model is thinking, you can feed her fish to grow her from "Baby Whale" all the way to "Deep Sea Bond".

Core Features

  • Follows session activity to automatically switch animations: she runs while the model thinks, moves right when using tools, enters review mode when organizing responses, jumps to celebrate on turn completion, freezes on failure
  • Intimacy automatically +1 per completed turn, 4 level progression: Baby Whale (0) → Companion (25) → Best Friend (50) → Deep Sea Bond (80, capped at 100)
  • Click the whale girl's head to pet, get a short response and +1 intimacy (10 second cooldown)
  • "Feed" floating panel consumes 1 fish for +5 intimacy (30 second cooldown)
  • Drag whale girl to any position, release auto-saves location
  • After renaming, the summon button automatically syncs to "Summon {new name}"
  • After hiding, an input area "Summon {name}" button appears for instant recall

Technical Implementation

  • Language: TypeScript (ESM, browser half + host half single bundle)
  • Key dependencies: @deepseek-ai/cordis (cordis plugin framework), @deepseek-ai/dsh-session (session event types), @deepseek-ai/dsh-host-webserver (HTTP route registration), react/react-dom (whale girl overlay rendering)
  • Architecture: Official cordis bundle format; dsh.bundle.patch inserts pet line in Web plugin manifest; host half registers service and exposes /api/pet/* JSON API + /pet/whale/* asset routes; browser half polls via fetch and renders global overlay via portal
  • Entry files: packages/dsh-pet/src/index.ts (host half entry); packages/dsh-pet/src/client/index.ts (browser half entry)

Use Cases

You want DSH to feel less cold and robotic, with a sense of companionship. Ideal for long work sessions where you're watching the model think (long generation, batch tasks, multiple session switches), where you can see current progress (animation/bubble) and pass the time feeding, building intimacy, and naming your pet.

Prerequisites & Compatibility

DependencyMin VersionNotes
DSH Version0.1.0-rc.7+Requires @deepseek-ai/* peer/dev dependencies from 0.1.0-rc.7 series
Node>=22.19.0Package engines.node specifies `^22.19.0
React^18.2.0peerDependencies declaration, already bundled with host
PlatformCross-platformHost half uses Node fs (pet.json atomic write), browser half runs on browser Web platform

Installation

dsh plugin --profile web add github:ningbainb/deepseek-harness-desktop/packages/dsh-pet

Configuration Options

ConfigTypeDescriptionDefault
Enable PetToggleWhen disabled, whale girl completely hides and stops polling; can be re-enabledOn
Show PetToggleWhen disabled, hidden; can recall via input area summon buttonOn
Size (px)NumberSprite unit height, range 32–512160
Right Offset (px)NumberHorizontal inset from viewport right edge24
Bottom Offset (px)NumberVertical inset from viewport bottom edge20
NameTextWhale girl display name, 1–20 characters鲸鱼娘

FAQ

Q: Will the whale girl appear on all interfaces?

A: Yes. The plugin mounts the overlay to document.body, appearing when opening new conversation windows or when there are no sessions, and won't disappear due to session switching.

Q: Does intimacy increase without clicking the pet?

A: Yes. Each completed turn grants +1 intimacy, with 4 levels: Baby Whale → Companion → Best Friend → Deep Sea Bond (capped at 100).

Q: Why doesn't clicking the pet do anything?

A: Repeated clicks within 10 seconds are rejected by cooldown; the pet displays "You've already pet her, let the whale girl rest~"

Q: What does feeding consume?

A: Each feeding consumes 1 fish for +5 intimacy; fish are earned 1 per 3 completed work turns, or 1 per 30 minutes idle, capped at 20.

Q: Where is data stored?

A: Written to $DSH_HOME/pet.json (default ~/.dsh/pet.json), with atomic writes; corrupted files fall back to defaults on next startup.

Q: Can't see the whale girl what should I do?

A: First, ensure "Enable Pet" and "Show Pet" toggles are on in the Settings page under the "Pet" card; second, in Expert Settings directly edit ~/.dsh/settings.yaml to add the pet namespace; finally, restart dsh web to reload the plugin.

Q: Will dragged position be saved?

A: Yes. Position is persisted through the settings channel upon release, remaining in place on next open.

Q: Can I change the name?

A: Click "Rename" in the floating panel to enter a new name of 1–20 characters; it syncs to the summon button text and persists to file.

Difficulty

Beginner — a single install command puts the whale girl in the bottom-right of the Web interface; advanced usage (renaming, layout settings, persistence editing) goes through the Settings page or editing ~/.dsh/pet.json, no coding required.

Known Issues & Limitations

  • Browser half polls host every 2 seconds for status; if the host process just started or disconnected, the whale girl briefly shows "Whale girl is lost (connection failed)", self-heals after next poll recovery
  • Host only exposes 5 API endpoints and 2 asset endpoints (spritesheet.webp + pet.json); custom animations require replacing assets/whale/spritesheet.webp and syncing updates to pet.json's frames field and src/client/spritesheet.ts's TRACKS frame durations
  • Legacy activity/status event is still listened to as a compatibility input, but duplicate old-style done within 5 seconds won't grant turn rewards twice (prevents old+new dual-path double-counting)
  • When settings namespace isn't in dsh-host-apiproxy's WEB_SETTINGS_NAMESPACES whitelist, the Settings page shows "Unexposed" hint; manually edit ~/.dsh/settings.yaml or ask ops to add pet to whitelist
  • Old resource experienced issue #48 (using session-scoped slot mount caused pet not to show on new conversation interface); current implementation switched to document.body global React root

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/ningbainb/deepseek-harness-desktop/packages/dsh-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