The core design philosophy of DeepSeek Harness (DSH) is “everything is a plugin.” When developing agents with DSH, developers need clear feedback to confirm whether an Agent has completed the current task, or to receive a reminder during long waits. DSH has a built-in completion sound, but its functionality is relatively basic. The dsh-completion-sound plugin expands on this foundation by adding sound effects, special music reminders for long-running tasks, and desktop notifications.

Core Features

This plugin provides the following features:

  • Completion sound: Uses WebAudio to synthesize a two-tone signal (E5 → A5) to indicate that a single interaction has completed.
  • Long-task music: When a task’s duration exceeds the threshold (default: 10 minutes), it plays special music and shows a “Click anywhere to stop” modal dialog.
  • Custom special music: Supports specifying a single audio file or an audio directory (the plugin randomly scans and plays files in the directory).
  • Preset audio asset: Includes a built-in “Guan Yu Song” audio file (approximately 13.5 MB) located at assets/guan-yu.wav.
  • Configurable threshold: The long-task threshold can be adjusted between 1 minute and 10080 minutes (7 days).
  • Desktop notifications: Provides cross-platform desktop notification support. Browser notifications are preferred, with automatic fallback to system notifications when unavailable (macOS uses osascript, Linux uses notify-send).
  • Dedicated settings page: All settings are centralized on the “Settings → Completion Sound” page.
  • Conflict handling: This plugin uses cordis.patch.yml to disable the built-in DSH completion sound entry (ui-completion-sound) and inserts its own configuration entry, avoiding double playback when both are enabled simultaneously.

Installation and Enabling

Installing this plugin adds it to the specified DSH configuration profile. Use the following installation command:

dsh plugin --profile web add github:jensentsts/dsh-completion-sound

Replace web with your actual profile name. Since the build artifacts have already been committed, installation does not require additional build permissions.

If you need to pin a specific code version to prevent later updates from introducing changes, you can install using a commit hash:

dsh plugin --profile web add github:jensentsts/dsh-completion-sound#<sha>

Uninstallation command:

dsh plugin --profile web remove @jensentsts/dsh-completion-sound

Configuration

On the “Settings → Completion Sound” page in the DSH interface, you can configure the following options:

  • Enable: Toggles the completion sound.
  • Notifications: Toggles desktop notifications.
  • Volume: Volume level, ranging from 0-1, default 0.5.
  • Long-task threshold: Number of minutes that triggers special music, default 10.
  • Special music: Toggles whether to play special music when a long-running task completes.
  • Special path: Specifies the path to a special music file or directory. If left empty, the built-in “Guan Yu Song” is used.

Special path semantics:
* Empty string: Uses the built-in assets/guan-yu.wav.
* File path: Plays that file.
* Directory path: Recursively scans that directory for audio files (supports .aac, .flac, .m4a, .mp3, .oga, .ogg, .opus, .wav, and .webm, up to 512 files) and randomly selects one for each playback.

Notes

  • Permissions and security: Installing a plugin means running third-party code on your local machine with your current user permissions. Be sure to review its source code before installing.
  • System dependencies: The system-level fallback for desktop notifications requires system environment support. Linux typically requires installing libnotify-bin (which provides notify-send), while macOS relies on the built-in osascript.
  • Plugin architecture: This is a DSH Bundle. The dsh.bundle.patch field in package.json points to cordis.patch.yml, and dsh.client declares the injection logic for the web platform.

Summary

dsh-completion-sound addresses the awareness issues of “when it is done” and “long wait periods” in agent development through sound and notification mechanisms. It provides complete configuration capabilities ranging from simple beeps to long-task reminders, making it well suited for developers who need fine-grained control over interaction feedback.