Skip to main content

dsh-live2d-pets

10Stars1Forks0Issues0Watchers

Adds a Live2D desktop pet to DSH Web GUI: mirrors agent's thinking, idle, error, and completed states; supports touch-responsive body parts, mouse following, and multiple character dialogue sets.

Evidence4/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki
Language
TypeScript
Branch
main
cubismdeepseek-harnessdesktop-petdshdsh-pluginlive2dmascotplugin

Install

cmdweb profile
$ dsh plugin --profile web add dsh-live2d-pets

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 cyanfish-x/dsh-live2d-pets for me: review the repository at https://github.com/cyanfish-x/dsh-live2d-pets 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 Pitch

Add a Live2D desktop pet to DeepSeek Harness Web GUI that mirrors the agent's thinking/idle/error/completed state in real-time and supports head/body petting interactions, making the wait time for agent execution more engaging.

Core Features

  • State Mirroring: When the agent is thinking/idle/error/completed/waiting for approval, the pet automatically switches animations and speech bubbles (thinking and waiting for approval show long-state bubbles with text that progresses through stages over time)
  • Part-Based Touch Interaction: Petting head/legs/hands/body each has exclusive dialogue and animations; when model hit zones are insufficient, falls back to five-rectangle spatial fallback
  • Mouse Following: Pet's head, eyes, and body smoothly look toward the mouse; resets when mouse leaves the page; pauses following during drag and actions
  • Free Dragging: Grab the pet and drag to any position; releases to dock; position is persisted
  • Built-in Persona System: Six anime personalities (tsundere/energetic/airhead/kuudere/gentle healer/yandere) covering all dialogue; supports JSONC file custom personas (includes commented maid Easter egg)
  • Custom Models: Fill in any .model3.json HTTP(S) URL or local absolute path; plugin host loads via same-origin routing; no need to bundle model files into npm package

Technical Implementation

  • Language: TypeScript (Node.js host + React 18 browser half)
  • Key Dependencies: @deepseek-ai/schemastery (config schema), @deepseek-ai/cordis (plugin fiber), @deepseek-ai/dsh-settings (config namespace), @deepseek-ai/dsh-host-webserver (same-origin HTTP routing)
  • Architecture Pattern: Host half subscribes to agent events + registers settings namespace + registers same-origin routes; client half receives state pushes via SSE (/api/live2d-pet/events), renders via shell.overlay Popover top layer (pixi-live2d-display 0.4.0 + PixiJS 6.5.10 + Cubism Core 4)
  • Entry Files: src/index.ts (Host entry, registers services & routes), src/client/index.ts (Browser entry, mounts Layer + settings page)

Use Cases

DSH power users running long tasks want to see a small character in the corner that real-time reflects "still thinking / finished" and conveniently pet the head/legs; potential users who want to add "mascot" vibes to DSH videos/lives/tutorials with anime characters. License is commercially safe: default model Hiyori is a Live2D official sample model, free for commercial use.

Prerequisites & Compatibility

DependencyMin VersionDescription
Node.js^22.19.0
@deepseek-ai/cordis^4.0.1Plugin fiber, see package.json#peerDependencies
@deepseek-ai/dsh-client-runtime^0.1.0-rc.6Client runtime
@deepseek-ai/dsh-host-webserver^0.1.0-rc.6Host same-origin HTTP routing
@deepseek-ai/dsh-client-ui-slots^0.1.0-rc.6Used to mount shell.overlay and settings.section
@deepseek-ai/dsh-settings^0.1.0-rc.6Settings namespace registration
PlatformmacOS / Windows / LinuxHost-side Node cross-platform; browser-side depends on host's running Web GUI
Native ModulesNonePure Node fs + browser WebGL

Installation

dsh plugin --profile web add dsh-live2d-pets

Configuration Options

ConfigTypeDescriptionDefault
enabledBooleanMaster switch for pet; completely disables rendering when off (zero overhead)true
sizeNumberPet size in pixels (slider 40–400)160
maxFpsNumberRender frame rate limit, three-level radio selection30
modelStringSelected model: built-in ID or custom model ID (also directly accepts URL)hiyori
personaStringSelected persona: built-in (tsundere/energetic/airhead/kuudere/gentle healer/yandere) or custom persona IDtsundere
developerModeBooleanDeveloper options master switch; shows debug panel entry and click partition color blocks when enabledfalse
debugBooleanDebug panel: real-time state/animation/FPS/demo state switchingfalse
showTapZonesBooleanOverlay spatial fallback color blocks on model (shares same threshold with click partition)false

FAQ

Q: Pet not visible on first launch?

A: Default model Hiyori loads from jsDelivr CDN, requires internet; if loading fails, pet shows static avatar placeholder. Go to "Desktop Pet Config" to switch to built-in Haru/Mao/Mark/Natori or use a custom model.

Q: How to customize persona dialogue?

A: Open Settings → Desktop Pet Config → Persona section click "Custom Persona ↗" to edit $DSH_HOME/live2d-pet/personas.jsonc. After saving, click "↻ Reload" in settings page to take effect immediately, no restart needed. File will automatically drop a template on first launch (includes commented maid Easter egg).

Q: How to add my own Live2D model?

A: Settings → Desktop Pet Config → My Models: fill in name + .model3.json HTTP(S) URL, or fill in local absolute path (e.g., C:/models/foo/foo.model3.json). Plugin host will load via same-origin virtual route /pet-local-models/<id>/....

Q: Will pet slow down the page?

A: Automatically pauses rendering when tab is hidden or window loses focus; render frame rate defaults to 30fps, can be changed to 60 or unlimited in settings panel; falls back to static avatar when WebGL is unavailable or fails to load, doesn't affect other GUI functions.

Q: Will dragged position be saved?

A: Yes. After dragging pet to any position and releasing, the docked position is persisted to $DSH_HOME/live2d-pet.json and will be at the same position on next launch.

Q: Only supports Web GUI?

A: Yes. The plugin's dsh.client.platform=web + inject=slots restriction means it only works in DSH Web GUI; not applicable to headless/CLI mode.

Q: How to uninstall?

A: Run dsh plugin --profile web remove dsh-live2d-pets in terminal; after uninstall, you can manually clean up personalized files under $DSH_HOME/live2d-pet/ and $DSH_HOME/live2d-pet.json.

Q: What are the license risks for third-party models in this plugin?

A: Plugin default Hiyori is a Live2D official sample model, free for commercial use with copyright attribution required; custom models are user-provided, please comply with model author's license. Non-commercial models will be labeled as "non-commercial only".

Getting Started Difficulty

Beginner — Install and default pet appears in bottom-right corner; mouse hover enables gaze following; dig deeper into click partitions, animation mapping, JSONC persona file editing when needed; refer to docs/ then; regular users can use with zero configuration.

Known Issues & Limitations

  • Only supports Web GUI (dsh.client.platform=web, inject=slots), not available for headless/CLI
  • v0.1 does not include sound effects (resource and license cost, v0.2 to reconsider, see docs/spec/live2d-pet-v01.md:78)
  • v0.1 explicitly does NOT include: persona mixing/random switching, in-settings text editor, file watching hot reload (custom personas need to click "↻ Reload" after editing), configurable dock corner (fixed bottom-right), position reset button, hide shortcut key
  • Custom model loading failure falls back to static avatar + error bubble, other GUI functions unaffected
  • Default model Hiyori requires network on first load (jsDelivr CDN); prepare local model or pre-configured custom model in offline environment
  • Custom models only store name + URL; customModels field in old Cordis.patch.yml is deprecated, changed to $DSH_HOME/live2d-pet/custom-models.jsonc; old field is migrated to new file once on first launch then cleared
  • Custom persona files are read-only after plugin drops template on first launch — comments are preserved; after user edits directly, click "↻ Reload" or refresh page to take effect

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/cyanfish-x/dsh-live2d-pets)

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