DeepSeek Harness (DSH) runs agents in the background, and users often leave the terminal and miss the moment a task completes. dsh-task-notifier is a community plugin that listens for DSH’s internal task-end signals and converts them into native operating system notifications (Windows Toast, Linux desktop notifications, and macOS Notification Center) to tell users that a task has completed.

Plugin Overview

  • Name: dsh-task-notifier
  • Type: DeepSeek Harness community plugin
  • Maintainer: yuan-source-666
  • License: MIT
  • Core Value: Exposes DSH’s internal “task end” signals to the operating system’s notification center.

Core Capabilities

This plugin listens for five DSH internal task-end signals:

  1. Turn End (onTurnEnd): A conversation task has answered.
  2. Subagent End (onSubagentEnd): A delegated subtask has finished.
  3. Background Job End (onJobDone): Depends on ctx.jobs, such as pnpm test.
  4. Goal Marked Complete (onGoalComplete): The goal status becomes complete or blocked.
  5. Workflow End (onWorkflowEnd): A workflow task has finished.

The plugin provides the following features:
* Cross-Platform Support: Works on Windows, Linux, and macOS.
* Localization: Supports Chinese and English localization.
* Flexible Configuration: Provides independent toggles for different signal types and supports a de-duplication window (default 2 seconds).
* Custom Delivery: Supports custom commands to override the built-in channels.
* Event Publishing: Emits a task-notifier/completed event when a task completes, allowing other plugins to subscribe.

Installation and Enablement

Run the following commands in the root directory of the DSH repository.

First rewrite the development placeholder path, then start:

node scripts/write-dev-patch.mjs
cd /path/to/deepseek-harness
pnpm dsh web --patch "它打印出来的那个 load.dev.patch.yml 绝对路径"

Open http://127.0.0.1:3080. When the Agent finishes a task, a desktop notification will appear.

Method 2: Install the Bundle

dsh plugin --profile demo add E:/ai_agent_workspace/deepseek_harness/dsh-task-notifier
dsh --profile demo

Method 3: Install from GitHub

dsh plugin --profile demo add github:yuan-source-666/dsh-task-notifier

After installation, use dsh --profile demo --dump-config to check whether the configuration has taken effect.

Configuration Notes

Configuration items are located in the config: field. The following are common default settings:

config:
  enabled: true                # 总开关
  locale: 'zh'                 # 语言:'zh' 或 'en'
  onTurnEnd: true
  onSubagentEnd: true
  onJobDone: true
  onGoalComplete: true
  onWorkflowEnd: true
  onlySuccess: false           # 是否仅通知成功
  includeChildSessions: false  # 是否通知子会话轮次
  dedupeMs: 2000               # 去重窗口(毫秒)
  command: []                  # 自定义投递命令 argv
  timeoutMs: 15000             # 投递超时时间

Notification Template Placeholders:
* {kind}: Task type (e.g., “conversation task”)
* {task}: Task name
* {outcome}: Ending reason
* {ref}: Session or task ID

Custom Delivery:
When the command array is non-empty, the plugin uses that command to deliver notifications instead of the system-native channels. Shell is not supported; {title} and {body} strings are concatenated directly.

Known Boundaries and Caveats

  1. Runtime Environment: Notifications occur on the machine running dsh, not on the browser side.
  2. Title Generation: Session titles are generated asynchronously by DSH’s title service. If a title has not been generated, it falls back to the most recent human instruction.
  3. Dependencies: onJobDone depends on ctx.jobs being present in the bundle.
  4. Deduplication: When a goal automatically continues, each turn is a new signal. You need to rely on dedupeMs or disable onTurnEnd to reduce interruptions.
  5. Interruption Handling: Crash-patched interrupted turns do not trigger notifications.
  • GitHub: https://github.com/yuan-source-666/dsh-task-notifier
  • Community Directory: https://www.skillhub.cn/plugins/yuan-source-666/dsh-task-notifier