在 DeepSeek Harness (DSH) 的开发或使用流程中,模型完成一轮回复后,通常需要手动切换窗口或等待状态变化。如果正在处理其他任务,很容易错过这一时机。dsh-done-notifier 插件解决了这个问题。

它是一个客户端插件,由 tdeluna024-ui 维护。当模型完成回复并进入 idle 状态时,它会弹出 macOS 系统通知并播放提示音。

核心功能

  • 状态触发:监听宿主事件 agent/status,仅在状态从 running 回到 idle 时触发一次。
  • 系统通知:弹出 macOS 横幅,标题为 DeepSeek,正文为 模型已完成,等你回复。
  • 音频提示:使用系统命令 afplay 播放随包携带的童声提示音(真人神经语音合成)。
  • 对话过滤:只通知顶层对话,忽略子代理(subagent)的结束,避免通知轰炸。
  • 防重复触发:单轮内模型连续调用多个工具期间,状态保持 running,不会重复触发。
  • 零依赖:纯 JS 实现,无需构建授权,从 GitHub 直装即可。

安装

推荐使用官方 CLI 进行安装:

dsh plugin --profile <你的 profile 名> add github:tdeluna024-ui/dsh-done-notifier

安装完成后,需要重启 DSH 生效。

若 dsh 命令未配置在 PATH 中,可使用完整路径:

node <dsh 安装根目录>/apps/cli/lib/bin.js plugin --profile <name> add github:tdeluna024-ui/dsh-done-notifier

配置与自定义

  • 提示音替换:插件内置了童声提示音。若需更换,替换 assets/notify-kid.mp3 即可。afplay 支持的格式包括 mp3、aiff、m4a 和 wav,保持文件名一致即可。
  • 横幅文案:如需修改通知标题和正文,可在 index.js 顶部修改 TITLE 和 BODY 常量。

注意事项

  • 环境依赖:插件依赖系统自带的 osascript 与 afplay(macOS 原生支持)。DSH 的 profile 需包含提供 agents 与 shell 服务的宿主组合(@deepseek-ai/dsh-base 即满足)。
  • 平台限制:非 macOS 平台会打印警告并跳过通知功能,不会影响 DSH 的正常运行。
  • 权限说明:插件以当前 DSH 进程的权限运行,安装前建议检查源码与许可证。

结语

该插件通过简单的系统级反馈,解决了在多任务场景下漏掉模型回复的问题。相关代码与文档位于: