Skip to main content

harness-pet

5Stars1Forks0Issues0Watchers

Place a pixel whale in the DeepSeek Harness web page that automatically switches between 9 animations based on session state, with a local settings panel and mini follow-up input.

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

Install

cmdweb profile
$ dsh plugin --profile web add --allow-build=harness-pet github:cakeni/harness-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 cakeni/harness-pet for me: review the repository at https://github.com/cakeni/harness-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

A unique pixel whale for the DeepSeek Harness page, which automatically switches between 9 animation states based on official session signals, displays dialogue bubbles, and offers draggable positioning, local settings panel, and optional independent floating window.

Core Features

  • Switches between nine animation states (idle / thinking / working / searching / bash / editing / waiting / error / success) based on Harness official session signals (streaming output, running tools, pending approval, reconnection, errors, etc.)
  • Displays a dialogue bubble card above the whale showing the latest local user question and Harness real-time or final reply; long replies automatically follow the latest streaming text but content is not persisted
  • Single click on whale plays a brief fin-wave interaction; drag left/right uses independent left/right swimming animation; position is clamped to viewport and automatically written to localStorage
  • Built-in interface languages: English (default), Simplified Chinese, Japanese, Korean with instant switching; supports prefers-reduced-motion and panel Reduce Motion
  • Sends follow-up input directly to the current Harness session via official SessionFace.prompt(..., 'queue'), preserving drafts and displaying error messages on send failure
  • In Chromium 116+ browsers, an independent Document Picture-in-Picture floating window can be enabled; the whale remains visible even when the main Harness window is minimized
  • Settings panel provides enable toggle, size (72-160 px), opacity (0.3-1), Reset Position, Debug State force switch, automatic 9-state cycling, and real-time status badge

Technical Implementation

  • Language: TypeScript
  • Key Dependencies: @deepseek-ai/dsh-client-connection, @deepseek-ai/dsh-client-runtime (peerDependencies, injected by host at runtime); build side uses tsdown + vitest, no UI framework
  • Architecture Pattern: Cordis client plugin; package.json uses dsh.bundle.patch (pointing to cordis.patch.yml) to insert harness-pet into host Cordis tree, declares required services via dsh.client.inject: ['sessions','connection']; client product subscribes to ctx.sessions and ctx.connection.hostDescription via apply(ctx) on browser side, all Harness field meaning analysis consolidated in pure functions (SignalSnapshot) → PetStatus in src/adapters/deepseek-harness.ts
  • Entry Files: Browser-side src/client/index.ts (compiled to lib/client.js, registered via __ModuleLoader__.load), host-side placeholder src/index.ts, 8×9 pixel animation atlas inlined as base64 into client bundle

Use Cases

For users who want a reactive presence in the corner of their desktop while using Harness without letting the pet overshadow the main workflow. The whale instantly changes states and bubble icons when Harness executes searches, runs commands, edits files, waits for approval, encounters errors, or completes tasks—allowing you to judge at a glance whether it's thinking or stuck, without repeatedly switching back to the Harness main window.

Prerequisites & Compatibility

DependencyMin VersionDescription
DeepSeek Harness>=0.1.0-rc.6peerDependencies in package.json lock @deepseek-ai/dsh-client-connection and @deepseek-ai/dsh-client-runtime to ^0.1.0-rc.6; later 0.1.x pre-release versions not verified
Node.js (build time)>=22Server build target node22, client target es2022 in tsdown.config.ts
Browser PlatformWeb Cross-platformRuns only as DSH Web plugin; desktop window additionally requires Chromium 116+
Native ModulesNoneClient is pure DOM/Canvas; server only exports types

Installation

dsh plugin --profile web add github:cakeni/harness-pet

Configuration Options

ConfigTypeDescriptionDefault
LanguageSelectSwitch interface language (English / 简体中文 / 日语 / 한국어), takes effect instantlyen-US
Enable PetToggleAfter disabling, gear icon in bottom-right remains; re-enable to restoretrue
Pet SizeSliderWhale rendering size in pixels112
OpacitySliderOverall whale opacity0.95
Reduced MotionToggleDisables continuous animation and click wave; static frames for states remain correctfalse
Debug StateSelectForce override to a specific state, or follow Harness auto-detectionauto
Auto-cycleTogglePeriodically cycle through all nine states for preview when no task is activefalse
Reset PositionButtonReset whale position to default bottom-right corner—
Show DialogButtonManually re-display dialogue card after current session bubble is closed—
Open Floating Pet / Return to HarnessButtonOpen or close independent floating window in Chromium 116+; disabled in unsupported browsers—

FAQ

Q: No whale appears in the bottom-right corner after installation?

A: First open browser DevTools Console to check if window.__DSH_BOOT__.entries contains harness-pet, then use Network panel to confirm /plugins/harness-pet/client.js returns HTTP 200; after first installation or plugin removal, restart the dsh web process to let the host rescan the plugin list—refreshing the page alone won't remount new plugins.

Q: Is this an official DeepSeek project?

A: No. This is an unofficial community project. The README, UI footer, and plugin description all clearly state "Not affiliated with, endorsed by, or maintained by DeepSeek." DeepSeek and related trademarks belong to their respective owners.

Q: Does the plugin upload my conversation content?

A: No. The plugin code doesn't make any independent fetch calls, doesn't integrate any analytics or telemetry, and conversation text is only rendered locally in the DOM, disappearing on refresh or session switch; only when you manually send text in the follow-up input box above the whale does that text get submitted to Harness's own session channel via official SessionFace.prompt. Settings are only written to localStorage, and the plugin requests no browser permissions.

Q: What if no state matches the current tool?

A: The adapter's tool name table only covers officially public names (web_search / tool_web / bash / tool_bash / pwsh / str-replace-editor / apply_patch / write_file, etc.). Unrecognized running tools are downgraded to generic working without being faked as searching/bash/editing—so even if Harness 1.0 renames tools, it won't display incorrect states.

Q: "Open Floating Pet" button does nothing when clicked?

A: This feature depends on the Document Picture-in-Picture API in Chromium 116+; browsers like Firefox/Safari that don't support it will gray out and disable the button directly. The browser process and corresponding tab must both remain open for the whale to stay in the independent floating window.

Q: Where are settings saved? Will they be lost after deleting account login?

A: Saved only in browser localStorage under key harness-pet:settings, containing language, enable status, size, opacity, reduced motion, debug state, auto-cycle, and position. Clearing browser data or switching browsers will lose the settings and require reconfiguration.

Q: How to uninstall?

A: Run dsh plugin --profile web remove harness-pet, then restart dsh web; for local link installation, remove the corresponding record from link:../harness-pet and restart the host.

Q: Will reduced motion toggle completely stop animations?

A: No. This toggle, like the system's prefers-reduced-motion: reduce, only stops continuous floating and frame animations but still preserves the correct static frame for the current state—so the pet can still reflect what Harness is doing without flickering.

Difficulty Level

Beginner — copy one installation command, restart the host, and the whale appears. All advanced options are concentrated in the graphical controls of the settings panel, requiring no code or configuration file writing.

Known Issues & Limitations

  • Unrecognized running tool names only display as generic working; if Harness 1.0 renames tools, it may temporarily fail to trigger searching / bash / editing states
  • Document Picture-in-Picture desktop window is only available in Chromium 116+ and requires both the browser process and corresponding tab to remain open
  • Client pixel atlas is inlined as base64 into the bundle, making secondary load have no network requests but initial download size is larger

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/cakeni/harness-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