Introduction

Common issues when running tasks via DeepSeek Harness (DSH) include background Jobs, Goals, and sub-agents running independently. If you switch to another page to work, you might look back later only to find that a session has been stuck on a question or approval for a long time, wasting your time. Codex Desktop solves this problem with a desktop pet: the pet moves when tasks are running and reminds you when an Agent stops to wait for you.

dsh-pets brings this interaction to DSH Web: a draggable 2D pixel desktop pet, plus a real-time task panel floating over any page. Below are its features, installation methods, and how it works.

What is this

dsh-pets is a DeepSeek Harness Web UI plugin maintained by rikfish163-rgb (package name @dsh-local/dsh-pets, version 0.1.0, MIT license). Inspired by OpenAI Codex Desktop’s Pets feature, it is an isomorphic implementation for DSH—it does not rely on Codex and is not an official project.

It does two things: first, a desktop pet with sprite sheet animation where the state is linked to the Agent (Idle / Thinking / Working / Waiting for Answer / Completed / Failed); second, a task panel that floats over any page, summarizing ongoing tasks and questions waiting for your answer.

Core Features

Task Panel

The panel is divided into three tabs:

  • In Progress: Background Job + Goal + Sub-agents
  • Completed: History records retained after restart, max 200 items
  • Waiting for You: Lights up when the model stops asking questions or waits for approval

Task cards can be expanded to view the output tail and details. Clicking “Open Session →” deep-links directly to the corresponding session window.

Notifications & Global Overlay

When there are questions waiting for an answer, the pet displays a red badge, and the browser tab title shows ([N]). The plugin registers a global overlay via shell.overlay, allowing you to open it on any page to check real-time progress without switching back to the session page.

Appearance & Customization

  • Glassmorphism UI: Frosted glass, gradients, and rounded cards. The opacity of the pet and panel can be adjusted between 35% and 100%.
  • Custom Avatar: Upload PNG / WebP / GIF / JPG (max 8MB), switch back to the built-in sprite sheet at any time.
  • Pet Size: Adjustable from 64–280px; position and opacity are automatically remembered.
  • Quick Access: Buttons at the bottom of the panel go directly to the DSH Web homepage, session interface, and plugin management.

Installation and Activation

Requires dsh web (DeepSeek Harness Web, Node ≥ 20). Install from GitHub:

dsh plugin --profile web add "github:rikfish163-rgb/dsh-pets"

For local development, you can link directly:

dsh plugin --profile web link /path/to/dsh-pets

After installation, restart dsh web, and the pet will appear in the bottom right corner of the page. The plugin management panel is under “Settings → Plugins”. The client part declares react ^18.2.0 as peerDependencies.

Typical Usage

After installation, try the following steps in order:

  1. Click the pet to expand the task panel, click again to collapse.
  2. Drag the pet or the panel title bar to move it to a non-intrusive position; the position is automatically remembered.
  3. Double-click the pet to replay the current animation.
  4. Use the size slider to adjust the pet size (64–280px); use the opacity slider to sync the pet and panel opacity (35%–100%).
  5. To change the avatar, upload PNG / WebP / GIF / JPG; you can switch back to the built-in sprite sheet at any time.
  6. While tasks are running, switch to any page and check real-time progress from the overlay; click a task card to expand details / output tail, then click “Open Session →” to jump back to the session.
  7. When there are questions waiting, pay attention to the pet’s red badge and the ([N]) in the browser tab title.

How it Works

The plugin consists of two halves:

  1. Host half lib/index.js (Cordis plugin), registering read-only JSON routes:

    • GET /plugins/dsh-pets/tasks: Merges background Job, Goal, foreground Task, sub-agents, and Session.
    • GET /plugins/dsh-pets/asks: Collects questions waiting for an answer.
    • Sprite sheet asset routes: One for the main image and one for the fallback.
    • Completed history is persisted to ~/.dsh/storages/dsh-pets.json, retained after restart, max 200 items.
  2. Client half lib/client.js: Registers a global overlay via ctx.slots.inject("shell.overlay"), subscribes to sessions.list for Agent state linkage, and polls the routes above every 1.5s to refresh the panel.

All service access uses optional probing (ctx.get + try/catch). It gracefully degrades if a service does not exist and won’t crash the host.

Switching Pets

To replace the built-in avatar, you need to replace assets/lulu-spritesheet.webp: 9 rows of state order are idle / run-right / run-left / wave / jump / failed / waiting / sprint / review, 162×198 per frame. If the main image cannot be read, the plugin automatically falls back to assets/pet-sheet.png. This image can be regenerated using scripts/gen-pet.py.

Use Cases and Notes

Suitable for people running multiple background tasks or who often leave the session page—the panel, badge, and pet actions actively bring the “stopped and waiting” status to the foreground.

A few notes:

  • Asset Copyright: assets/lulu-spritesheet.webp is an asset of the official OpenAI Codex pet “Lulu”. All rights belong to OpenAI; please be compliant when redistributing. assets/pet-sheet.png is generated by the script and can be used freely.
  • Permissions: The plugin runs with the permissions of the current dsh process. Before installation, it is recommended to read the source code and confirm the license (this project is MIT).
  • Environment Requirement: Node ≥ 20.

Summary

dsh-pets uses a desktop pet and a global overlay to gather task states scattered across Jobs, Goals, sub-agents, and sessions, refreshing the client every 1.5s. If your workflow often involves long tasks running in the background, you can try installing it.

  • GitHub: https://github.com/rikfish163-rgb/dsh-pets
  • Community Plugin Directory (Independent site, not an official app store): https://www.skillhub.cn/plugins/rikfish163-rgb/dsh-pets