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:
- Turn End (
onTurnEnd): A conversation task has answered. - Subagent End (
onSubagentEnd): A delegated subtask has finished. - Background Job End (
onJobDone): Depends onctx.jobs, such aspnpm test. - Goal Marked Complete (
onGoalComplete): The goal status becomes complete or blocked. - 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.
Method 1: Run Source Directly (Recommended for Verification)¶
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¶
- Runtime Environment: Notifications occur on the machine running
dsh, not on the browser side. - 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.
- Dependencies:
onJobDonedepends onctx.jobsbeing present in the bundle. - Deduplication: When a goal automatically continues, each turn is a new signal. You need to rely on
dedupeMsor disableonTurnEndto reduce interruptions. - Interruption Handling: Crash-patched
interruptedturns do not trigger notifications.
Related Links¶
- GitHub: https://github.com/yuan-source-666/dsh-task-notifier
- Community Directory: https://www.skillhub.cn/plugins/yuan-source-666/dsh-task-notifier