前言¶
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 位。
交互行为¶
- 点击卡片:若
activateDSHOnClick为 true(默认),DSH 窗口置前,卡片关闭。 - 点击右上角 ×:只关卡片,DSH 保持原位置。
- 你自己切回 DSH:若
autoCloseOnDSHFocus为 true(默认),卡片自动关闭。 - 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