跳到主要内容

dsh-plugin-completion-notify

已验证

dsh-plugin-completion-notify · v0.6.2 · MIT · Web 界面

Desktop notifications for dsh web: when a session finishes, or a popup is waiting for your approval, plan review, or answer, while you are not looking at it

安装

dsh plugin add dsh-plugin-completion-notify

用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。

源码

发布到 npm 但没有公开仓库。安装前请检查包内容。

标签

作者

说明文档

dsh-plugin-completion-notify

任务完成、或弹窗等待用户确认时弹出系统桌面通知的 dsh web 插件(dsh-plugin 社区插件)。

功能

  • 非当前会话完成 → 弹出系统通知(无论页面在前台还是后台)
  • 当前会话在后台完成(用户切走/最小化,document.hidden)→ 弹出系统通知
  • 当前会话在前台完成 → 不打扰(你看得到)
  • 弹窗等待用户处理时也通知,规则与完成时一致:
    • 审批(工具/权限等执行确认)、计划审阅(计划批准)、提问(等待回答)都会触发;正文按类型区分(「等待审批 / 计划待审 / 等待回答」)
    • 信号来自会话 UI 层的 ui-session pending-interactions feed(会话弹窗注册的会话级等待);非当前会话出现等待弹窗 → 弹出系统通知(无论页面前后台)
    • 当前会话的弹窗在页面后台打开 → 弹出系统通知;前台打开则不打扰(弹窗已在你眼前)
    • 同一等待只通知一次;等待被应答/会话移除后再次等待可再通知
  • General 设置页提供启用开关(默认开启,一个开关同时管完成与等待确认通知)
  • 权限在用户首次交互或开启开关时请求(浏览器要求手势)
  • 通知显示时长由系统设置控制(设置行内已写明入口),插件不做强制常驻,见已知限制

依赖

peer 依赖(npm 已发布):

  • @deepseek-ai/cordis
  • @deepseek-ai/dsh-client-locale
  • @deepseek-ai/dsh-client-runtime
  • @deepseek-ai/dsh-client-ui-settings
  • @deepseek-ai/dsh-client-ui-slots
  • @deepseek-ai/dsh-settings(host 半注册 settings 命名空间)
  • @deepseek-ai/schemastery(host 半 settings schema)
  • react

构建

pnpm install
pnpm run build

产物:lib/index.js(host 半,注册 ui-completion-notify settings 命名空间)、lib/client.js(浏览器半)。

安装

插件是 dsh.bundle 形态(声明配置层),一条命令即可安装进 profile:

dsh plugin --profile web add dsh-plugin-completion-notify

dsh plugin add 自动把包加入 dsh.profile.bundles 配置层并安装依赖。完成后重启 profile 生效:

dsh web   # 或 dsh --profile <name>

手动挂载(不通过 dsh plugin add)时在 profile 的 cordis.patch.yml 加:

- insert:
    - id: completion-notify
      name: dsh-plugin-completion-notify

发布

npm publish

GitHub 仓库添加 dsh-plugin 话题。

已知限制

  • 浏览器通知权限必须授予:首次交互时请求;被拒则静默
  • 通知显示的时长由系统控制,插件不强制常驻:Notifications API 没有时长参数。Windows 默认仅约 5 秒,可在「设置 → 辅助功能 → 视觉效果 → 在以下时间后关闭通知」调长(等价注册表值 HKCU\Control Panel\Accessibility\MessageDuration,本机实测为 5);macOS 在「系统设置 → 通知 → 浏览器」把提醒样式设为「提醒」即可保持到手动处理。系统的"勿扰/专注助手"也可能抑制横幅
  • 页面关闭后无通知(无 service worker push);页面级通知在页面关闭/刷新后即消失,无法跨页面常驻
  • 去重是页面生命周期内的内存态:刷新后,仍处于「已完成」或「等待确认」状态的会话可能补弹一次
  • 断线重连可能补弹一次:等待 feed 在重连/会话卸载时清空并由会话重建,无法区分「新等待」与「仍在等待的重现」
  • 等待通知在出现时判定一次:当前会话的弹窗若在前台出现(未通知),之后切到后台不会补发——与完成通知的规则一致
  • 等待信号依赖 ui-session pending 交互 feed(当前 dsh web 架构):运行时没有该 feed 的版本会自动退化为只保留完成通知