在 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 进程的权限运行,安装前建议检查源码与许可证。
结语¶
该插件通过简单的系统级反馈,解决了在多任务场景下漏掉模型回复的问题。相关代码与文档位于: