dsh-notify:在 Windows 上为 DeepSeek-Harness 添加桌面通知

前言

在 DeepSeek-Harness(DSH)里把任务交给智能体后,如果中途要处理别的事,很容易错过任务完成或需要你确认的时机。已有做法要么只能靠窗口闪烁,要么需要在命令行或网页里反复查看状态。dsh-notify 在 Windows 上提供原生 Toast 通知:任务完成、出错、或智能体提问且无人回应时,会在系统托盘弹出提醒;点击即可把 DSH 带到前台。

这是什么

dsh-notify 是一个为 DeepSeek-Harness 提供桌面通知能力的插件,由维护者 lixiangdong122333 发布。它监听 DSH 的运行事件,在符合条件的时机通过 Windows Toast 提示你,并提供一个设置页面来控制通知行为。

核心功能

插件会在以下三种场景触发 Toast:

  • 任务正常完成:标题为 DSH · 任务完成,内容为智能体最后返回的回答。
  • 任务出错或意外终止:标题为 DSH · 任务已结束。
  • 智能体提出问题且 6 秒内无人回应:标题为 DSH · 需要你确认,内容为问题文本。

点击 Toast 或其中的「打开 DeepSeek-Harness」按钮,会调用 dsh://notify URL 处理器将 DSH 窗口恢复到前台:窗口最小化则恢复,关闭到托盘则重新打开。

插件会根据页面是否可见且当前标签页为前台来决定是否静音:如果你已经在 DSH 窗口里,就不会再弹出通知。计划审查(plan reviews)默认不通知,由其自身的审批 UI 负责。

所有行为都可以在设置中调整。

安装与启用

插件发布在 npm,通过 DSH 的插件中心安装:

dsh plugin --profile web add @cmwl1231/dsh-notify

在桌面应用中使用时,替换 profile:

dsh plugin --profile desktop add @cmwl1231/dsh-notify

也可以直接从仓库安装:

dsh plugin --profile web add github:lixiangdong122333/dsh-notify

安装前请先退出 DSH,安装完成后重新启动。新添加的插件包会在启动时读取,不会在运行中热加载。

配置

在 DSH 的 Settings → Notifications 或 Settings → Plugins → dsh-notify 打开插件设置页。该设置页会编辑你当前 profile 的 cordis.patch.yml 中 dsh-notify 这一行,并立即应用更改;页面顶部有一个「Send a test notification」按钮,可用于验证整个通知链路正常。

也可以直接编辑 cordis.patch.yml 中的配置块。下面是默认配置示例,所有字段均为可选:

- id: dsh-notify
  config:
    onTurnEnd: true              # 是否在回合结束时通知
    notifyEndKinds:              # 需要通知的结束类型
      - completed
      - error
      - max-tokens
    minTurnMs: 0                 # 忽略短于该时长的回合(毫秒)
    notifyQuestions: true        # 是否为无人回答的问题通知
    questionDelayMs: 6000        # 问题等待多久后弹出通知(毫秒)
    notifyPlanReviews: false     # 是否通知计划审查
    skipWhenFocused: true        # 当前 DSH 标签页在前台时是否静音
    skipWhenOthersRunning: true  # 其他会话仍在运行时是否静音
    bodySource: answer           # 通知正文来源:answer | prompt | none
    bodyLength: 150              # 通知正文最大字符数
    sound: default               # 声音:default | silent | important
    titleCompleted: "DSH · 任务完成"
    titleEnded: "DSH · 任务已结束"
    titleQuestion: "DSH · 需要你确认"

forked 和 interrupted 是 DSH 内部的会话交接,不属于完成的任务,因此不作为通知端点。

工作原理

插件是一个 Cordis 插件,通过 apply(ctx) 注册监听器。

  • 回合(turns):DSH 向会话日志提交 turn/end 事件。插件跟随该事件流,在回合结束时弹出通知,跳过子代理会话和用户主动取消的回合。
  • 问题:user-questions/request 事件在 web 答案处理之前到达插件。插件会暂存该请求,并在 questionDelayMs 时间内未收到回答时弹出通知并让位,之后正常答案处理继续。插件不会回答,也不会干扰屏幕上的问题卡片。
  • 聚焦:由宿主提供的脚本报告标签页可见性和聚焦状态,作为判断「用户当前已经能看到 DSH」的可靠信号。
  • 通知投递:notify.ps1 通过 WinRT 向系统发送 Toast,使用应用在「开始菜单」中的快捷方式作为应用标识。Windows 从注册表 AppUserModelId 解析应用名,而不是从 Toast XML,因此脚本会在每次发送前重写该注册表条目,避免标题显示为原始快捷路径。

系统要求

  • Windows 10 或 11
  • Windows PowerShell 5.1(所有受支持 Windows 默认自带)
  • DeepSeek-Harness 需要为桌面应用安装了开始菜单快捷方式

适用场景与注意

dsh-notify 适用于在 Windows 上使用 DSH 进行自动化任务、智能体编排的开发者。插件以当前 DSH 进程的权限运行,安装前建议查看源码与许可证(MIT),确保与你的工作流和权限模型兼容。

结尾

dsh-notify 将 Windows 原生通知能力集成到 DeepSeek-Harness 中,让你在切换到其他任务时,也能在任务完成或需要介入时被及时拉回。插件提供了一组可配置的行为,既能保持界面安静,又能在关键节点发出提醒。

  • 插件目录页:https://www.skillhub.cn/plugins/lixiangdong122333/dsh-notify
  • GitHub 仓库:https://github.com/lixiangdong122333/dsh-notify
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜