前言¶
在 DeepSeek Harness(DSH)里跑长任务时,你往往不能一直盯着浏览器:一轮对话结束、子代理跑完、任务被中止、工具要审批、助手在等你选答案——这些时刻如果只能靠切回标签页才发现,容易耽误后续操作。本插件由社区维护者 sorchk 提供,归类为「联网工具」;它在宿主侧监听会话事件,把摘要式通知发到你自建的 Ntfy、Gotify 或任意 Webhook,正文不包含会话聊天内容,发送失败只记日志,不会打断当前会话或工具执行。
这是什么¶
dsh-event-notice 是 DSH 的 Cordis bundle 插件,同时包含宿主端(index.js)与 Web 浏览器端(client.js)。当任务完成、子任务完成、任务中断、需要审批、需要回答问题时,按你的配置向外部通道投递通知。插件当前在 npm 上的版本为 0.5.11(资料来自仓库 package.json),依赖 Node >= 20。
仓库地址:https://github.com/sorchk/dsh-event-notice
社区目录页:https://www.skillhub.cn/plugins/sorchk/dsh-event-notice
核心功能¶
下面按「事件 → 通道 → 隐私」说明能力,均来自官方 README。
会通知哪些事件¶
| 通知事件 | 触发来源 | 说明 |
|---|---|---|
任务完成 task-complete |
会话事件 turn/end,结束原因 completed |
主会话的一轮任务正常跑完 |
子任务完成 subtask-complete |
子代理会话事件 turn/end,结束原因 completed |
子代理(子任务)正常跑完。默认不勾选,需在配置页打开 |
任务中断 task-interrupted |
会话事件 turn/end,结束原因为中止 / 阻塞 / 报错 / 达到 token 上限 |
附上具体原因;子任务中断也算这一类 |
需要审批 approval-required |
会话事件 approval/asked |
附上工具名与审批原因 |
需要回答问题 question-required |
会话事件 tool/call,工具名为 ask_user_question |
助手正在等你回答 |
「任务完成」只管主会话,「子任务完成」只管子代理会话,两者互斥,一条完成事件不会重复通知。
通知正文只包含会话标题、子代理标签、事件细节与工作区名称,不包含会话正文。
三个 outbound 通道¶
三个通道可同时启用:
- Gotify:
POST <服务器地址>/message?token=<应用令牌> - Ntfy:JSON 发布接口,主题放在请求体里,标题含中文也不会破坏请求头
- Webhook:自定义 HTTP 方法与请求体模板,支持占位符(见下文配置)
Gotify 与 Ntfy 均支持按事件单独设置优先级;Webhook 默认 POST,请求体为 JSON,模板内字符串会按 JSON 字面量转义。
权限与隐私¶
插件只监听会话事件,不读取会话正文;只向你在配置页填写的服务器地址发起请求。Gotify 应用令牌与 Ntfy 访问令牌写入 DSH 凭据存储(~/.dsh/.credentials.yaml),不随设置明文落盘。
安装与启用¶
插件通过 dsh plugin 装到指定 profile,命令参数会原样交给 pnpm,实际在 ~/.dsh/profiles/<profile>/ 下执行 pnpm add。
Web 版常用安装方式如下(以下为 README 原文命令,勿自行拼接其它写法):
# 默认分支(main)的最新提交
dsh plugin --profile web add github:sorchk/dsh-event-notice
# 固定到某个 tag
dsh plugin --profile web add github:sorchk/dsh-event-notice#v0.5.10
# 固定到某个 commit
dsh plugin --profile web add github:sorchk/dsh-event-notice#c30f562
也接受完整 Git 地址:
dsh plugin --profile web add https://github.com/sorchk/dsh-event-notice.git
dsh plugin --profile web add git+ssh://git@github.com/sorchk/dsh-event-notice.git
| 事项 | 说明 |
|---|---|
--profile web |
装到哪个 profile;各 profile 的插件互不相通 |
| 自动启用 | 安装成功后 DSH 会把插件追加到该 profile package.json 的 dsh.profile.bundles,无需手改 |
| 生效时机 | 需重启该 profile 的 DSH 进程(网页界面)后才会加载 |
| 卸载 | dsh plugin --profile web remove dsh-event-notice |
| 更新 | dsh plugin --profile web update dsh-event-notice |
若 pnpm 拦截依赖的构建脚本,可按提示在 ~/.dsh/profiles/<profile>/pnpm-workspace.yaml 的 allowBuilds 下增加对应键(例如 dsh-event-notice: true)后重跑安装命令。
安装完成后,Web GUI 中会出现「插件 → 事件通知」配置页;设置弹窗左侧(「侧边卡片」之后)另有「事件通知」入口;会话输入框模型选择器左侧有铃铛按钮,用于单独开关当前会话的通知。
典型用法¶
1. 在配置页接通通道¶
路径:设置 → 事件通知 或 插件 → 事件通知。配置即改即生效。
通用项要点:
- 启用通知:总开关,默认开
- 所有会话默认通知:默认关;单会话覆盖优先
- 默认通知的事件:除「子任务完成」外四项默认开
- 通知标题前缀:默认
DSH,标题形如DSH · 任务完成 - 请求超时(毫秒):默认
10000
Gotify:填服务器地址(如 https://gotify.example.com);应用令牌经凭据引用名 DSH_EVENT_NOTICE_GOTIFY_TOKEN 写入凭据存储,配置页「应用令牌」留空表示保持原值。
Ntfy:填服务器地址与主题(默认 dsh);访问令牌引用名 DSH_EVENT_NOTICE_NTFY_TOKEN;匿名服务器可留空令牌。
Webhook:填完整地址;默认可用下列占位符:{{event}} {{title}} {{message}} {{sessionId}} {{sessionTitle}} {{parentTitle}} {{workspace}} {{cwd}} {{detail}} {{timestamp}}。
README 中一种常见优先级搭配示例如下(可按自己习惯调整):
| 事件 | Ntfy | Gotify |
|---|---|---|
| 任务完成 | 3 default | 5 |
| 子任务完成 | 3 default | 5 |
| 任务中断 | 4 high | 8 |
| 需要审批 | 5 max | 9 |
| 需要回答问题 | 5 max | 9 |
2. 单会话快速开关¶
输入框左侧铃铛按钮表示该会话实际生效状态:无小圆点表示跟随「所有会话默认通知」;有小圆点表示本会话已单独改过。点按在「跟随默认 / 关」之间切换;与全局默认一致时会删除覆盖记录。
也可在配置页「会话级覆盖」卡片中管理已设覆盖的会话,或直接改设置里的 sessionOverrides。
3. 发送测试通知¶
配置页上的「发送测试通知」会对每个已启用且配置完整的通道各发一条。请求走 DSH Web 上的本地路由 POST /dsh-event-notice/test,仅接受与 Host 一致的同源请求。
4. 载荷长什么样¶
Webhook 默认请求体示例(README):
{
"event": "task-complete",
"title": "DSH · 任务完成",
"message": "会话标题:收到\n任务正常完成\n工作区:dsh-event-notice",
"sessionId": "session-…",
"sessionTitle": "收到",
"parentTitle": "",
"timestamp": "2026-11-08T06:12:25.603Z"
}
子代理完成时 sessionTitle / parentTitle 字段会体现子代理标签与主会话标题;开启「子任务完成」后,event 为 subtask-complete。正文中的「工作区」是侧边栏工作区显示名,不是 cwd 路径(workspace、cwd 主要供 Webhook 模板占位符使用)。
适用场景与注意¶
适合需要在手机或桌面推送客户端(Ntfy / Gotify)或自建自动化(Webhook)里感知 DSH 运行状态的用户,例如长时间 Agent 任务、多子代理并行、审批敏感工具调用等。
安装前建议自行阅读仓库源码与许可证;插件以当前 DSH 进程的权限运行,向外发起的 HTTP 请求目标完全由你填写。社区目录站 SkillHub 与 DeepSeek / 幻方无官方从属关系,DSH 生态遵循「一切皆插件」的扩展方式,本插件属于其中的联网工具类。
推送 tag v* 时仓库 CI 可将版本发布到 npm(registry.npmjs.org);若你更习惯包管理器版本钉死,可使用 dsh plugin ... add github:sorchk/dsh-event-notice#v0.5.10 等形式固定 tag。
结尾¶
dsh-event-notice 把 DSH 里几类关键会话事件收敛成不含聊天正文的出站通知,并支持 Ntfy、Gotify、Webhook 三路并行与会话级铃铛开关。若要查阅维护说明与完整配置表,请以 GitHub README 为准。