Preface¶
The philosophy of DSH is “everything is a plugin.” When an interactive character needs to be added to the DSH Web GUI, display, interaction, and material management can be converged into the plugin, rather than maintaining a separate set of static resources.
awesome-dsh-pet is designed for this scenario: it displays a desktop pet within the DSH Web GUI, positioned at the bottom right of the page, while also allowing for the continued addition of custom characters.
The community directory is an independent site with no official affiliation to DeepSeek or Fangfang; it should not be understood as an official app store.
What is this¶
awesome-dsh-pet is an extensible multi-character desktop pet plugin within the DSH Web GUI, maintained by Awesome-AI-Pedia, with an MIT license.
It addresses lightweight character display and interaction within DSH Web pages: displaying pets, feeding, playing, switching characters, and supporting custom character assets.
GitHub repository:
https://github.com/Awesome-AI-Pedia/Awesome-DSH-Pet
Core Features¶
- Display desktop pets within the DSH Web GUI, positioned at the bottom right of the page.
- Provides two characters:
jingyu-zongcai(Whale CEO) andlulu-capybara. - The menu allows feeding, playing, and switching characters.
- Supports configuring
enabled,size,opacity,walk.enabled, andsleepAfterMsvia theawesome-dsh-petsection insettings.yaml. - Supports quickly adding custom pets: place assets, modify manifest, run gates.
- Supports two asset formats:
Codex atlas 8×9 spritesheetand single-action sheet. - Requires 15 states:
idle / working / celebrate / error / disappointed / joy / eat / play / drag / walk / sleep / wake / welcome / think / wait.
Installation and Enablement¶
The plugin runs with the permissions of the current dsh process. You should check the source code, scripts, assets, and license before installation. The license is MIT.
Below is the command to install or update the plugin using a local path:
dsh plugin --profile web add /Users/icourt/Desktop/DSH-plugin/Awesome-DSH-Pet
After installation or update, restart web.
Basic Configuration¶
Use the awesome-dsh-pet section in settings.yaml:
awesome-dsh-pet:
enabled: true
size: 110
opacity: 1
walk:
enabled: true
sleepAfterMs: 60000
The configuration items include:
enabled: Whether to enable the plugin.size: Size.opacity: Opacity.walk.enabled: Whether to enable walking.sleepAfterMs: Sleep-related time parameters.
Adding Custom Characters¶
Taking the character id my-cat as an example, the overall process is: place assets, modify manifest, run gates.
-
Determine the character id
The character id only allows
[a-z0-9-]because it will be used as a URL path. The example usesmy-cat. -
Place assets
Place assets in the character directory, for example:
lib/assets/characters/my-cat/spritesheet.webp
The asset format supports two types:
- `Codex atlas 8×9 spritesheet`
- Single-action sheet
-
Modify manifest
Add the character key under
charactersinlib/assets/manifest.json, for example:
my-cat
If you wish for the new character to become the default character, change the top-level `default` from `jingyu-zongcai` to the new character id.
-
Run gates
First run the gates and tests:
node scripts/gates/verify-assets.mjs
node --test 'tests/*.test.mjs'
If the front-end source code has been modified, a rebuild is required:
node scripts/build-client.mjs
-
Restart
Restart
webafter installation or update.
Asset and State Constraints¶
Custom characters must provide all 15 states:
idle / working / celebrate / error / disappointed / joy / eat / play / drag / walk / sleep / wake / welcome / think / wait
None may be missing.
Common constraints are as follows:
sheetis relative tolib/assets/characters/<id>/, allowing.png / .webp / .svg / .jpg / .jpeg / .gif / .json.framesmust be a positive integer.- Multi-frame PNGs must satisfy width = frames × height.
atlasmust satisfy row < rows.playbackis optional:loop / pingpong / once / blink;pingpongandblinkrequire at least 2 frames, others require at least 1 frame.motionis optional:bob / wiggle / squash / shake / sigh / hop / tilt / float / wave, and requiresframes === 1;erroris the only exception, allowing multiple frames and superimposed motion.
Development and Maintenance¶
lib/client.js is the build artifact. After modifying lib/client/index.mjs, run:
node scripts/build-client.mjs
To regenerate the front-end artifact.
Applicable Scenarios and Notes¶
This plugin is suitable for developers who wish to add lightweight desktop pets, custom characters, or state assets to the DSH Web GUI.
Points to note when using:
- The plugin runs with the permissions of the current
dshprocess. - Check source code, scripts, assets, and license before installation.
- Custom assets must satisfy constraints such as 15 states, frame counts,
playback, andmotion. - License is
MIT.
GitHub repository:
https://github.com/Awesome-AI-Pedia/Awesome-DSH-Pet