Preface¶
When running long tasks with DeepSeek Harness (DSH), it is common to switch to another window to do other things. However, there are two moments when you must stay in front of the window: first, when tool operations require manual confirmation; second, when the model run ends. Missing the former will keep the task waiting for someone; missing the latter, you won’t know when it finishes.
dsh-win-notify solves this problem: it converts these two moments into Windows system notifications, sounding a looping alarm when confirmation is needed and a normal beep when finished. Below is an introduction to its implementation, installation steps, and usage notes.
What is it¶
dsh-win-notify is a Windows 11 system notification bridge plugin for DeepSeek Harness, maintained by linfunss. When tool operations require user confirmation or the model run completes, it pops up a system toast notification branded with DeepSeek (name, whale icon, sound effects). It has zero runtime dependencies, zero build steps, and is pure ESM JavaScript. Current version is 1.0.0, MIT license.
On non-Windows platforms, it is a no-op and will not error in Linux or macOS environments.
Two notification scenarios¶
The plugin listens to two categories of events:
-
When tool operations require user confirmation: It listens to the
approval/requestwaterfall event (observer only, does not intervene in decision-making) and pops up a “Needs Confirmation” notification with the soundNotification.Looping.Alarm(looping alarm). -
When the model run completes: It listens for the
agent/statusevent changing fromrunningtoidle(filters out sub-agents) and pops up a “Run Completed” notification with the soundNotification.Default.
Notifications are sent via CreateToastNotifier(aumid). This step is crucial: Windows assigns the notification to the application corresponding to the AppUserModelID (AUMID), which is DeepSeek Harness, rather than PowerShell. The name, icon, and sound are all correct.
Branding and Self-healing¶
To ensure notifications carry the brand, two things are needed: an icon file and a registered AppUserModelID. The plugin performs two tasks every time it loads:
-
Regenerate the DeepSeek whale icon using pure Node (without depending on any rendering library) and write it to
%LOCALAPPDATA%\DeepSeekHarness\deepseek.ico. -
(Re)register the AppUserModelID
DeepSeekAI.DeepSeekHarnesstoHKCU\Software\Classes\AppUserModelId\..., including the display name and icon URI.
There is an implementation detail here: the icon is generated by rasterizing directly from the official favicon path data, rather than using librsvg (the rendering library underlying sharp), because librsvg flattens this specific path into a thin line; the scanline rasterization in icon.mjs is a workaround for this flaw. Regenerating it every time constitutes “self-healing”: even if the icon file or registry entry is tampered with, it will be restored upon the next startup.
Environment Requirements¶
- Windows 10/11 (no-op on other platforms);
- Node >= 20 (requirement from
package.jsonengines); - DeepSeek Harness with Web/desktop profile, to provide the
@deepseek-ai/cordispeer dependency.
Installation¶
The plugin is distributed as a standard DSH bundle. The philosophy of DSH is “everything is a plugin,” and plugins are placed in the profile’s dependencies. The README provides three ways.
Method A: Local clone (recommended for development)¶
First, clone the repository:
git clone https://github.com/<your-name>/dsh-win-notify.git
Then, reference the local path in the profile’s package.json (path is $DSH_HOME/profiles/<profile>/package.json):
{
"name": "dsh-profile-web",
"private": true,
"dependencies": {
"dsh-win-notify": "file:C:/path/to/dsh-win-notify"
}
}
Then execute:
dsh plugin --profile web install
Method B: npm¶
dsh plugin --profile web add dsh-win-notify
Note that the README marks this method as “once published”—the package is only available after it is published to npm. If you want to get started immediately, use Method A or C.
Method C: Git dependency¶
Add a git dependency in the profile’s package.json:
"dependencies": {
"dsh-win-notify": "github:<your-name>/dsh-win-notify"
}
Then execute pnpm install (or dsh plugin --profile web install) in the profile directory.
Enabling¶
After installation, add the package to the profile’s dsh.profile.bundles. The plugin comes with cordis.patch.yml, which automatically inserts the win-notify line; you can also manually insert it into the profile’s cordis.patch.yml:
- insert:
- id: win-notify
name: 'dsh-win-notify'
Restart DSH, open “Settings → System → Notifications”, you should see the DeepSeek Harness entry, and ensure the switch is enabled.
Configuration¶
All configuration items are optional; add them under the same line of cordis.patch.yml as needed:
- id: win-notify
name: 'dsh-win-notify'
config:
enabled: true
appName: DeepSeek Harness
aumid: DeepSeekAI.DeepSeekHarness
confirmationTitle: DeepSeek Harness · Needs Confirmation
completionTitle: DeepSeek Harness · Run Completed
confirmationSound: Notification.Looping.Alarm
completionSound: Notification.Default
The purpose of each item can be inferred from its name: the two Title fields control the notification titles, the two Sound fields control the sound effects, and aumid corresponds to the AppUserModelID registered earlier.
Testing¶
The plugin has a built-in icon test to verify the ICO structure, PNG entries, and whale rendering content are normal:
node tests/icon.test.mjs # or npm test
Use Cases and Notes¶
Suitable for developers who use DSH for long periods on Windows 10/11 and frequently switch windows—especially scenarios that trigger tool confirmation and have unpredictable task run times.
Several known limitations, please understand before using:
- System notification settings must allow the “DeepSeek Harness” application; Focus Assist might mute toasts.
- Windows might cache the old icon until the notification center refreshes (restarting DSH can clear it).
- Notifications are for alerting only; clicking them will not focus the Harness window (
ToastActivatorCLSIDis not registered).
Also, a reminder: after installation, the plugin runs with the permissions of the current dsh process, capable of writing files and modifying the registry (the writing of the icon and registering the AUMID mentioned above are examples). It is recommended to review the source code before installation, confirm the license (this plugin is MIT), and only install if acceptable.
Conclusion¶
dsh-win-notify does a small but specific thing: connects the two “waiting for someone” moments of DSH with Windows system notifications, so you don’t have to stare at the window. The zero-dependency, zero-build implementation makes it easy to modify for your own version. Related addresses:
- Directory page: https://www.skillhub.cn/plugins/linfunss/dsh-win-notify
- GitHub: https://github.com/linfunss/dsh-win-notify
The directory page is an independently maintained community site with no official affiliation with DeepSeek / Hypothesis, serving only as a reference for the browsing entry.