Preface¶
In the “everything is a plugin” scenario of DSH, the Web GUI can extend the interface through client-side plugins. For developers observing agent sessions with DSH, a common need is to extract the current session state from text prompts to quickly see whether it is running, waiting for input, encountering an error, completed, or idle.
@minybear/dsh-pet is a DSH client plugin maintained by minybear, licensed under MIT. It floats an animated pet in the DSH Web GUI, driven in real-time by the current session’s agent running state, and provides lightweight interactions like feeding, playing, and settings.
Plugin Positioning¶
In one sentence: A Codex-style “desktop pet” DSH client plugin that floats an animated pet in the DSH Web GUI, driven in real-time by the current session’s agent running state.
The problem it solves: Maps the current session state to pet animations and adds settings for position, appearance, values, and custom pet pack imports, making it convenient to perceive the agent’s current state without frequently checking the status bar or logs.
Core Features¶
Floating Pet¶
The pet is registered in DSH’s shell.overlay slot, belonging to the frame-level floating layer, click-through enabled, permanently resident in the bottom-right corner by default, and can be dragged to reposition.
State-Driven¶
The plugin reads the current session state and maps it to Codex’s 9-state animation rows.
Session signals decay based on lifespan:
Running: 3 minutesFailed: 1 hourWaiting: 24 hoursReview: 7 days
After timeout, it reverts to idle.
Reduced Motion¶
The plugin follows the system’s prefers-reduced-motion and can also be manually locked to “full / reduced motion” in settings.
When reduced motion is enabled, it displays the first frame of idle in a fixed manner, following Codex behavior.
Click Menu¶
Clicking the pet pops up a menu, with the following available operations:
- Feed (
eat) - Play (
play) - Settings
Drag to Move¶
Dragging can move the pet’s position.
While dragging, it plays running-left/right walking animations based on direction; when stationary, it enters the drag pose. The position is persisted to localStorage.
Nurturing Values¶
The built-in satiety / mood values range from 0 to 100 and decay with wall-clock time; they continue timing even when the browser is closed, taking about 8 hours / 6 hours to bottom out.
Value change rules:
- Feeding: satiety +30
- Playing: mood +25
The menu displays two value bars. When the pet is idle and either value falls below 20, it prompts “Hungry / Want to play”.
Built-in Pets¶
Five built-in pets:
- Dee (teal)
- Amber (amber)
- Berry (berry purple)
- Gray Whale (modeled after the DeepSeek Harness logo)
- Blue Whale (modeled after the DeepSeek official logo)
They can be switched with a single click in the settings panel.
Appearance Settings¶
Appearance settings include:
- Size: 0.5–1.5
- Opacity: 0.2–1
- Animation mode
- Pet selection
All these settings are persisted to localStorage.
Custom Pet Packs¶
The settings panel supports importing standard Codex pet packs, including:
pet.json- Spritesheet images
After import, it first validates, then stores in localStorage and becomes immediately selectable; it can also be deleted.
Compatible pack formats are described by pet.json and a row-major spritesheet. The pet.json fields include:
{
"id": "",
"displayName": "",
"description": "",
"spritesheetPath": "",
"frame": null,
"animations": null
}
The first 9 rows of the spritesheet are for Codex V1’s official 9 states, and rows 9–11 are for interaction states (eat / play / drag).
If a custom pet pack lacks extra interaction rows beyond the official 9-row spritesheet, it automatically falls back: interaction states play the idle row.
Installation and Enabling¶
Client plugins require host-side packaging (dsh.client.inject); after installation, DSH needs to be restarted and the page refreshed to take effect.
The provided installation command is:
dsh plugin --profile web add github:minybear/DeepSeek-Harness-Pet
Restart after installation:
dsh web
Then refresh the page, and the pet should appear in the bottom-right corner.
For offline environments or when pnpm is not needed, a manual installation script is available:
deploy\install.ps1
Typical Usage¶
-
After installing and restarting DSH, open the Web GUI and confirm the pet appears in the bottom-right corner.
-
Click the pet to pop up the menu, then perform feeding, playing, or enter settings.
-
Drag the pet to a suitable position; the position will be persisted to
localStorage. -
Switch between built-in pets in the settings panel, and adjust size, opacity, and animation mode.
-
Import a custom Codex pet pack: upload
pet.jsonand the spritesheet image; after validation passes, it becomes immediately selectable. -
If tests or spritesheet self-checks need to be run, execute:
npm test
node scripts/render-atlas.mjs --all
Here, npm test runs pet-core / client-contract / parity in sequence; node scripts/render-atlas.mjs --all soft-renders the three built-in pet spritesheets and self-checks grid invariants.
Implementation and Testing Notes¶
client.js inlines a copy of pet-core, and test/parity.test.mjs performs full behavioral consistency checks on both copies to prevent behavioral divergence.
Use Cases and Notes¶
Suitable for:
- Developers using the DSH Web GUI who want to visualize agent states as pet animations.
- Developers who want to import or create custom pet animations following the Codex pet pack format.
- Developers who need low-disturbance status prompts and value system reduced motion settings.
Notes:
- The plugin runs with the current dsh process permissions; check the source code and MIT license before installation.
- Nurturing values decay based on wall-clock time, independent of whether the browser is open.
- If a custom pet pack lacks interaction rows, interaction states fall back to the
idlerow. - This article only uses the installation commands explicitly provided in the materials, not presenting them as the only official installation entry point.
Conclusion¶
The value of @minybear/dsh-pet lies in mapping DSH’s current session state to Codex-style pet animations and providing lightweight settings like feeding, playing, dragging, appearance, and custom pet pack imports.
The community directory is an independent site, with no official affiliation to DeepSeek / High-Flyer. This article does not provide the directory page URL. The source code address is:
https://github.com/minybear/DeepSeek-Harness-Pet