zhengjy01/dsh-notify
zhengjy01★ 0JavaScript最后同步: 2026-08-15
System-level desktop notifications for DeepSeek Harness: turn-completion / workflow-end banners and a modal approval alert (macOS osascript, Linux notify-send)
README 摘要
dsh-notify — 系统级弹窗提示插件 DSH 服务端插件:在 操作系统层面 弹出系统通知,提醒你 DSH 里的重要事件,这样你不需要一直盯着浏览器页面。 触发时机 事件 弹窗类型 默认 主会话任务回复完成( turn/end completed,非子代理会话) 系统横幅「会话名 · 任务完成」 开 主会话任务 出错 ( turn/end reason=error) 模态弹窗 「会话名 · 任务失败」+ 提示音 开 主会话任务中断( turn/end reason=aborted / max-tokens / blocked) 系统横幅「会话名 · 任务中断」 开 单个工具调用失败 ( tools/result isError) 系统横幅「会话名 · 工具失败」 开 目标完成 ( goal/changed phase=complete) 系统横幅「会话名 · 目标已完成」 开 目标受阻 ( goal/changed phase=blocked) 模态弹窗 「会话名 · 目标受阻」 开 工作流执行完成( tool-workflow/run-end ) 系统横幅「会话名 · 工作流执行完成」 开 需要人工确认:工具请求权限( approval/asked ) 模态弹窗 「会话名 · 需要人工确认」+ 提示音 开 权限请求被自动拒绝(策略为 never ) 系统横幅「会话名 · 权限请求(已自动拒绝)」 开(随上项) 子代理(后台子任务)回合结束( turn/end ,子代理会话) 系统横幅「会话名 · 子任务完成」 关 说明: - 标题带会话名 :所有弹窗标题使用对应会话的名称(取自会话的 session/title 事件),超长自动截断(18 字符 + …);没有标题时回退到会话 ID 前 8 位。 - 工具失败防刷屏 :同一会话内两次工具失败提醒默认至少间隔 60 秒( toolErrorCooldownMs );也可用 toolErrorAllowlist 只提醒关键工具(如 ["bash", "ssh exec"] )。 - 严重度分级 :真正失败(出错)、目标受阻和需要人工审批 → 模态弹窗 (必须点击确认)并播放提示音;完成、中断、自动拒绝等 → 通知中心横幅(不打断操作)。 - macOS :模态用 osascript display alert ... as critical ,横幅用 display notification ; Linux :统一 notify-send ,模态场景用 -u critical (紧急级别,常驻直到点击); 其他平台 :仅记录日志。 - 权限策略为 ask 时,审批请求弹出模态对话框提醒你去 DSH 界面审批;策略为 never 时请求会被自动拒绝,只发一条横幅告知「已自动拒绝」,不会弹模态框打扰你。 - …
在 GitHub 查看完整 README →