DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Session Notification — DeepSeek Harness 插件(DSH Plugin)
← Plugins

@dingyi222666/dsh-session-notification

Session Notification

用于 dsh Web GUI 的会话状态通知插件:提供会话完成/失败、提问和权限请求提醒,支持配置内置或自定义声音及浏览器通知,并包含 Notifications 设置部分

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @dingyi222666/dsh-session-notification@0.1.19
README兼容性版本
The Notifications settings sectionThe sound picker menu

兼容性与来源证明

Session Notification 以 @dingyi222666/dsh-session-notification 发布,当前版本为 0.1.19。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/16

版本

0.1.19stable
2026/9/16
0.1.18stable
2026/9/11
0.1.17stable
2026/9/10
查看其余 9 个版本收起版本
0.1.16stable
2026/9/9
0.1.12stable
2026/9/9
0.1.9stable
2026/9/4
0.1.8stable
2026/9/2
0.1.7stable
2026/8/30
0.1.5stable
2026/8/28
0.1.4stable
2026/8/28
0.1.3stable
2026/8/26
0.1.2stable
2026/8/22

相关插件

正在加载相关插件…

最新版
0.1.19
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
132.4 kB
文件数
22
Surface
web
许可证
BSD-3-Clause
发布源
npm
GitHub
★ 22
周下载
0
最近提交
2026/9/16
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 integrations-communication 分类下经过校验的插件。

Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rIm@xmanrui/dsh-im将十一种 IM 渠道和一个公网 AI Office 接入本地 DeepSeek Harness。DSCODE@toddzheng024/dscode-bundle完整的 DeepSeek 编码代理,支持持久化 shell、Ultra 协作和自动权限审查。Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理

README

dsh-session-notification

English | 中文

A notification plugin for the dsh web GUI. When a session finishes, hits an error, asks you a question, or needs your permission, you get a heads-up: a sound plays, and when you step away from the tab a system notification keeps you in the loop.

Screenshots

The settings panel with the Notifications entry in the sidebar and the section contentThe sound picker for each kind (the official dropdown)
The Notifications settings sectionThe sound picker menu

Install

# Install from npm (requires dsh >= 0.1.6-alpha.1)
dsh plugin --profile web add @dingyi222666/dsh-session-notification
# Restart dsh web for it to take effect
dsh web

Everything lives in this plugin — no harness (host) changes:

  • The settings section is registered through the client slot system (settings.section), exactly like official sections.
  • Preferences persist in the browser (localStorage) and sync across tabs; nothing requires the host's WEB_SETTINGS_NAMESPACES or any other host-package change. (The node half still reserves the dsh-session-notification namespace host-side through the settings seam; that reservation is inert without exposure.)
  • The settings shell maps only its own section ids to nav icons, so the Notifications nav row shows the shell's default gear.

The four notification kinds

KindWhen it firesDefault sound
Session completedA turn ends normally (turn/end completed)chime
Session failedA turn breaks with an error, or the host reports an agent errorfault
Question askedThe agent is waiting for your answer (question/requested)pop
Permission requestedThe agent requests an authorized operation (approval/requested)alert

Each kind can be enabled or disabled and reassigned to any of the four built-in sound effects (or muted). The four sounds are synthesized with Web Audio — no audio files are shipped — and the master volume is adjustable with the official-style slider (0–100%). A fixed loudness boost (~+6 dB) with a soft limiter on the playback chain makes every sound noticeably louder without distortion; custom audio feeds the same chain.

Custom audio

Beyond the four built-in sounds, each kind accepts your own audio file (mp3/ogg/wav, up to 1 MB): pick Custom audio on a kind's row to upload one, and it replaces the built-in for that kind — with a Replace and remove affordance, plus the Custom audio in use tag. Custom files are stored browser-locally (they are device media, not shared preferences).

Browser notifications & the quiet default

Browser (system-level) notifications are off by default; turning the switch on asks for the browser's permission first (a user gesture). Once granted, a notification is shown when the event's session is not the one you are reading, or when the tab is in the background. Notifications carry the page's own icon (the favicon the harness serves). A completed session's notification carries its final reply text (the last assistant message). The Test notification button in the section sends one immediately to verify the channel once permission is granted. The session you are reading stays quiet by default — its own events don't interrupt you; flip the Alert for the current session toggle if you want it to alert too.

Notify for picks the scope (default Main, after subagents): All sessions alerts for every session including subagents; Main only alerts for the main session as soon as it goes idle; Main, after subagents holds that alert until every subagent the main session spawned has finished, so a run that only paused between subagent waves never interrupts you early (failures always alert immediately).

The Notifications settings section

The plugin registers a Notifications section in the settings panel (Settings ⚙ → Notifications):

  • Browser notifications master switch (+ permission state and an enable button),
  • Alert for the current session toggle (opt in to being alerted while reading that session),
  • Notify for picker (All sessions / Main only / Main, after subagents),
  • Sound master switch,
  • Volume slider (0–100%),
  • one row per notification kind: enable switch, custom-audio upload, sound picker (the official dropdown menu), and a Preview button,
  • a Test notification button on the browser-notifications row (verifies the OS channel once permission is granted).

Preferences are stored browser-locally (localStorage) under the dsh-session-notification key — no host settings-namespace exposure required — so they persist across sessions and sync across tabs, and never depend on a harness change.

How it works

The browser half watches the sessions list snapshot and each session's conversation snapshot — no polling, no new wire channels:

  • A session's running edge true→false ends a run; the run is classified failed when a new turn-error node or a host agent-error appeared during it, otherwise completed (a failure that a retry recovered reads as completed).
  • A pending-interaction edge (question / approval) raises the question / permission kinds, with the question text or the tool name+reason in the notification body.
  • Sessions already idle (or already pending) when the plugin loads raise nothing.

Development

  • yarn run build — builds the browser bundle (lib/client.js) and the Node half (lib/index.js / lib/invariant.js).
  • src/client/notification-service.ts — the engine (classification) and dispatcher (gating); src/client/settings-store.ts — the settings section bridge; src/client/NotificationsSection.tsx — the section UI; src/client/sounds.ts + src/client/custom-audio.ts — the built-in and custom sounds.
  • yarn test — behavior tests; yarn run typecheck — type gate.
  • dsh 0.1.6-alpha.1: the @deepseek-ai/dsh-* types install from npm as devDependencies (^0.1.6-alpha.1); no checkout path mappings.
  • Node-half changes need a dsh web restart; browser-bundle changes need a rebuild (yarn run build) — a --dev server hot-reloads them.

Known limitations

  • Failure detection reads the conversation snapshot, which the client only maintains for sessions that have been opened; a session that runs without ever being opened notifies as completed even on failure.
  • Browser notifications require permission, and sound playback requires the page to have user activation (the browser's autoplay policy) — both are normal for browser apps and resolve as soon as the user interacts with the GUI.
  • Custom audio files live in the browser (localStorage), so they do not follow you across browsers or profiles.
  • The browser half is event-driven from the sessions list; it does not observe the raw event stream, so a run that starts and finishes between two list snapshots could in principle be missed (the host sends a status flip per edge, so this does not happen in practice).

Model Experience

None. The plugin is a pure client-side observer over the already-logged session state; nothing here reaches a model request.

KV Cache effect

None; this package neither assembles nor sends provider requests.