前言¶
在 DeepSeek Harness(DSH)里跑长任务、等审批或结构化提问时,你往往不会一直盯着界面。系统通知能提醒你「该回来了」,但若点击后只能打开应用、却切不到对应会话,提醒的价值会大打折扣。桌面版 DSH 的 dsh:// 深链主要用来聚焦窗口,本身不携带会话参数;不少通知方案在浏览器场景下也会遇到类似限制。
下面介绍社区插件 dsh-windows-notify(维护者 yschdxm),它在 Windows 上用原生 Toast 覆盖常见会话事件,并实现「点击通知 → 聚焦 Harness → 跳到那条会话」的闭环。插件归类为客户端,当前 npm 包版本为 2.0.1,在 GitHub 仓库 yschdxm/dsh-windows-notify 开源(MIT)。
这是什么¶
dsh-windows-notify 是标准 DSH bundle:Host 半边监听会话与账号事件并触发 Windows Toast,Client 半边在 Web GUI 内轮询待跳转请求并调用 openSession。实现上依赖 Windows 自带的 PowerShell 5.1 与 WinRT,README 写明无 npm 运行时依赖、无第三方二进制。
一句话:Windows 原生通知 + 点击跳回对应会话(桌面 App 或浏览器中的 Web GUI 均支持)。
点击通知后如何定位到会话¶
README 用流程说明插件自建的跳转链路,避免「只聚焦、不切会话」:
Toast 点击
└─ Windows 协议 dshfocus://focus?u=<focus-url>
├─ launcher.ps1 GET <- host /plugins/dsh-windows-notify/focus?session=<id>&t=<token>
│ (记录待跳转请求,5 分钟内有效)
└─ Start-Process 'dsh://open' → 聚焦/唤起桌面 App
│
client.js(页面内)轮询 /pending ◄──────────┘
└─ ctx.get('uiWorkspace').openSession(sessionId) ← 真正切到那条会话
行为要点(均来自 README):
- 桌面 App 已打开:聚焦窗口并切换会话。
- App 最小化或在托盘:
dsh://open恢复并聚焦,再切换会话。 - App 未运行:点击会启动 App;待跳转请求保留 5 分钟,页面加载后自动跳转。
- 纯浏览器打开 Web GUI 时,Client 半边走相对路径
/plugins/...,同样生效。
配置项 openOnClick: false 可关闭点击跳转,仅保留普通通知。
核心功能¶
通知形态与身份¶
- Windows 原生 Toast:PowerShell 5.1 + WinRT。
- 通知身份:优先使用应用 AUMID
com.deepseek.dsh,通知标题显示为「DeepSeek Harness」并带应用图标;AUMID 不可用时回退到 PowerShell 的 AUMID(此时可能显示为 Windows PowerShell,README 在排障一节有说明)。
覆盖的事件¶
README 列出的触发场景包括:
- 会话:任务完成、出错、输出上限、主动停止、被打断、被阻断。
- 交互:审批等待;结构化提问(含计划确认)。
- 账号:需要登录、登录过期;会话级错误。
降噪与去重¶
- 目标续跑静默:goal 自动续跑期间不打扰,仅在目标完成或受阻时提醒。
- 子代理静音:按
origin === 'subagent'/delegationDepth > 0过滤;fork 出来的顶层会话仍会通知(默认notifySubagentTurns: false)。 - 去重:同会话、同原因 2 秒内只弹一次。
可观测性¶
- Toast 仅在
Show()成功时输出toast shown;失败写入%TEMP%\dsh-windows-notify\notify.log并在控制台告警。 - 启动时自检
toast.ps1、launcher.ps1、powershell.exe;可通过GET http://127.0.0.1:<port>/plugins/dsh-windows-notify/health(仅 loopback)查看通道状态。
可选配置:静音(silent)、正文长度(maxBodyChars,默认 260)、调试日志(debug)等,见下文配置节。
安装与启用¶
插件通过 DSH 的 dsh plugin add 安装;README 给出三种方式,其中 npm 为推荐路径:
# 方式零(推荐):从 npm 官方源安装
dsh plugin --profile <profile> add @yschdxm/dsh-windows-notify
# 方式一:Plugin Manager(GUI)→ 安装 bundle → 选择仓库目录
# 方式二:命令行从 GitHub 安装
dsh plugin --profile <profile> add github:yschdxm/dsh-windows-notify
本地 link 开发需自行 clone 仓库后执行 dsh plugin --profile <profile> add link:<本地路径>(README 示例路径为 link:F:/dev/dsh-windows-notify)。
安装后建议重启一次 Harness(桌面版可选「重启应用与 Host」,或退出后重新打开);Client 半边在页面下次加载时生效。
环境与兼容性(README):
- 测试环境:DeepSeek Harness Desktop
0.2.1-rc.2,Windows 11 26100,Node 24。 package.json要求 Node>=20,DSH>=0.2.1-rc.1 <0.3.0。- 支持 Windows 10/11 自带的 Windows PowerShell 5.1。
插件以当前 DSH 进程权限运行;安装前可在 GitHub 查看源码与 MIT 许可证,自行评估是否纳入你的 profile。
配置¶
在 profile 的 cordis.patch.yml(或任意后置补丁层)中按 row id 覆盖;省略字段则使用默认值:
- id: dsh-windows-notify
config:
appId: com.deepseek.dsh # Toast 归属的 AppUserModelID
silent: false # true = 静音
notifyTurnEnd: true
notifySubagentTurns: false
notifyErrors: true
notifyApproval: true
notifyQuestions: true
notifySignIn: true
openOnClick: true # false = 关闭点击跳转(只弹普通通知)
protocol: dshfocus # 点击使用的自定义协议
maxBodyChars: 260
log: true # 写 %TEMP%\dsh-windows-notify\notify.log
debug: false # 记录每条会话事件与通知成功日志
典型用法无需额外命令:装好 bundle、重启 Harness 后,在后台跑会话即可在对应事件收到 Toast;需要少打扰时可设 silent: true,或按需关闭某一类 notify* 开关。
诊断与排障¶
| 文件/入口 | 用途 |
|---|---|
%TEMP%\dsh-windows-notify\notify.log |
启动自检、通道状态、通知失败、focus 请求/消费记录(JSON 行) |
%TEMP%\dsh-windows-notify\launcher.log |
点击后的协议解析、host 请求、聚焦方式(app/browser) |
GET http://127.0.0.1:<port>/plugins/dsh-windows-notify/health |
通道状态、端口、待跳转数量(仅 loopback) |
README 常见问题摘要:
- 没有弹窗:Windows 设置 → 系统 → 通知,确认「DeepSeek Harness」允许通知且未开专注助手;查看
notify.log中的toast-failed。 - 点击没反应:检查
HKCU\Software\Classes\dshfocus是否指向本插件的launcher.ps1;查看launcher.log。 - 只聚焦、不切会话:确认 Client 半边已加载(重启 Harness),并检查
notify.log是否有focus-consumed。 - 通知显示成 Windows PowerShell:回退分支被触发,检查
com.deepseek.dsh的应用快捷方式是否存在。
卸载时除在 plugin_manager 移除 bundle 外,可按 README 清理协议注册:
Remove-Item 'HKCU:\Software\Classes\dshfocus' -Recurse -Force
适用场景与注意¶
适合在 Windows 10/11 上使用 DSH 桌面版或浏览器 Web GUI、且希望会话结束、审批、提问、登录态变化等事件以系统 Toast 提醒,并能一键回到对应会话的开发者。
需注意:
- 仅 Windows 平台;依赖本机 PowerShell 5.1 与 Harness Host 提供的插件 HTTP 路由。
- 自定义协议
dshfocus会写入当前用户注册表(HKCU),卸载时应按文档清理。 - DSH 生态强调「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
若你已经在 Windows 上长期挂 DSH 任务,dsh-windows-notify 把「提醒」和「回到正确会话」绑在同一条点击路径上,并提供了较完整的配置与日志入口。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。