dsh-popup-notify:DeepSeek Harness 的桌面弹窗通知

前言

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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye