dsh-mac-notifications:为 DeepSeek Harness 接入 macOS 原生通知

前言

用 DeepSeek Harness(DSH)跑长任务时,窗口不在前台,很容易错过智能体提问、工具授权请求,或者不知道一轮任务已经结束、在哪一步失败。常见做法是盯住终端、开浏览器标签,或自己写脚本接 Webhook——在 macOS 上,更直接的做法是把关键节点交给系统通知中心。下面介绍的 dsh-mac-notifications 是社区维护的 DSH 客户端类插件,在智能体需要你选择、任务完成、任务异常中断等时机,通过 Notification Center 弹出提醒;通知以 DeepSeek Harness 应用自身 的名义显示(应用名称与鲸鱼图标),而不是脚本编辑器。

这是什么

  • 名称:dsh-mac-notifications(Cordis 注册 id:mac-notifications)
  • 维护者:zhiquanchi
  • 分类:客户端(随 DSH Web GUI 加载浏览器端模块)
  • 许可证:MIT(package.json 版本 1.0.0)
  • 定位:为 DSH 增加原生 macOS 通知,覆盖提问、授权、完成、失败等 Harness 生命周期节点。

插件与 DeepSeek 官方无从属关系;安装即运行第三方代码,安装前应自行查阅源码与许可证。

核心功能

插件监听 Harness 事件,按场景弹出对应文案(默认中文,可切英文):

场景 触发时机 通知示例
需要你做出选择 智能体调用 ask_user_question 「需要你的选择」+ 问题内容
需要你的授权 工具请求授权(approval 流程) 「需要你的授权」+ 工具名与原因
任务完成 一轮任务正常结束(turn/end completed) 「任务已完成」+ 会话标题
任务异常中断 步骤/回合出错、被中止、会话级失败 「任务异常中断」+ 错误信息

防打扰方面,README 中写明的行为包括:

  • 会话仍有后台任务(jobs)运行时,抑制「任务完成」通知,避免把「等待后台任务」误报为完成;
  • 子智能体(subagent)会话默认不通知,只通知主会话;
  • 同一回合的 agent/error 与 turn/end error 去重,只报一次;
  • 完成通知带冷却时间(默认 3000 毫秒);
  • 配置写在 cordis.patch.yml 的 config 中,改动后插件可热重载。

工作原理(简述)

插件分 Host 与 Client 两段:

  1. Host 端(Node,index.js):监听 Harness 事件,经本机 SSE 端点 /plugin/dsh-mac-notifications/events 把内容推给 Web GUI。
  2. Client 端(client.js,约 1 KB):随 Web GUI 加载,用浏览器 Notification API 弹出通知。

因此通知中心里显示的是 DeepSeek Harness 应用名称与图标。安装或更新插件后需刷新一次 Web GUI 页面以加载 Client 模块。无 Web GUI 连接时(例如 headless profile、页面已关闭),可选 fallbackOsascript: true 回退到 osascript 通知(归属脚本编辑器;默认关闭)。

平台:仅 macOS 生效(依赖 /usr/bin/osascript);其他平台插件空转,不发通知。

安装与启用

推荐用 DSH CLI 从 GitHub 安装(按你实际使用的 profile 替换 web):

dsh plugin --profile web add github:zhiquanchi/dsh-mac-notifications
# 其他 profile 同理,如 headless:
dsh plugin --profile headless add github:zhiquanchi/dsh-mac-notifications

也可用 npm 包名安装:

dsh plugin --profile web add dsh-mac-notifications

或在 DSH 桌面端 / Web GUI「插件」页选择「从目录安装」;亦可手工在 profile 的 cordis.patch.yml 中注册:

- insert:
    - id: mac-notifications
      name: 'dsh-mac-notifications'
      config: {}

插件已提交 DSH.SO 等社区市场,桌面端「插件 → 发现」可搜索安装(部分市场收录可能有数小时同步延迟)。

配置

所有开关在插件对应行的 config 字段中设置:

字段 类型 默认值 说明
questions boolean true ask_user_question 时通知
approvals boolean true 工具授权请求时通知
completed boolean true 任务正常完成时通知
errors boolean true 异常中断/失败时通知
includeSubagents boolean false 是否包含 subagent 会话
suppressWhenJobsRunning boolean true 有后台 jobs 时抑制完成通知
sound boolean true 是否播放系统默认提示音
language 'zh' \| 'en' 'zh' 通知文案语言
cooldownMs number 3000 完成通知最小间隔(毫秒)
fallbackOsascript boolean false 无 Web GUI 时回退 osascript

完整示例:

- insert:
    - id: mac-notifications
      name: 'dsh-mac-notifications'
      config:
        questions: true
        approvals: true
        completed: true
        errors: true
        includeSubagents: false
        suppressWhenJobsRunning: true
        sound: true
        language: zh
        cooldownMs: 3000
        fallbackOsascript: false

提示音为系统默认(浏览器通知不支持自定义音效);可用 sound: false 静音。通知权限沿用 DeepSeek Harness 应用自身的系统授权。

典型用法

  1. 安装插件并刷新 Web GUI。
  2. 保持 macOS 已为 DeepSeek Harness 开启通知权限。
  3. 在后台或最小化窗口下继续跑任务;当智能体提问、请求授权、回合完成或出错时,在通知中心查看摘要。
  4. 若只需失败提醒,可将 questions、approvals、completed 设为 false,保留 errors: true。
  5. headless 且无浏览器连接、仍要桌面提醒时,再考虑开启 fallbackOsascript(接受脚本编辑器归属)。

点击通知本身不会把应用带到前台(系统限制);问题正文仍使用模型输出原文,仅固定标题类文案随 language 切换。

适用场景与注意

适合:在 macOS 上使用 DSH Web / 桌面端,需要离开窗口仍能感知任务状态与交互请求的开发者。

注意:

  • 插件以当前 DSH 进程权限运行,安装前请审查 GitHub 仓库 源码。
  • 子 agent 并行、后台 jobs 等场景已内置抑制与去重逻辑;若需 subagent 也提醒,设置 includeSubagents: true。
  • 社区目录(如 SkillHub 插件页)与 DSH.SO 等为独立站点,不是 DeepSeek 官方应用商店。

结尾

dsh-mac-notifications 把 DSH 里「要问人、要授权、跑完了、出错了」四类节点接到 macOS 通知中心,并尽量保持通知归属为 DeepSeek Harness 本体。查阅详情与更新:

羽毛球分组比赛记分
小程序二维码

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

小夜