The DSH ecosystem emphasizes a plugin-based architecture. If, while developing or using DeepSeek Harness, you need external notifications when scenarios such as AI turn completion, permission requests, questions, errors, or run start occur, the dsh-webhook-notifier plugin provides an HTTP-based solution.

This plugin is maintained by masknull. It allows users to configure Webhook URLs and trigger conditions, and to send HTTP requests (GET/POST) when specific events occur.

Core Features

  • 5 Trigger Scenarios: Includes independently toggleable triggers for AI turn completion, permission requests, questions, errors, and run start.
  • HTTP Request Support: Supports GET and POST methods; request bodies support JSON and Form formats.
  • Payload Modes: Supports “Preset Fields” mode (using templates) or “Custom Text” mode.
  • Fixed Fields: Each request automatically includes the type (event type) and type_cn (Chinese type) fields.
  • Custom Request Headers: Allows adding arbitrary request header key-value pairs.
  • Testing and Logging: Provides a built-in “Test Send” feature to verify connectivity; supports send logs, which can be expanded to view request content, responses, and error details.
  • Configuration Persistence: Configuration is saved in $DSH_HOME/settings.yaml and remains effective after restart.

Installation and Enabling

To install the plugin, run the following command:

dsh plugin --profile web add github:masknull/dsh-webhook-notifier

After installation, restart the dsh web process to activate the plugin.

Typical Usage

  1. Open DSH settings and go to the Webhook Notifier page.
  2. Enable the Webhook Notification switch.
  3. Configure request parameters: select the request method (GET/POST), enter the Webhook URL, select the payload mode (preset fields or custom text), and add custom request headers.
  4. Check the scenarios to trigger (for example, check only “AI turn completion”).
  5. Populate data in the payload configuration; placeholders can be used to dynamically populate information.
  6. Click Test Send to verify connectivity, then save the configuration after confirming it is correct.

Placeholders

In preset fields or custom text, the following placeholders can be used to dynamically populate information:

  • {{type}} / {{type_cn}}: Message type (English/Chinese)
  • {{sessionId}}: Session ID
  • {{sessionName}}: Session title
  • {{turn}}: Turn number
  • {{time}}: Current time (UTC+8)
  • {{trigger}}: Trigger scenario
  • {{toolName}}: Tool name (permission request scenario)
  • {{reason}}: Reason (permission request scenario)
  • {{error}}: Error message (AI error scenario)
  • {{question}}: Question text (AI question scenario)
  • {{status}}: Status (Agent run scenario)
  • {{userMessage}}: Latest user message
  • {{assistantMessage}}: Latest AI response
  • {{createdAt}}: Session creation time

Applicable Scenarios and Precautions

This plugin is suitable for scenarios that require synchronizing DSH events to external systems, monitoring AI run status, or integrating third-party services. For example, it can be used with the Desktop Pet project to display real-time notifications on the desktop pet.

Notes:
* Ensure the DeepSeek DSH version is >= 0.1.5-rc.2.
* The configuration file is saved in $DSH_HOME/settings.yaml. To completely remove the configuration, manually clean the file contents.
* The plugin runs with the permissions of the current DSH process. When using it, ensure the Webhook URL is secure.

Ecosystem Background

The DSH ecosystem follows the “everything is a plugin” philosophy. This plugin is collected from the community directory and has no official affiliation with DeepSeek / High-Flyer. Related links: