前言¶
在后台跑 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 包,拿到目录后直接使用。
安装方式¶
方式一:插件页安装¶
- 打开 DSH 客户端。
- 在侧栏点击「插件」。
- 选择「添加插件」。
- 填入插件目录的绝对路径(支持 npm 包名或 GitHub 地址)。
- 安装后重启 DSH。
方式二:命令行安装¶
在终端中执行:
dsh plugin --profile desktop add link:<目录的绝对路径>
安装后重启一次 DSH,浏览器半区会在启动时扫描插件包。
卸载¶
方式一:插件页卸载¶
- 打开「插件」页面。
- 找到
dsh-taskbar-glow。 - 点击卸载。
方式二:命令行卸载¶
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