前言¶
用 DeepSeek Harness 跑长任务时,窗口往往不在前台:你在写别的文档、全屏看视频,或者浏览器里开着 dsh web 而宿主跑在另一台机器上。任务结束、工具审批、提问等待这几类状态,如果只靠回到应用里看,很容易漏掉。
社区里也有带「网页端一半」的通知插件,能在浏览器里推提醒。dsh-notice-card 走的是另一条路:只在运行 DSH 的 Windows 桌面上画原生窗口,不依赖浏览器,也不提供浏览器通知、页面浮层或标签页标题标记。下面介绍它做什么、怎么装、怎么配。
这是什么¶
dsh-notice-card(npm 包名 dsh-notice-card,当前版本 0.2.1)由维护者 Maple-Yoli 发布,分类属于 DSH 客户端侧插件。它在屏幕角落弹出通知卡,对应三类时机:一轮任务跑完、等你审批工具调用、等你回答问题。卡片盖在其他窗口之上,但不抢焦点;跟随系统主题与 DPI,文字用 GDI ClearType 绘制,位置默认落在鼠标所在显示器,并与系统通知类似的角对齐(corner: auto)。
插件以当前 DSH 进程权限运行,卡片画在宿主那台 Windows 的桌面上。安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。
核心功能¶
三类提醒¶
- 一轮任务结束(监听
agent/turn-stopping) - 等你审批(
approval/request) - 等你回答(
user-questions/request)
插件只负责弹卡,不代替你在应用里审批或作答;监听器会先 next(),把请求交回原有应答方。
外观与位置¶
- 深色/浅色主题、高对比度、辅助功能里的文本大小、界面语言对应的系统字体(中文为微软雅黑 UI 等)
corner可为auto(跟任务栏角)或钉死四角;多张卡可叠放,默认最多maxStack: 3- 全屏时卡片可鼠标穿透;系统「请勿打扰」时任务结束卡不弹,审批与提问卡仍会弹
消失规则¶
- 任务结束卡:停留
seconds秒后淡出(默认 10 秒) - 审批卡与提问卡:需请求已处理且 DSH 窗口曾在前后台切换中出现,才淡出,最少显示约 1.2 秒
- 点 ✕ 立即收起;点窗口图标可把 DSH 切到前台(依赖
processName/appPath,默认可从桌面端进程推断)
实现上每张卡是独立编译出的 card-<编号>.exe,首次弹卡时用系统 csc.exe 编译 lib/card.cs,缓存于 %LOCALAPPDATA%\dsh-notice-card\。插件不发网络请求、不写统计。
环境要求¶
| 项目 | 要求 |
|---|---|
| 形态 | 桌面端 DeepSeek Harness.exe,或 DSH 宿主在你需要看到卡片的那台 Windows 上 |
| 系统 | Windows |
| DSH | 0.1.0-rc.1 或更高 |
| Node | 20 或更高(加载插件时用) |
| .NET Framework | 4.x(系统自带) |
若只用浏览器操作 DSH,而宿主在远程服务器,卡片会出现在服务器桌面,本地看不见。浏览器侧提醒需另选带 client 半的插件(README 中举例 dsh-notify-me)。
安装与启用¶
按你的 DSH 形态选一种方式,不要重复挂载,否则同一事件可能弹两张卡。
方式一:npm¶
npm i dsh-notice-card@0.2.1
在 profile 目录的 cordis.patch.yml(默认 %USERPROFILE%\.dsh\profiles\<profile 名>\)末尾追加:
- insert:
- id: notice-card
name: C:/你执行 npm i 的目录/node_modules/dsh-notice-card/lib/index.mjs
config: {}
name 须为指向 lib/index.mjs 的绝对路径,斜杠用 /。
方式二:官方桌面端¶
桌面端 desktop profile 由应用管理,命令行 dsh plugin --profile desktop add 会被拒绝。在应用内打开 设置 → 插件,填写仓库地址:
Maple-Yoli/dsh-notice-card
装完后自动挂上,无需手改 patch。
方式三:自建 profile(CLI)¶
dsh plugin --profile <你的 profile> add dsh-notice-card@0.2.1
或指定 GitHub 标签:
dsh plugin --profile <你的 profile> add github:Maple-Yoli/dsh-notice-card#v0.2.1
包内 dsh.bundle.patch 会并入 profile 的 dsh.profile.bundles。宿主在远程时,装到哪个 profile 卡片都在服务器桌面上。
新增 id 一般可热加载;若无反应,完全退出 DSH 再打开。修改已有 id 的配置(如 corner、maxStack)也需完全重启后生效。
配置示例¶
配置写在 patch 的 config: 下。例如关闭任务结束提示、把结束卡停留改为 20 秒:
- insert:
- id: notice-card
name: C:/你的路径/dsh-notice-card/lib/index.mjs
config:
onTurnEnd: false
seconds: 20
常用键(完整表见仓库 README):
| 键 | 默认值 | 说明 |
|---|---|---|
onTurnEnd |
true |
任务结束时弹卡 |
onApproval |
true |
审批时弹卡 |
onQuestion |
true |
提问时弹卡 |
seconds |
10 |
任务结束卡停留秒数 |
corner |
auto |
角落位置 |
maxStack |
3 |
同时显示张数(1–8) |
标题与正文模板支持 turnEndTitle、approvalBody(含 {tool}、{reason})、questionBody(含 {question})等字段。
单独试一张卡¶
缓存目录里已有 card-*.exe 时,可在 PowerShell 中直接调用(需先跑过一轮 DSH 以触发编译):
$card = (Get-ChildItem "$env:LOCALAPPDATA\dsh-notice-card\card-*.exe" | Select-Object -First 1).FullName
& $card --title "标题" --body "正文" --seconds 8 --corner top-left --session "演示" --preset "工作区内修改"
能弹出说明卡片程序正常,若不弹需检查 patch 路径、是否重复安装、或是否改动了已有 id 而未重启。
适用场景与注意¶
适合在 Windows 本机跑 DSH 桌面端、希望任务结束或人机交互等待时有一眼可见、又不打断当前焦点的用户。不适合把 DSH 只当远程宿主、本地无 Windows 桌面的场景。
卸载时:删除 patch 中对应 - insert 或在设置里卸载插件,并删除 %LOCALAPPDATA%\dsh-notice-card\ 缓存;npm 或克隆目录按安装方式一并清理。
DSH 生态强调「一切皆插件」;插件目录站 SkillHub 上的条目 与 DeepSeek / 幻方无官方从属关系,以仓库 README 与 Releases 为准。
更多细节、FAQ 与更新记录见 GitHub:Maple-Yoli/dsh-notice-card。