DeepSeek Harness (DSH) 在后台运行 agent 时,用户常因离开终端而错过任务完成的时间点。dsh-task-notifier 是一个社区插件,它监听 DSH 内部的任务结束信号,将这些信号转化为操作系统的原生通知(Windows 吐司、Linux 桌面通知、macOS 通知中心),告知用户“某某任务已经完成”。
插件定位¶
- 名称:dsh-task-notifier
- 类型:DeepSeek Harness 社区插件
- 维护者:yuan-source-666
- 许可证:MIT
- 核心价值:将 DSH 内部的“任务结束”信号接出,交给操作系统的通知中心。
核心能力¶
该插件监听五种 DSH 内部任务结束信号:
- 轮次结束 (
onTurnEnd):对话任务答完。 - 子代理结束 (
onSubagentEnd):委派的子任务结束。 - 后台作业结束 (
onJobDone):依赖ctx.jobs,如pnpm test。 - 目标标记完成 (
onGoalComplete):目标状态变为完成或阻塞。 - 工作流结束 (
onWorkflowEnd):工作流任务结束。
插件提供以下特性:
* 跨平台支持:Windows、Linux、macOS 均可使用。
* 本地化:支持中英文本地化。
* 灵活配置:提供独立开关控制各类信号,支持去重窗口(默认 2 秒)。
* 自定义投递:支持自定义命令覆盖内置渠道。
* 事件发布:任务完成时发布 task-notifier/completed 事件,供其他插件订阅。
安装与启用¶
以下命令在 DSH 仓库根目录执行。
方式一:直接跑源码(推荐验证)¶
先重写开发层占位路径,然后启动:
node scripts/write-dev-patch.mjs
cd /path/to/deepseek-harness
pnpm dsh web --patch "它打印出来的那个 load.dev.patch.yml 绝对路径"
打开 http://127.0.0.1:3080,Agent 答完任务时桌面会弹出通知。
方式二:安装组合包¶
dsh plugin --profile demo add E:/ai_agent_workspace/deepseek_harness/dsh-task-notifier
dsh --profile demo
方式三:GitHub 安装¶
dsh plugin --profile demo add github:yuan-source-666/dsh-task-notifier
安装后可通过 dsh --profile demo --dump-config 查看配置是否生效。
配置说明¶
配置项位于 config: 字段中。以下是常用默认配置:
config:
enabled: true # 总开关
locale: 'zh' # 语言:'zh' 或 'en'
onTurnEnd: true
onSubagentEnd: true
onJobDone: true
onGoalComplete: true
onWorkflowEnd: true
onlySuccess: false # 是否仅通知成功
includeChildSessions: false # 是否通知子会话轮次
dedupeMs: 2000 # 去重窗口(毫秒)
command: [] # 自定义投递命令 argv
timeoutMs: 15000 # 投递超时时间
通知模板占位符:
* {kind}:任务类型(如“对话任务”)
* {task}:任务名
* {outcome}:结束原因
* {ref}:会话或任务 ID
自定义投递:
command 数组非空时,插件将使用该命令投递通知,而非系统原生渠道。命令不支持 shell,直接拼接 {title} 和 {body} 字符串。
已知边界与注意事项¶
- 运行环境:通知发生在运行
dsh的机器上,而非浏览器端。 - 标题生成:会话标题由 DSH 标题服务异步生成,未生成时退回最近一条人类指令。
- 依赖关系:
onJobDone依赖组合包中存在ctx.jobs。 - 去重:目标自动续跑时,每一轮都是新信号,需依赖
dedupeMs或关闭onTurnEnd来减少打扰。 - 中断处理:崩溃修补的
interrupted轮次不会触发通知。
相关链接¶
- GitHub:https://github.com/yuan-source-666/dsh-task-notifier
- 社区目录:https://www.skillhub.cn/plugins/yuan-source-666/dsh-task-notifier