前言¶
用 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/enderror 去重,只报一次; - 完成通知带冷却时间(默认 3000 毫秒);
- 配置写在
cordis.patch.yml的config中,改动后插件可热重载。
工作原理(简述)¶
插件分 Host 与 Client 两段:
- Host 端(Node,
index.js):监听 Harness 事件,经本机 SSE 端点/plugin/dsh-mac-notifications/events把内容推给 Web GUI。 - 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 应用自身的系统授权。
典型用法¶
- 安装插件并刷新 Web GUI。
- 保持 macOS 已为 DeepSeek Harness 开启通知权限。
- 在后台或最小化窗口下继续跑任务;当智能体提问、请求授权、回合完成或出错时,在通知中心查看摘要。
- 若只需失败提醒,可将
questions、approvals、completed设为false,保留errors: true。 - headless 且无浏览器连接、仍要桌面提醒时,再考虑开启
fallbackOsascript(接受脚本编辑器归属)。
点击通知本身不会把应用带到前台(系统限制);问题正文仍使用模型输出原文,仅固定标题类文案随 language 切换。
适用场景与注意¶
适合:在 macOS 上使用 DSH Web / 桌面端,需要离开窗口仍能感知任务状态与交互请求的开发者。
注意:
- 插件以当前 DSH 进程权限运行,安装前请审查 GitHub 仓库 源码。
- 子 agent 并行、后台 jobs 等场景已内置抑制与去重逻辑;若需 subagent 也提醒,设置
includeSubagents: true。 - 社区目录(如 SkillHub 插件页)与 DSH.SO 等为独立站点,不是 DeepSeek 官方应用商店。
结尾¶
dsh-mac-notifications 把 DSH 里「要问人、要授权、跑完了、出错了」四类节点接到 macOS 通知中心,并尽量保持通知归属为 DeepSeek Harness 本体。查阅详情与更新: