Skip to main content

dsh-answer-pet

10Stars1Forks1Issues0Watchers

A DSH Web desktop pet plugin that displays real-time answer progress, multi-session status cards, and model trajectories. Supports three built-in switchable themes: Blue Whale, Orange Cat, and Silver Gradient Cat.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki
Language
JavaScript
License
MIT
Branch
main
deepseek-harnessdesktop-petdsh-plugin

Install

cmdweb profile
$ dsh plugin --profile web add github:Nanki-nn/dsh-answer-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 Nanki-nn/dsh-answer-pet for me: review the repository at https://github.com/Nanki-nn/dsh-answer-pet 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

Adds a customizable desktop pet to DSH Web, displaying real-time model answer progress, tokens/rate, tool calls, and multi-session concurrency status.

Core Features

  • Real-time answer progress display: Five stages (processing, thinking, output, tool call, complete), with the progress bar monotonically filling within the same turn.
  • Multi-session concurrent display: Each running session shows an independent progress card, vertically arranged without interference.
  • Model trace timeline: Each card displays the last 4 actions (task analysis, reasoning/planning, answer organization, tool call and results), with failed tools highlighted in red on the timeline.
  • Swappable pet themes: Three built-in themes (Blue Whale, Orange Cat, Silver Shaded Cat based on declarative PetTheme v1 contract), unknown themes automatically fall back to default Blue Whale.
  • Tool call privacy summary: Only extracts short descriptions from whitelist fields (description / query / pattern / file_path / path / url), without exposing full commands or parameters.
  • Interactive experience: Pet is draggable, position saved in browser local storage; clicking the pet triggers a theme blink; status cards can be collapsed into count buttons.
  • Polling + SSE dual channels: Smooth streaming tokens via 800ms polling updates, stage transitions pushed instantly via SSE to avoid EventSource overload.

Technical Implementation

  • Language: JavaScript (ESM Node half + CommonJS client bundle)
  • Key dependencies: schemastery (config schema validation), DSH host services (session/event event source, webServer HTTP routing, settings config access)
  • Architecture pattern: Official bundle plugin dual-half — Node half listens to session/event to fold progress/traces and exposes 3 HTTP endpoints via webServer.register; Client half self-renders DOM with themes, zero platform module dependencies, polls via fetch + subscribes data via EventSource
  • Entry files: Node half .dsh-plugin/index.mjs / Client half .dsh-plugin/client.js (generated by scripts/build-client.mjs concatenated in runtime → theme → core order)

Use Cases

When interacting with DSH Web daily, you want to intuitively see whether the model is thinking, how fast it's outputting, or which tool call is stuck—instead of staring at console logs. When developing in parallel or running batch tasks across multiple sessions, independent progress cards help you instantly identify which session is at which step.

Prerequisites & Compatibility

DependencyMin VersionDescription
DSH WebNot declaredMust install via dsh plugin --profile web add; must restart dsh web after modifying Node half or schema
Node.jsNot declaredThis plugin doesn't declare engines; CONTRIBUTING suggests using Node 20+ for development, local build script uses import.meta.dirname
Operating SystemCross-platformRuns on Web, no native module dependencies
Native ModulesNonePure JS, zero native bindings

Installation

dsh plugin --profile web add github:Nanki-nn/dsh-answer-pet

Configuration Options

Written in answer-pet section of <dshHome>/settings.yaml:

ConfigTypeDescriptionDefault
themeStringPet theme id,可选 blue-whale (default Blue Whale) / orange-cat (Orange Cat) / silver-shaded-cat (Silver Shaded Cat), unknown values fall back to Blue Whaleblue-whale
sizeNumberPet height in pixels (48–200)96
cornerStringDocking corner,可选 br (bottom-right) / bl (bottom-left) / tr (top-right) / tl (top-left), dragging will detach from docking cornerbr
opacityNumberPet normal opacity (0.2–1)1
pollMsNumberStatus polling interval in milliseconds (200–5000), smaller = smoother but more traffic800
showBarBooleanWhether to show progress cards; set to false to never show expanded paneltrue
showBubbleBooleanWhether to show status bubble above pettrue

FAQ

Q: Pet not visible after installation?

A: First confirm installation with --profile web; then stop and restart the current dsh web process, then refresh the original Web page. Starting another Web service alone won't update the current page.

Q: Theme or config not taking effect after plugin upgrade?

A: The plugin's Node half listens to host events, config schema is injected by the server; you must restart dsh web after upgrade—refreshing the browser only updates client styles.

Q: Set theme but still showing Blue Whale?

A: Check if answer-pet.theme is one of blue-whale / orange-cat / silver-shaded-cat; unknown or misspelled IDs will safely fall back to default Blue Whale without errors.

Q: Why isn't progress the exact percentage from the model?

A: Most model interfaces don't report answer completion percentage. The plugin estimates using stage weights, token count, maxTokens and a saturation curve (1-exp(-out/600)), with real token usage overwriting the streaming estimate when available.

Q: Does the tool call panel leak commands or parameters?

A: No. Trace summaries only extract short descriptions from whitelist fields (description / query / pattern / file_path / path / url), compress whitespace and limit length—full commands or raw JSON are not displayed.

Q: How to restore pet's default docking corner?

A: Execute localStorage.removeItem('answer-pet:pos'); location.reload() in browser developer tools; if you also want to restore progress bar expanded state, add another line localStorage.removeItem('answer-pet:bar').

Q: Why not show number 0 when idle?

A: This is expected behavior. Count buttons only appear when status cards are collapsed and there's at least one running session—stays clean when idle.

Getting Started Difficulty

Beginner — One-line install command, config schema fields are intuitive and adjustable; no coding or source modification needed to use, problems usually resolved by restarting dsh web.

Known Issues & Limitations

  • Progress is an estimate: Model interfaces typically don't return exact completion percentages; progress is calculated from token count and saturation curve, may deviate from actual remaining time.
  • Upgrade requires restart: After modifying Node half or config schema, must restart dsh web process—refreshing browser won't load new host logic and schema.
  • Dragging detaches from docking corner: After manually dragging the pet, the corner config no longer takes effect, new position saved in browser localStorage; delete answer-pet:pos to restore default corner.
  • Themes limited to three choices: Currently only loads built-in themes validated through PetTheme v1 contract bundled with the plugin; no third-party arbitrary JavaScript execution or external SVG injection; to customize themes, develop per docs/PET_THEME.md and bundle internally.

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/Nanki-nn/dsh-answer-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