Notix-dsh:在 macOS 与 Windows 上为 DSH 推送桌面通知

前言

用 DeepSeek Harness(DSH)跑智能体时,常见情况是窗口在后台、你在做别的事:Agent 等你批准工具调用、等你回答问题、某次 turn 跑很久、任务失败或已经跑完,界面里都有事件,但你不一定立刻看到。自己盯着会话是一种做法;另一种是在桌面系统通知里收到提醒,再回到 DSH 处理。

Notix(npm 包名 notix-dsh)是社区维护者 QiangXian 发布的 DSH 插件,分类属于联网工具生态里的辅助能力:它监听 Harness 的共享事件面,在 macOS Notification Center 与 Windows Action Center 投递原生通知。插件以纯观察者方式工作,不注册 approval/answerer、不写 session 事件、不阻塞 Agent 循环。

这是什么

Notix 面向已在用 DSH 的开发者:一个 npm 包同时包含 Host 插件与 Plugins 设置页 UI,无需再单独安装 notix-dsh-ui。当前公开版本为 v0.3.0(MIT 许可证),依赖 Node ^22.18.0 或 >=24.0.0,DSH 引擎要求 >=0.2.1-rc.2 且 <0.3.0。

维护与源码:GitHub - QiangXian/notix-dsh;社区目录页:skillhub.cn/plugins/QiangXian/notix-dsh。目录站点与 DeepSeek / 幻方无官方从属关系,安装前仍应自行查看源码与许可证。

核心功能

下面按 README 已说明的行为归纳,不扩展未文档化的能力。

五类触发

可在设置卡片中分别开关,并配置阈值、提醒与静默时段:

  1. Approvals:需要用户批准时。
  2. Pending questions:有待回答问题。
  3. Long turns / background jobs:单次 turn 或后台任务耗时过长。
  4. Errors / tool failures:错误与工具失败。
  5. Completions:任务完成。

默认策略偏「安静」:去重键、按会话的错误冷却、静默时段(紧急项可绕过)、按通道重试与熔断;投递失败被隔离,不会影响 Agent 循环。

平台与投递通道

平台 通道 ID 说明
macOS macos-system 签名 helper → terminal-notifier → alerter → osascript
Windows 10/11 windows-system bundled PowerShell helper 发送 WinRT Toast
Linux 及其他 (不注册通道) 插件可加载,通知写入历史,投递为 no-op

运行时只注册与 process.platform 匹配的通道,同一份 profile 配置可在 macOS 与 Windows 间共用,不会在错误平台上拉起对方工具链。

扩展点

其他插件可通过 ctx.notix 发送通知或注册自定义投递通道;内置仍是 macOS / Windows 系统通道。

安装与启用

官方安装方式来自 README,勿用未文档化的 github:owner/repo 拼接命令。

Web GUI

  1. 打开 Web GUI,进入 Plugins。
  2. 使用页面上的添加插件操作安装 notix-dsh。
  3. 重启 对应 DSH 实例(Host 插件仅在进程启动时加载;设置卡片在 GUI 重载后出现)。

CLI

dsh plugin --profile <name> add <package> 会在 profile 目录内通过 pnpm 安装,并因包声明了 dsh.bundle 而更新 dsh.profile.bundles。

# 桌面 profile:先退出桌面应用(否则已加载插件仍在内存中)
dsh plugin --profile desktop add notix-dsh

# Web GUI profile(dsh web / 浏览器 GUI)
dsh plugin --profile web add notix-dsh

安装后重启该实例。可检查 profile 的 package.json 是否包含 bundle 项:

// ~/.dsh/profiles/<name>/package.json
{
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "notix-dsh"
      ]
    }
  }
}

任意 profile 名(如 headless、自定义名)均可使用同一安装命令;Host 半部与 profile 无关,在 macOS / Windows 上均可投递;仅带 GUI 的 profile 会显示 Notix 设置卡片。

升级与卸载

  • 自 npm 升级(桌面应用需先退出):dsh plugin --profile <name> add notix-dsh@latest,然后重启。
  • 配置保存在 profile 的 cordis.patch.yml 中 id: notix 下,升级后仍会读取。
  • 若曾安装独立的 notix-dsh-ui,v0.3.0 已内置 UI,应从 bundle 列表移除旧包。
  • 卸载:在 Web GUI 的 Plugins 页移除或禁用;或使用 CLI 自 profile 移除(README 卸载小节,此处从略)。

典型用法

经过上面的安装与重启,典型流程如下。

  1. 在 Plugins 或 Notix 设置卡片中打开需要的触发类型(批准、提问、长任务、错误、完成),按需调整阈值、提醒与静默时段。
  2. 将 DSH 窗口放到后台,继续本地工作;当 Agent 需要输入、运行过久、出错或完成时,在 macOS / Windows 上应收到系统通知(Linux 上仅记录历史,无桌面投递)。
  3. 点击通知或手动切回 DSH,在会话内完成批准或回答。

开发者在仓库 clone 中可用平台相关脚本做投递冒烟(需 repo clone,npm 包不含这些脚本路径):macOS 为 pnpm run notify-test,Windows 为 pnpm run notify-test:win(见 package.json scripts)。

适用场景与注意

适合谁:长时间用 DSH 桌面或 Web GUI、且主机为 macOS 或 Windows 的开发者;需要「离开窗口仍能知道 Agent 在等什么」时使用 Notix,而不是替代 DSH 内置会话 UI。

务必注意:

  • 插件以当前 DSH 进程权限 运行;安装前请阅读 源码与 LICENSE,确认可接受其读取的事件面与系统通知 API 行为。
  • Linux 上不要预期桌面弹窗;若主要环境是 Linux,Notix 的价值主要在历史记录与将来扩展通道,而非当前内置投递。
  • macOS 上多种 backend 并存时,仅签名 Notix helper 使用插件自有 bundle identity;Windows 依赖内置 PowerShell 5.1,README 称已在 Windows 11 上验证。
  • DSH 生态理念是「一切皆插件」;Notix 是社区包,星标与下载量会随时间变化,以 npm / GitHub 页面为准。

结尾

Notix-dsh 用单一 npm 包把 Host 通知与设置 UI 合在一起,以观察者模式监听批准、提问、长任务、错误与完成五类事件,在 macOS 与 Windows 上走原生系统通道,默认带 dedupe、静默时段与熔断,且不阻塞 Agent。若你要在 Harness 侧补一层桌面提醒,可按 profile 执行 dsh plugin --profile <name> add notix-dsh 并重启实例。

  • 目录页:https://www.skillhub.cn/plugins/QiangXian/notix-dsh
  • 仓库:https://github.com/QiangXian/notix-dsh
  • npm:https://www.npmjs.com/package/notix-dsh
羽毛球分组比赛记分
小程序二维码

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

Xiaoye