dsh-popup-cards:在 Windows 桌面右下角提醒 DSH 需要你确认

前言

DeepSeek Harness(DSH)在自身窗口里会展示工具审批、模型提问和计划待审等交互。当你正在 IDE、浏览器或终端里忙别的,DSH 窗口被挡在后面时,这些提示很容易错过。社区插件 dsh-popup-cards 在 Windows 主屏工作区右下角弹出与 DSH 客户端风格一致的置顶卡片,只告诉你「哪条任务」和「哪类确认」,不展示正文或工具参数;点击卡片可回到 DSH,点 × 仅关闭卡片,回到 DSH 后卡片也会自行消失。插件以 Cordis 事件监听方式工作,不替代 DSH 内置 UI,关闭卡片也不会替你批准或回答。

这是什么

dsh-popup-cards 由维护者 Leo1958923515 发布,仓库 Leo1958923515/dsh-popup-cards,在 DSH 插件目录中归类为客户端。当前 package 版本为 0.1.5,许可证 MIT,要求 DeepSeek Harness >= 0.2.1-rc.2(见 package.json 中 engines.dsh)。仅支持 Windows 10/11;在其他平台插件会加载但静默跳过弹窗,并在 DSH 日志中写一次警告。

核心功能

下面介绍卡片会在哪些时刻出现,以及你可以怎样处理它们。

触发类型

插件监听三类 Cordis 事件,与 DSH 自带流程并行(waterfall 中始终调用 next(),不阻断工具或审批桥接):

事件 含义
approval/request 工具有待你批准的权限请求
tools/pre-execute ask_user_question 为「提问」;exit_plan_mode 为「计划待审」
agent/status 根智能体从 running 变为 idle 时视为「运行结束」

卡片第一行是会话标题(sessionTitle),否则用工作目录名,再否则用 session id 前 8 位。

交互行为

  1. 点击卡片:若 activateDSHOnClick 为 true(默认),DSH 窗口置前,卡片关闭。
  2. 点击右上角 ×:只关卡片,DSH 保持原位置。
  3. 你自己切回 DSH:若 autoCloseOnDSHFocus 为 true(默认),卡片自动关闭。
  4. DSH 已在前景:若 skipWhenDSHFocused 为 true(默认),不弹卡片(应用内提示已足够)。

设计上有意只携带「任务 + 确认类型」两类信息,不含消息体、工具参数或代码。关闭卡片不会完成审批或回答问题,你仍需在 DSH 内操作。

实现要点(便于判断是否适合你)

  • 无边框、置顶的 WPF 窗口,由短时 powershell.exe 进程承载(隐藏、-NonInteractive),距主屏工作区右下角上方 24 px,160 ms 淡入。
  • 同一时间只显示一张卡片;后续通知排队,当前卡片关闭后再显示下一张。
  • 不抢焦点;独立进程,长审批等待不会阻塞 agent turn。
  • 前景检测或 Win32 辅助编译失败时仍尽量显示卡片(fail-open)。

默认 ignoreSubagents: true,子 agent、后台委派与工作流 worker 不弹窗。

安装与启用

环境要求:Windows 10/11、系统自带的 PowerShell 5.1、DSH >= 0.2.1-rc.2。无 npm 依赖、无构建步骤;安装后 profile patch 热加载,无需重启 DSH。

桌面应用(推荐):设置 → Plugins → Install,粘贴仓库 URL:

https://github.com/Leo1958923515/dsh-popup-cards

命令行(在 profile 目录下,桌面 profile 由应用管理):

dsh plugin --profile desktop add https://github.com/Leo1958923515/dsh-popup-cards

本地目录(路径按你的机器修改):

dsh plugin --profile desktop add link:D:\path\to\dsh-popup-cards

仓库名与包名均为 dsh-popup-cards,与 cordis.patch.yml 中 name: 一致;本地 checkout 的文件夹名可以不同。

插件在 DSH 进程权限下运行。安装前建议阅读仓库源码与 MIT 许可证,确认符合你的安全策略。

配置(可选)

在 profile 的 cordis.patch.yml 中覆盖 popup-notify 的配置。配置对象是整体替换默认值,保留某项时需把该键一并写上。

示例:开启提示音、8 秒后自动关闭、保留默认提示文案:

- id: popup-notify
  config:
    sound: true
    durationMs: 8000
    hintText: '点击回到 DSH'

常用项(完整列表见 README):

键 默认 含义
notifyOnApproval true 工具待批准时弹窗
notifyOnQuestion true 提问或计划待审时弹窗
notifyOnComplete true 根 agent 运行结束时弹窗
skipWhenDSHFocused true DSH 窗口在前台时不弹
dshWindowTitleMarker — DeepSeek Harness 识别 DSH 窗口标题的子串
sound false 打开卡片时播放 Windows Asterisk 声
durationMs 0 毫秒后自动关闭;0 表示直到手动关闭
completeCooldownMs 10000 同一会话两次「运行结束」卡片的最小间隔

若你改了窗口标题(自定义 shell、远程会话等),需调整 dshWindowTitleMarker,或关闭依赖标题的前台检测相关功能。

典型用法:启动自检

不确定 PowerShell/WPF 路径是否正常时,可在配置里打开自检。Reload profile 后会立即出现一张测试卡片;自检会跳过「DSH 在前台则不弹」逻辑且不会自动关闭,便于查看样式。

- id: popup-notify
  config:
    testOnStart: true

检查完毕后设回 testOnStart: false。点击卡片或 × 关闭。

需要排查「为何弹/为何不弹/为何关」时,可设置 traceFile 为本地文件路径,插件会把诊断信息追加写入该文件(见 README Configuration 表)。

适用场景与注意

适合:在 Windows 上长时间把 DSH 放在后台,同时在编辑器、浏览器或构建输出里工作,希望在不打断当前焦点的前提下知道「该回 DSH 点一下了」的用户。

局限(README 原文):

  • 仅 Windows;不是通知中心,无历史、角标或按类型分样式。
  • 卡片不可操作审批结果,只是提醒。
  • 依赖窗口标题子串判断前景与点击置前;标题不匹配时需改配置。
  • 每张卡片有 PowerShell/WPF 冷启动成本(约数百毫秒);突发多条通知会排队而非叠多张。

DSH 生态强调「一切皆插件」;SkillHub 目录页 是社区索引,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-popup-cards 把 DSH 里「需要你确认」的关键时刻推到 Windows 桌面右下角:审批、提问、计划审阅或根任务跑完,一张轻量卡片即可瞥见任务名与类型,再一键回到 DSH 处理。详情与截图见仓库 README(含 中文说明)。

  • 目录页:https://www.skillhub.cn/plugins/Leo1958923515/dsh-popup-cards
  • GitHub:https://github.com/Leo1958923515/dsh-popup-cards
羽毛球分组比赛记分
小程序二维码

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

Xiaoye