前言¶
DeepSeek Harness(DSH)运行时,某些时刻需要开发者回到窗口进行确认:工具请求权限、模型提出问题或提交计划等待审阅、根 Agent 从运行转为空闲。如果这些提醒以 Toast 形式出现,容易在通知中心堆叠或被忽略。
dsh-popup-notify 为 DSH 提供原生桌面模态弹窗,在上述三个关键时刻弹出顶层对话框,直到手动关闭。它不依赖 npm 包,直接用纯 ESM 驱动 PowerShell,在 Windows 上运行。
插件说明¶
dsh-popup-notify 是一个 DeepSeek Harness 客户端插件,由维护者 yiumanlenong 开发。它通过 Windows 原生 MessageBox 为审批请求、提问与计划审阅、回合结束提供显式提醒,避免 Toast 被自动消失或遗漏。
安装与启用¶
安装命令:
dsh plugin --profile web add dsh-popup-notify
安装后重启 DSH 或让配置热重载生效。插件会向配置中插入一行:
- insert:
- id: popup-notify
name: 'dsh-popup-notify'
卸载时使用:
dsh plugin --profile web remove dsh-popup-notify
配置与行为¶
在 DSH 的 profile 中覆盖 cordis.patch.yml 的 config 字段。注意 patch 会替换整个 config,因此需要重新列出要覆盖的键。
示例:
- id: popup-notify
config:
notifyOnComplete: false
sound: false
配置项含义如下:
| 键 | 默认值 | 含义 |
|---|---|---|
| notifyOnApproval | true | 工具请求权限时弹出 |
| notifyOnQuestion | true | 运行 ask_user_question 或 exit_plan_mode 时弹出 |
| notifyOnComplete | true | 根 Agent 运行结束时弹出 |
| ignoreSubagents | true | 忽略子 Agent、工作流 Worker、AgentTeam 成员 |
| sound | true | 弹出时播放系统 Asterisk 声音 |
| completeCooldownMs | 10000 | 同一次会话内,两次完成弹出的最小间隔 |
| plainDialog | false | 跳过顶层所有者表单;若对话框位置异常可尝试开启 |
| testOnStart | false | 插件挂载时弹出一次,用于确认 PowerShell 路径可用 |
| traceFile | ’‘ | 启用诊断日志,每事件和对话框记录一行;空字符串禁用 |
消息模板使用占位符 {placeholder},未填充的占位符保持原样。可用键:
| 键 | 默认值 |
|---|---|
| title | DeepSeek Harness |
| approvalMessage | 工具 {tool} 需要你的权限确认 |
| approvalReasonSuffix | \n\n理由:{reason} |
| questionMessage | 需要你的回答:{question} |
| questionCountSuffix | \n\n(共 {count} 个问题,请在对话里逐个回答) |
| planReviewMessage | 有一份计划等你审阅:批准,或继续规划。 |
| completeMessage | Agent 响应已结束,可以查看结果了。 |
| completeReasonSuffix | \n\n(结束原因:{reason}) |
| projectSuffix | \n\n项目:{project} |
{reason} 为回合结束原因(completed 时为空,否则为 aborted、error、max-tokens 等);{project} 为会话工作目录的 basename。将 projectSuffix 设为空可隐藏项目行,将 completeReasonSuffix 设为空可隐藏异常结束原因。
生态与限制¶
插件在 Windows 上运行,其他平台会跳过弹窗并记录警告。目前仅识别 ask_user_question 和 exit_plan_mode 两个提问工具。对话框本身不直接点击到对话窗口,仅报告状态,回答仍需在 DSH 窗口中进行。同一时间只能显示一个弹窗,长时间离开可能导致多个提醒排队。
开发环境使用 Node.js 运行测试:
npm test # 22 个单元测试,不弹出对话框
node tests/smoke-dialog.mjs # 打开并关闭一个真实对话框
适用场景¶
适合需要在 DSH 运行时主动提醒开发者进行决策的场景,尤其是长时间运行的会话或需要人工确认的审批流程。使用前应检查源码与许可证(MIT),并确保 DSH 版本不低于 0.2.1-rc.2。
总结¶
dsh-popup-notify 为 DeepSeek Harness 提供了显式、持久的桌面弹窗通知,覆盖审批、提问、计划审阅、回合结束等关键事件。它通过扩展点 approval/request、tools/pre-execute、agent/status 在合适时机弹出对话框,帮助开发者不遗漏需要人工介入的时刻。
- 插件目录页:https://www.skillhub.cn/plugins/yiumanlenong/dsh-popup-notify
- GitHub 仓库:https://github.com/yiumanlenong/dsh-popup-notify