DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Tauri Notify Webhook — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
T

dsh-tauri-notify-webhook

Tauri Notify Webhook

DSH 桌面通知转发插件:任务异常停止或完成时把通知推到邮件(SMTP)或 pushplus;只在窗口失去焦点时推送,宿主路由挂在 /api/tauri/notify-webhook。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:iuuuuuuuu/dsh-tauri-notify-webhook#6115fc891c344fe32468817a5c7df85c02f677a1
README兼容性版本

兼容性与来源证明

Tauri Notify Webhook 以 dsh-tauri-notify-webhook 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/13

版本

0.1.0stable
2026/10/13

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
已声明 sideEffects: false
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/10/13
查看源码 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Ab Publishdsh-ab-publish浏览器自动化发布工具,可登录任意网站并发布内容,整合为一个可发布的插件包Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "树外 wechat_scrape 工具:获取微信公众号文章,过滤推广区块,并将每篇文章保存为 Markdown 文件,供此机器的 dsh 配置文件维护者使用。" kind: "package-reference" ---Im@xmanrui/dsh-im将微信、飞书、企微、钉钉、QQ、Telegram、WhatsApp、Slack、Discord 和 Matrix 接入 DSH。

README

dsh-tauri-notify-webhook

English · 简体中文

Forward a DSH desktop task notification to email (SMTP) or pushplus — when a task stops abnormally or completes, and only while the window is not in front of you.

The problem this solves

The desktop shell already shows a toast when a turn ends, and it is easy to miss for a reason worth stating precisely:

  • A toast is a system notification. If the window is in front of you, you were already watching the answer stream in — the toast is noise. If you walked away, the toast is gone by the time you come back, and nothing remains on screen.
  • The interesting endings are not equally interesting. A turn that ran to the end needs no attention. A turn that errored, was aborted, hit the token ceiling or was blocked does.
  • The host keeps only the latest turn/end per session, so a finished session leaves no queue to read later. Once you were away for that moment, the information is simply gone.

This plugin moves the notification off the screen and onto a channel that keeps history, and it fires only for the two endings you would actually act on.

Install

dsh plugin --profile <name> add github:iuuuuuuuu/dsh-tauri-notify-webhook

The same spec works in the GUI plugin panel (设置 → 插件 → 安装), which accepts any npm spec. For a local checkout, install the directory instead:

dsh plugin --profile <name> add link:D:/path/to/dsh-tauri-notify-webhook

There is no build step at install time: dist/ is committed. This is deliberate — the desktop profile installs plugins as packages, and a package that has to be compiled after installation would need a toolchain the profile does not have.

Restart DSH. This is required, not optional: the harness keeps loaded plugin modules in its loader cache, and hmr.root defaults to [], so a newly installed plugin does not take effect in a running host.

Use

Open 设置 → 任务推送, pick a channel, fill in its fields, press 发送测试, then 保存. The test button only becomes available once the form differs from what is saved, so a successful test always describes exactly the values you are about to store.

ChannelWhat it needs
邮件 (SMTP)SMTP host, port, security, from, to; username and password are optional for relays that accept anonymous mail
pushplusA token from pushplus.plus; pushes go straight to the official /send endpoint
关闭Nothing is sent. This is the default

What it does

Two triggers

TriggerFires when
任务完成The turn ended with reason completed
任务异常停止The turn ended any other way — aborted, error, blocked, max-tokens, interrupted, forked

Both are on by default and are switched independently. Sub-agent sessions are skipped: they are driven by their parent, so they would otherwise produce a burst of pushes for one task.

Only while you are away

A push is sent only when document.visibilityState === 'hidden'. The Tauri shell patches document.hidden to the real window focus state, so this is "the window is not in front of you" rather than "the tab is in the background". While you are watching the session, the plugin stays silent.

How one push is decided

The client cannot read a turn's ending reason, so the decision takes two round trips:

  1. The session list flips a session from running: true to false — that edge is the only thing watched, so a session that was already finished when the plugin loaded is never back-filled.
  2. After a 250 ms settle window (a turn can flicker its running flag), the client asks GET /turn-end?sessionId=… for the reason the host recorded.
  3. If the session is still stopped and has not stopped again in the meantime, the client posts POST /delivery. The host re-reads the settings at that moment and sends.

Every step re-checks that the plugin is still loaded, so a reload mid-flight cannot deliver a stale push.

Where your credentials live

Settings are stored on this machine only, at $DSH_HOME/notify-webhook/settings (DSH_HOME defaults to ~/.dsh). The file is written through the shell's atomic-write helper, so a crash mid-save cannot leave a truncated config. Nothing is uploaded anywhere except the channel you configure.

The host routes are loopback-only, and every mutating request must also be same-origin; a browser page on another origin cannot read your settings or make the plugin send mail.

Requirements

  • The DSH desktop (Tauri) shell — this plugin is a client of the shell's dsh-tauri and dsh-tauri-ui runtime plugins, and of the settings.section slot, so it does not apply to a browser-only profile.
  • Node.js ≥ 22.15.0.
  • For email: an SMTP server you can send through. For pushplus: a token.

Development

pnpm install
pnpm typecheck   # tsc --noEmit
pnpm lint        # eslint .
pnpm test        # vitest run
pnpm build       # tsdown -> dist/index.js, dist/index.d.ts, dist/client.cjs

CI runs the same four gates on Node 22 and 24, and then asserts that dist/ is up to date (git diff --exit-code -- dist) — if you change src/, commit the rebuilt dist/ with it.

compat/ holds local stand-ins for the two modules the shell injects at runtime (dsh-tauri, dsh-tauri/client, dsh-tauri-ui/client). They exist so that tsc and the unit tests can run outside the desktop app; tsdown marks those specifiers external, so none of this code reaches dist/.

License

MIT