Preface¶
When building agents in DeepSeek Harness (DSH), states such as waiting for user interaction, task completion, and task errors are often only reflected in the interface. If you want to stay informed about the current task status even when you leave the page, dsh-messager can push these events to system notifications, browser notifications, or Feishu, WeCom, Discord, DingTalk, and Telegram.
This article introduces the plugin’s capabilities, installation method, configuration entry points, and key considerations for local development and integration with third-party channels.
What Is This¶
dsh-messager is a DSH notification plugin maintained by ly6170. It addresses the issue of “task states requiring proactive alerts”: when a session needs interaction, a task is completed, or a task encounters an error, it pushes alerts through available channels.
DSH’s philosophy is “everything is a plugin.” dsh-messager is a community plugin and is not a built-in application in the official DeepSeek / High-Flyer app store. The directory page listed in this article is from an independent community directory.
Core Features¶
dsh-messager primarily provides the following capabilities:
- Trigger conditions: session needs interaction, task completed, task error.
- System notifications: supports OS toast.
- Browser notifications: supports the Notification API.
- Third-party messaging channels:
- Feishu: interactive cards with HMAC-SHA256 signing.
- WeCom: markdown with optional signing.
- Discord: embed cards.
- DingTalk: actionCard with optional signing.
- Telegram: Bot API HTML messages.
- Single package with dual runtime ends: the host end handles system notifications and third-party channels, while the client end handles browser notifications.
- Settings page editing: a “Notification & Messenger” section appears in the left menu of the DSH settings page, editable with real-time effect.
- Configuration routing: configuration goes through the plugin’s own webServer route
/dsh-messager/config, not restricted by the DSH settings whitelist. - Configurable options: trigger toggles, channel enable/disable,
verbosity,icon, deduplication cooldown, title prefix, etc. - Extensibility: supports extending new channels through the
NotifyChannelinterface. - Internationalization: settings sections and form texts support Chinese/English.
Installation and Enablement¶
The following commands need to be executed within the plugin repository. Replace <plugin-path> with the actual plugin directory. The materials do not provide a ready-to-use GitHub installation command, and it is not recommended to directly concatenate an installation address based on the plugin name alone.
- Build the plugin first:
pnpm install
pnpm build
- Install the plugin into the
webprofile, then start DSH:
dsh plugin --profile web add <plugin-path>
dsh web
When running from the DSH source repository, you can replace dsh with pnpm dsh:
pnpm dsh plugin --profile web add <plugin-path>
pnpm dsh web
After installing the bundle, do not start the same plugin with --patch simultaneously. Otherwise, the host end will load two copies and a duplicate settings namespace registration error will occur.
Typical Usage¶
After installation, you can use it in the following ways.
1. Modify configuration on the settings page¶
Go to the DSH settings page, and a “Notification & Messenger” section will appear in the left menu. Inside the section is a configuration form, and any changes take effect in real time.
This section does not go through the DSH settings whitelist but uses the plugin’s own webServer route:
/dsh-messager/config
2. Directly edit settings.yaml¶
You can also directly edit the messager section in $DSH_HOME/settings.yaml.
This is suitable for scenarios where you need to view more complete fields or want to manage configuration through files.
3. Read and write configuration via RPC¶
You can also use:
settings.describe
settings.mutate
to read or modify configuration on the host side.
4. Enable third-party channels¶
The Feishu, WeCom, Discord, DingTalk, and Telegram channels are disabled by default. You need to configure the corresponding webhook, token, chatId fields and then enable them.
The capabilities of each channel are as follows:
- Feishu: requires configuring a bot webhook and signing secret, uses interactive cards, and performs HMAC-SHA256 signing.
- WeCom: requires configuring a group bot webhook, optional signing, and messages are in markdown format.
- Discord: requires configuring a webhook, uses embed cards.
- DingTalk: requires configuring a custom bot webhook, optional signing, and uses actionCard.
- Telegram: requires configuring a Bot Token and chatId, uses Bot API HTML messages.
5. Local development¶
When debugging only the host end, you can run from the root directory of the DSH repository:
pnpm dsh web --patch <plugin-path>/cordis.yml
This method is for development and debugging, loads only the host end, does not write to the profile, and only takes effect for the current startup session.
For full dual-end development, you need to install the plugin into the profile:
dsh plugin --profile web add <plugin-path>
pnpm dsh web
After executing plugin add, you need to restart pnpm dsh web.
After modifying client-side code, rebuild the client side in the plugin repository and refresh the page:
pnpm run build:client
Configuration and Limitations¶
The configuration priority is:
schema default values → base (the config: of the plugin entry) → user layer (Web settings page)
A few common pitfalls:
system.iconrequires a file path, and the file must exist.- Browser notifications require user permission. When the plugin is first loaded and the permission is
default, it will request permission once automatically. If rejected, the browser channel silently degrades while other channels remain unaffected. - The plugin includes rate limiting such as deduplication cooldown, completion notification debouncing, and a per-channel per-minute limit (default 20).
- When installing from git and using
pnpm >= 10, you need to add the build script package name to theallowBuildslist in the profile’spnpm-workspace.yaml.
Suitable Scenarios and Considerations¶
Suitable for the following scenarios:
- Running agents in DSH and wanting to receive status alerts even when away from the page.
- Wanting to integrate task statuses into Feishu, WeCom, Discord, DingTalk, or Telegram.
- Needing to extend your own notification channels and reuse DSH’s session/task status events.
Considerations:
- The plugin runs with the privileges of the current dsh process.
- You should inspect the source code and repository license before installation.
- The verified materials do not include license information; please refer to the actual repository contents.
- Do not install build artifacts from untrusted sources, especially plugins that receive sensitive configuration such as webhooks, tokens, and chatId.
Links¶
- Directory page: https://www.skillhub.cn/plugins/ly6170/dsh-messager
- GitHub: https://github.com/ly6170/dsh-messager