DSH 任务栏发光提醒插件

前言

在后台跑 DSH 时,一轮对话结束后、或者弹出审批/提问需要处理,往往需要切回窗口确认。手动切屏容易漏掉,频繁切屏又打断工作流。这个插件通过 Windows 原生的 FlashWindowEx 接口,让任务栏上的 DSH 图标闪烁,把注意力拉回桌面。

插件定位

这是一个 DSH 桌面版(Windows)的客户端插件,由 hanmoxu9 维护。它不依赖额外编译或 npm 包,拿到目录拷贝过去即可使用。核心价值是:在 DSH 后台运行或被其他窗口遮挡时,用系统级任务栏闪烁替代手动切屏,降低漏单率。

核心功能

触发条件

插件在以下三种情况会触发闪烁:

  • 一轮对话跑完:agent 从 running 回到 idle 时。
  • 等你点审批:触发 approval/request 事件时。
  • 等你回答问题:触发 user-questions/request 事件时。

窗口在前台时不闪——你正看着屏幕,插件会跳过本次触发。

闪烁方式

使用 Windows 原生的 FlashWindowEx,参数为 FLASHW_ALL | FLASHW_TIMERNOFG。闪烁节奏约 0.5 秒一次,直到 DSH 窗口被激活。如果同一秒内多个事件发生,会合并为一次闪烁。

原理与限制

插件运行在 DSH 桌面版进程的子进程中,通过 process.ppid 定位到主窗口。原生调用走桌面版运行时自带的 koffi 库(LibreOfficeKit 使用的那个),无需额外依赖。如果系统设置里关闭了任务栏闪烁,或使用了会吞掉闪烁的第三方任务栏工具,可能看不到效果。

插件只在 DSH 桌面版 + Windows 下有效。非 Windows / 非桌面版(如 dsh web)会正常加载但不会触发,status 页面会显示 native.available: false。

安装与启用

前置条件

  • DSH 桌面版
  • Windows 操作系统

插件不依赖任何 npm 包,拿到目录后直接使用。

安装方式

方式一:插件页安装

  1. 打开 DSH 客户端。
  2. 在侧栏点击「插件」。
  3. 选择「添加插件」。
  4. 填入插件目录的绝对路径(支持 npm 包名或 GitHub 地址)。
  5. 安装后重启 DSH。

方式二:命令行安装

在终端中执行:

dsh plugin --profile desktop add link:<目录的绝对路径>

安装后重启一次 DSH,浏览器半区会在启动时扫描插件包。

卸载

方式一:插件页卸载

  1. 打开「插件」页面。
  2. 找到 dsh-taskbar-glow。
  3. 点击卸载。

方式二:命令行卸载

dsh plugin --profile desktop remove dsh-taskbar-glow

配置与调试

配置界面

安装后,在「插件 → dsh-taskbar-glow → taskbar-glow → 配置」中可以打开配置页。所有开关与参数都在这里设置,改一项立即生效,并写入 ~/.dsh/taskbar-glow/config.json。

主要配置项:

  • 总开关:是否启用插件。
  • 触发开关:一轮跑完、工具审批、AI 提问是否触发。
  • 窗口在前台时不打扰:勾选后前台窗口会跳过闪烁。
  • 闪烁持续秒数:0 表示闪到窗口回到前台,也可设为固定秒数。
  • 测试延迟秒数:/flash 与测试链接的延迟时间(默认 5 秒)。
  • 诊断日志:是否写日志。

配置文件

配置也会写入 ~/.dsh/profiles/desktop/cordis.patch.yml 里的 taskbar-glow 条目,但界面里保存的值会覆盖配置文件。

- insert:
    - id: taskbar-glow
      name: dsh-taskbar-glow
      config:
        enabled: true            # 总开关
        onTurnEnd: true          # 一轮跑完时闪
        onApproval: true         # 等审批时闪
        onQuestion: true         # 等你回答时闪
        skipWhenFocused: true    # 窗口在前台时不闪
        testDelaySeconds: 5      # /flash 与测试链接的延迟
        stopAfterSeconds: 0      # 0 = 闪到窗口回到前台;也可以设成 15 之类
        log: true                # 写诊断日志

测试闪烁

方式一:输入框命令

在对话输入框中输入 /flash 回车。插件会先返回「几秒后闪烁」,此时切到别的窗口,到点即可看到任务栏图标闪烁。

方式二:浏览器测试链接

在浏览器中打开:http://127.0.0.1:1139/taskbar-glow/flash。

浏览器会抢走焦点,几秒后 DSH 的任务栏图标会开始闪烁。

方式三:等待自然触发

让 DSH 在后台跑完一轮对话,或等待审批/提问事件触发。

诊断与排查

状态页面

在浏览器中打开:http://127.0.0.1:1139/taskbar-glow/status。

返回 JSON 格式的状态信息:

  • native.available:原生库是否就绪。
  • window:找到的 DSH 窗口信息。
  • foregroundIsDsh:此刻 DSH 是否在前台。
  • lastFlash:最近一次闪烁时间。

日志文件

日志路径:~/.dsh/taskbar-glow/taskbar-glow.log。

超过 256KB 会自动清空重写。每次触发都会记录一行日志:

  • flash reason=…:触发闪烁的原因。
  • skip (…): …:跳过的原因。

常见跳过原因:

  • DSH is in the foreground:窗口在前台,本来就不该闪。
  • no DSH window found:没有认到窗口,需要检查 status 页面的 parentPid 和 window 字段。
  • native unavailable:koffi 没加载到,可能是非桌面版或非 Windows 环境。

文件结构

安装后,目录会被软链到 ~/.dsh/profiles/desktop/node_modules/dsh-taskbar-glow。

index.js           Host:闪烁逻辑、事件、/taskbar-glow/* 接口、配置持久化
client.js          浏览器半区:插件页里的配置表单
cordis.patch.yml   bundle patch:默认配置
locale/zh.json     插件页里的标题与描述(中文)
locale/en.json     同上(英文)
icon.svg           插件页里的图标
LICENSE            MIT

修改 JS 需要重启 DSH;修改配置(界面或 cordis.patch.yml)会自动重载。

适用场景

适合在 DSH 桌面版上长时间运行、需要人工介入审批或回答问题的场景。如果你经常在后台跑任务、担心漏掉审批或提问,这个插件可以减少手动切屏的频率。

注意事项

  • 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
  • 闪烁是 Windows 任务栏提示,不是自绘的发光动画。如果系统设置里关闭了「在任务栏上显示闪烁」,或使用了会吞掉闪烁的第三方任务栏工具,可能看不到效果。
  • 首次安装需要重启 DSH;修改配置不需要重启。

总结

DSH 任务栏发光提醒插件通过 Windows 原生的 FlashWindowEx 接口,在后台任务、审批或提问时用任务栏闪烁把注意力拉回桌面。它不依赖额外编译,配置灵活,支持多种触发条件和调试方式,适合需要在后台运行 DSH 的桌面用户。

  • 插件目录页:https://www.skillhub.cn/plugins/hanmoxu9/dsh-taskbar-glow
  • GitHub 仓库:https://github.com/hanmoxu9/dsh-taskbar-glow
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜