Saltar al contenido principal
Y

dsh-approval-alert

yangluoup/dsh-approval-alert

DeepSeek Harness approval alert — desktop notification + sound + tab-title flash when a session waits for an approval or a user question, so you never leave dsh waiting while you are away. v2 adds host-side system notifications fired from the dsh process,

Instalar

dsh plugin --profile web add github:yangluoup/dsh-approval-alert

README

dsh-approval-alert

DeepSeek Harness(dsh)审批提醒插件:当会话等待审批等待你回答提问时,即使你在浏览器的其他标签页刷视频、或者在使用其他软件,也会弹系统通知、响提示音、标签页标题闪烁提醒你回 dsh 处理,避免会话一直干等。

特性

  • ✅ 同时覆盖两种"卡住等你"的场景:审批(approval)与用户提问(question)
  • ✅ 三种提醒手段:桌面通知(Web Notification)+ 提示音(WebAudio)+ 标签页标题 [审批]/[提问] 前缀
  • ✅ 重复提醒:未处理期间按设定间隔(默认 30s)重复提醒,直到你处理或切回页面
  • ✅ 设置页开关:总开关 / 提示音 / 重复间隔 / "开启通知并测试"按钮
  • ✅ 通知内容自动带上审批工具名、原因或提问内容
  • v2 主机端通知:由 dsh 进程直接弹系统通知(node-notifier),浏览器标签页关闭、没有 GUI 连接也能提醒
  • ✅ 偏好存 localStorage,无服务器依赖

安装

从 npm 安装(发布后)

dsh plugin --profile web add dsh-approval-alert
# 或
npm i -g dsh-approval-alert   # 若作为全局插件分发

使用

  1. 打开 dsh web → 设置 → 审批提醒
  2. 点击 「开启通知并测试」 授权浏览器通知权限(浏览器要求权限必须来自点击手势)
  3. 按需调整:提示音、重复提醒间隔(0 = 不重复)
  4. 之后当会话需要审批/提问而你不在页面上时,就会收到提醒;点击通知可切回 dsh 窗口

工作原理

浏览器端(v1)

  • 插件注册到客户端 conversation.input.dock 插槽(与官方 todo / 队列面板同插槽,多渲染、互不冲突),用套件提供的 useSession 钩子订阅当前会话快照的 pending 列表
  • 过滤出 approval / question 两种 pending(与 dsh 自带审批弹窗、提问面板同源数据
  • 挂载期间若页面隐藏或失焦:立即提醒一次,并按设定间隔重复
  • 处理完成(pending 消失)或你切回页面(visibilitychange / focus)→ 停止提醒、恢复标题
  • 通知 tag 按审批/提问 id 区分:同一 pending 的重复提醒合并不堆叠,不同 pending 各弹各的

主机端(v2)

  • 主机半(lib/index.js仅监听 approval/asked / approval/decided 会话事件(纯观察者,不触碰 approval/request waterfall,避免干扰 GUI 审批通道)
  • 每次 approval/asked延迟 delayMs(默认 5s)检查:若该审批仍未被应答(你没答)→ 弹系统通知;若 approval/decidedunavailable 结束(无 GUI 连接、无人应答)→ 立即通知
  • 通知用 node-notifier(Windows snoretoast / macOS terminal-notifier / Linux notify-send),由 dsh 进程直接发送,与 UI 形态无关
  • 配置 host-config.json(插件目录内):{ "enabled": true, "delayMs": 5000 },改完即生效,无需重启
  • 说明:浏览器开着时,v2 的延迟通知相当于一条"跟进提醒";只想用浏览器端提醒可把 enabled 设为 false

环境兼容性(FAQ)

使用环境v1 浏览器通知声音/标题v2 主机端通知
Chrome / Edge(普通标签页)
Chrome / Edge「安装为应用」独立窗口
桌面端(Electron 内核)✅(Chromium 支持 Notification)
桌面端(系统 WebView,如 Tauri / WebView2)⚠️ 可能不支持(无 Notification API 与权限 UI)
无 GUI / 浏览器关闭
  • v2 与 UI 形态无关:由 dsh 进程(node 侧)经 node-notifier 发送,浏览器、桌面端、CLI 都适用
  • v1 依赖渲染环境:Chrome/Edge(含安装为应用)与 Electron 支持 Web Notification;系统 WebView(WebView2 / WKWebView)通常不支持 → v1 通知静默失效,但声音、标题闪烁不受影响,v2 兜底

浏览器通知权限授权(Edge / Chrome)

  1. 打开 dsh 页面 → 设置 → 审批提醒
  2. 点击 「开启通知并测试」——若显示 权限: default,浏览器会弹出授权请求,点 允许
  3. 若之前误点了"阻止"(显示 权限: denied),requestPermission() 不会再询问,必须手动改回:
    • Edge:地址栏左侧网站信息图标 → 网站权限通知允许;或 Edge 设置 → Cookie 和网站权限 → 通知 → 找到 127.0.0.1 → 允许
    • Chrome:地址栏左侧锁形图标 → 网站设置通知允许;或 Chrome 设置 → 隐私和安全 → 网站设置 → 通知 → 找到 127.0.0.1 → 允许
  4. 改完刷新页面,再点「开启通知并测试」验证

Windows 弹不出通知的排查(与浏览器无关)

  1. 设置 → 系统 → 通知 → 「获取来自应用和其他发送者的通知」 开启
  2. 应用列表中找到 Chrome / Edge → 通知开启
  3. 请勿打扰(专注助手)关闭
  4. 浏览器 / dsh 不要以管理员身份运行(Windows 会抑制提权进程的 toast)
  5. 通知中心有旧队列时先清空(tag 冲突会导致新通知被替换进队列而不弹出)

未来方向(Roadmap)

  • 工作区级提醒 —— 当前只提醒当前会话;后续可扩展为工作区内任意会话的审批都提醒(侧栏"等待审批"角标同源数据)
  • 通知点击跳转 —— 目前点击通知只聚焦窗口;后续可携带会话/审批 id 直接跳转到对应会话

许可

MIT

Plugins relacionados