前言¶
在 DSH 里跑长任务、子 agent 或 workflow 时,进程往往占着终端或跑在远端。任务结束、会话暂停这类事件若只靠回来看日志,容易错过时机。邮件或第三方推送可以补位,但需要额外服务;若你日常就在 Mac 上工作,更直接的做法是把 Harness 里的事件转成系统级桌面气泡。
下面介绍社区插件 dsh-mac-notify(维护者 r-ayin):监听 DSH 事件,经 SSH 把通知投递到 Mac 本机的小型 HTTP 监听器,再由 terminal-notifier 弹出通知。插件归类为「客户端」,仓库见 GitHub,目录页见 SkillHub。SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
dsh-mac-notify 是 DeepSeek Harness(DSH)的 Cordis 插件(cordis peer >=4.0.0-rc <5),由 dsh-super-injector 的 dev_scaffold_plugin 生成。它解决的是:在 DSH 侧感知选定事件后,无需你盯着终端,也能在指定 Mac 上看到桌面通知。
监听哪些事件¶
根据仓库 README,插件会响应以下 DSH 事件:
- 任务完成
- 会话暂停
- 子 agent 结束
- workflow 完成
具体展示文案与触发细节以插件源码为准;安装前建议阅读仓库与 MIT 许可证。
工作原理(两端分工)¶
- DSH 侧(跑 Harness 的环境):插件在事件发生时,通过 SSH 向 Mac 发起请求。
- Mac 侧:在本机
127.0.0.1:18923运行一个小型 HTTP 监听器,接收请求后调用 terminal-notifier 显示气泡。
通知经 SSH 转发到 Mac 上的监听器,而不是在 DSH 进程里直接调用 macOS API,因此 DSH 可以跑在 Linux 或另一台机器上,只要 SSH 能连到那台 Mac。
配置¶
在 DSH 进程环境中设置:
| 变量 | 说明 |
|---|---|
DSH_MAC_NOTIFY_SSH |
接收通知的 Mac 的 SSH 目标,例如 user@mac.local。必填;未设置时插件会跳过通知。须支持非交互式密钥登录(BatchMode)。 |
Mac 监听器侧(示例脚本)可通过环境变量调整:
| 变量 | 说明 |
|---|---|
NOTIFY_PORT |
监听端口(默认与 README 中 18923 一致) |
NOTIFIER_BIN |
terminal-notifier 可执行文件路径 |
Mac 端:监听器与 terminal-notifier¶
在要弹通知的 Mac 上先安装 terminal-notifier:
brew install terminal-notifier
在插件仓库的 Mac 上运行自带示例监听器:
node examples/mac-notifier-listener.mjs
监听器绑定本机 127.0.0.1:18923(端口可用 NOTIFY_PORT 修改)。若希望开机常驻,README 建议用 LaunchAgent 包装该进程;具体 plist 需自行按本机路径编写,仓库仅给出方向说明。
确保从 DSH 所在机器到该 Mac 的 SSH 已配置好公钥,且能在无密码提示下登录。
安装与注入¶
仓库标明为预构建,无需单独 build 步骤。在 注入器环境 内,对本插件目录执行:
dev_inject_plugin <本目录>
将 <本目录> 换成本地 clone 或解压后的 dsh-mac-notify 路径。资料中未提供 dsh plugin add github:... 一类命令,请勿凭插件名拼接安装命令。
运行环境要求 Node.js >= 20(见 package.json 的 engines)。
典型用法串联¶
- 在 Mac 上安装
terminal-notifier,启动node examples/mac-notifier-listener.mjs(或 LaunchAgent 等价方式)。 - 配置 DSH 环境变量
DSH_MAC_NOTIFY_SSH=user@你的Mac主机名或地址。 - 在注入器环境中对插件目录执行
dev_inject_plugin,重启或按你当前的 DSH 插件加载方式使插件生效。 - 在 DSH 中触发会发出上述事件的操作(例如等待任务完成),确认 Mac 上出现气泡。
适用场景与注意¶
适合:主要在 Mac 上开发、DSH 跑在本地或远端 Linux/另一台机器,且已习惯用 SSH 管理 Mac 的开发者。
注意:
- 插件以 当前 DSH 进程的权限 运行,并会通过 SSH 在 Mac 上执行监听器所触发的通知逻辑;安装前应通读 源码 与 MIT 许可证,确认 SSH 目标与监听端口暴露范围符合你的安全策略。
- Mac 监听器默认只监听 loopback;仍需保证 SSH 账户与密钥不被滥用。
- 未设置
DSH_MAC_NOTIFY_SSH时不会发通知,便于在未配置 Mac 的环境中静默跳过。
结尾¶
dsh-mac-notify 把 DSH 的任务完成、会话暂停、子 agent 结束与 workflow 完成四类事件,收敛成 Mac 桌面上的 terminal-notifier 气泡,适合不想一直盯着终端的 Harness 使用方式。