前言¶
用 DeepSeek Harness(DSH)跑智能体时,对话窗口不一定在前台:Agent 通过 ask_user_question 提问、进入计划审阅(plan review),或弹出权限确认(permission prompt)时,若你没有盯着聊天界面,很容易漏掉。常见做法是反复切回 DSH 窗口看有没有 pending 请求,既打断手头工作,也拖慢人机协作节奏。
下面介绍社区插件 dsh-plugin-notify(维护者 nebula9i,分类:客户端)。它在上述场景触发时,在 Windows 上弹出原生桌面通知卡片提醒你;回答仍在聊天里完成,卡片本身不提供作答按钮。插件当前版本为 0.1.0,仅支持 Windows(win32),依赖 Node.js ≥ 20 与 DSH >=0.2.0-0 <0.3.0。
这是什么¶
dsh-plugin-notify 是 DSH 的 Cordis 插件 bundle:当 Agent 等待你的输入时,调用 Windows PowerShell 绘制桌面卡片,把问题摘要、计划审阅或权限说明展示在屏幕角落。它与 DSH 官方无从属关系;可在社区目录页查看条目:nebula9i/dsh-plugin-notify,源码与文档在 GitHub。
设计原则是 「It notifies; it does not answer」:卡片没有确认/拒绝按钮,点击卡片会把 Harness 窗口带到前台,你在聊天里照常作答;插件在 waterfall 里只调用 next() 并原样返回结果,不改变聊天客户端的行为。
核心功能¶
触发条件¶
插件监听 Cordis waterfall,三类来源对应不同卡片样式(README 中的 accent 颜色):
| 触发 | 来源 waterfall | 卡片 |
|---|---|---|
ask_user_question |
user-questions/request |
问题文案,蓝色强调 |
Plan review(exit_plan_mode) |
同上,intent.kind: plan-review |
紫色强调 |
| Permission prompt | approval/request |
琥珀色强调 |
可通过配置项 questions、approvals 分别开关问题类与审批类通知;主开关为 enabled。
卡片如何消失¶
| 你的操作 | 结果 |
|---|---|
| 点击卡片 | 激活聊天并关闭卡片(默认 focusOnClick: true) |
| 点击 ✕ | 仅关闭卡片,不切换窗口 |
| 在聊天里作答 | 请求 settled 后插件写入 <cardId>.close,卡片自行收起 |
| 什么都不做 | 卡片不会超时,一直保留 |
同一会话里多个 pending 问题会合并为一张卡片、多个 Tab(与聊天 UI 一致);不同 chat 各用独立弹窗。问题与审批按 request.agent.session.id 与决策类型分组,不会混在同一张卡上。
多卡片堆叠¶
新 chat 的卡片占据屏幕角落最下方槽位,已有卡片被上推;被上推的卡片启动倒计时(默认 countdownMs: 20000 毫秒,底部进度条),倒计时结束后自动关闭。再次成为「最新」的那张卡会停止倒计时并常驻。超过 maxStack(默认 5)时,最旧的一张会立刻关闭。
各卡片由独立的 powershell.exe 进程绘制,插件用纯文本 layout 文件协调堆叠顺序(每行 cardId|countdownSeconds,最新在上)。默认播放系统提示音(sound: true),可在配置中关闭。
安装与启用¶
插件以 profile bundle 方式安装,不是单独的 dsh plugin add 命令。在桌面应用的 profile 目录(%USERPROFILE%\.dsh\profiles\desktop)中,把 bundle 加入 package.json 的 dependencies 与 dsh.profile.bundles,然后执行 pnpm install。
1、编辑 package.json,增加 link 依赖并把 bundle 列入 profiles(路径改为你本机 checkout 的绝对路径):
// package.json
"dependencies": {
"dsh-plugin-notify": "link:<absolute path to your checkout>"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-plugin-notify"
]
}
}
2、在 profile 目录安装依赖:
cd %USERPROFILE%\.dsh\profiles\desktop
pnpm install
bundle 自带的 cordis.patch.yml 会挂载插件行,一般无需再写一行配置。若要改默认行为,可在 profile 的 cordis.patch.yml 中追加:
- id: notify
name: dsh-plugin-notify
config:
countdownMs: 30000
sound: false
3、重启 DSH 应用后生效。打包版没有就地热加载;开发模式下可用 Reload Page,或在 DevTools(F12)里执行 location.reload()。
配置项摘要¶
在 profile 的 cordis.patch.yml 里通过 config 覆盖默认值(完整表见 README):
| 键 | 默认值 | 含义 |
|---|---|---|
enabled |
true |
总开关 |
questions / approvals |
true |
是否响应问题 / 审批 waterfall |
countdownMs |
20000 |
被上推后的倒计时(毫秒) |
maxStack |
5 |
可见卡片上限 |
sound |
true |
系统感叹号提示音 |
focusOnClick |
true |
点击卡片是否激活 Harness 窗口 |
throttleMs |
5000 |
抑制循环中完全相同请求的重复弹窗 |
powershell |
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe |
绘制卡片的解释器 |
maxBodyChars |
220 |
正文截断长度 |
title |
DSH needs your answer |
无自定义 header 时的标题 |
debug / debugPath |
false / <plugin>/debug.log |
诊断日志 |
典型用法与自测¶
安装并重启后,无需额外 API:Agent 在聊天里发起用户问题、计划审阅或权限请求时,若对应开关为 true,桌面会出现卡片。你在聊天中完成作答后,卡片应自动消失;点击卡片则回到 DSH 继续操作。
仓库提供 smoke 测试与 PowerShell 预览脚本,可在开发 checkout 中验证行为:
node test/smoke.mjs
powershell.exe -NoProfile -ExecutionPolicy Bypass -File test/previews.ps1
适用场景与注意¶
适合:在 Windows 上使用 DSH 桌面版、长时间并行其他窗口、希望 Agent 「等人」时有明显桌面提醒的开发者。
务必注意:
- 插件仅在 Windows 上运行(
package.json的os: ["win32"]),Linux/macOS 不适用。 - 插件随 当前 DSH 进程权限 执行,并会启动
powershell.exe绘制 UI;安装前请阅读源码与 MIT 许可证,确认可接受其行为与依赖。 - 社区插件目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;DSH 生态主张「一切皆插件」,本插件是其中的客户端增强,不改变聊天内作答流程。
结尾¶
dsh-plugin-notify 把「Agent 在等你」这件事从「盯着聊天窗口」变成「桌面卡片 + 回聊天作答」:只观察 waterfall、不替你在卡片里点选,避免与聊天客户端自己的 pending 状态不同步。若你在 Windows 上常驻 DSH,可按上文 profile 方式 link 安装并调整 cordis.patch.yml。
- 目录页:https://www.skillhub.cn/plugins/nebula9i/dsh-plugin-notify
- GitHub:https://github.com/nebula9i/dsh-plugin-notify