前言¶
用 DeepSeek Harness(DSH)跑长任务时,常见做法是盯着浏览器等回合结束。切到别的标签页或别的应用后,任务在后台跑完了,往往要靠自己想起来回去看。有的环境会在任意时刻弹通知,人在页面上也会被打断。
下面介绍社区插件 dsh-away-notify(维护者 TianzeLuo):只在「你没在看 DSH 页面」时,对回合完成、出错、等待审批、agent 提问、goal 完成等事件发桌面通知;点击通知可回到对应会话。Windows 与 WSL 走原生 WinRT Toast,普通 Linux 桌面走 notify-send,插件自述为零运行时依赖、零构建,dsh plugin add 装完即用。可在 SkillHub 目录页 与 GitHub 仓库 查看源码与文档。
这是什么¶
dsh-away-notify 是 DSH 的客户端(web profile)插件:浏览器侧上报「在场」状态,服务端在判定你离开后再触发通知,并尽量把点击落点对准出事的那条会话。分类上属于客户端能力,与「一切皆插件」的 DSH 生态一致;目录站 SkillHub 为社区收录,与 DeepSeek / 幻方无官方从属关系。
当前 package 版本为 0.1.0,许可证 MIT,要求 Node >=22.5。
核心功能¶
触发与抑制¶
README 将可开关的触发概括为多类场景:回合完成、出错 / 中断 / 达到输出上限、等待审批、agent 提问、goal 完成。同会话同类型有冷却;子代理会话默认不打扰;/goal 自动推进的中间轮次可配置为静默,只在目标完成或阻塞时提醒。
在场判定按标签页记录(每个标签页一个 clientId)。没有任何「新鲜 + 可见 + 有焦点」的标签页时视为离开并提醒;若能确定当前在看哪条会话,则只抑制该会话,后台会话仍可提醒。切到别的标签页或别的应用一律提醒。在场状态带 TTL(默认配置里 presenceTtlMs: 45000),避免标签页崩溃或浏览器关闭后永久静音。
通知形态与回跳¶
Windows 侧通知使用 scenario="reminder",通知可常驻,直到点击或切回对应会话;按会话撤回,避免误撤其他会话的通知。Toast 可点击,优先聚焦已有 DSH 标签页并切换到对应会话;支持多实例时通过标题 [dsh:<port>] 区分。WSL 内运行的 dsh 同样通过 Windows 侧 powershell.exe 发 Toast;纯 Linux 桌面用 notify-send,缺失时降级为只记日志。
其它插件可通过文档中的 awayNotify 接口声明「某会话别打扰」或改写点击落点,away-notify 不绑定具体插件名。
安装与启用¶
安装命令须以仓库 README 为准;WSL / Linux 可直接从 GitHub 安装:
dsh plugin --profile web add github:s11phere/dsh-away-notify
若要安装本地改过的副本,将 spec 换为检出目录的绝对路径,例如:
dsh plugin --profile web add /path/to/dsh-away-notify
Windows 原生 dsh 用户需先阅读仓库 docs/windows.md:插件检出与 $DSH_HOME 不在同一盘符时,dsh plugin add 可能静默装出无法加载的插件且退出码仍为 0。官方提供一键安装脚本:
cd <插件检出目录>
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\install-windows.ps1
装完后重启 dsh web 并刷新浏览器页面;新增 bundle 仅在启动时载入 dsh.profile.bundles,client.js 也需刷新才加载。cordis.patch.yml 支持热监视,改配置一般不必重启。
验证是否挂上(不启动服务):
dsh --profile web --dump-config | grep -A2 dsh-away-notify
典型用法¶
通知通道自检¶
不必等真实回合结束,可先确认 Toast / 通知通路:
node scripts/selftest-notify.mjs "标题" "正文"
脚本会实际弹一条 Toast,并回读 Windows 通知中心做确认。若要看插件侧日志(如「已加载」「已抑制」),可在 profile 的 cordis.patch.yml 里临时打开 notifyOnLoad 与 debug,确认后关闭。故障现象对照见仓库 docs/troubleshooting.md。
配置覆盖¶
在 profile 的 cordis.patch.yml 里按 id 覆盖(摘录常用项;完整列表见 README):
- id: dsh-away-notify
config:
onTurnComplete: true
onTurnError: true
onApproval: true
onQuestion: true
onGoalComplete: true
suppressGoalRounds: true
rootsOnly: true
cooldownMs: 10000
presenceTtlMs: 45000
openOnClick: true
persistent: true
dismissOnReturn: true
useProtocolHandler: true
titleTag: true
debug: false
notifyOnLoad: false
说明:appName 在 README 中标注目前未接线,区分通知来源应改 appId。includeToken 会把 token 写入本机通知历史,取舍见 docs/security.md。
适用场景与注意¶
适合长时间用 DSH web 界面、又需要切走处理别的事、仍希望「只有离开页面才被打扰」的开发者。Windows / WSL 用户应优先按 windows 文档安装,避免跨盘符静默装坏。
插件随当前 dsh 进程运行,通知与焦点助手会调用本机 shell(如 powershell.exe)或注册协议处理;安装前请自行审阅源码与 MIT 许可证。打开浏览器 DevTools 会导致页面失焦,插件会判为「离开」,属 README 所述预期行为。
已知限制与端到端验证记录见仓库 docs/known-limitations.md、docs/verification-windows.md 等。
结尾¶
dsh-away-notify 把「Codex 式」的离开提醒接到 DSH:在场时不刷屏,离开时有 Toast,点击尽量回到对的会话与实例。需要安装命令、Windows 避坑与排障时,以 GitHub README 为准;浏览分类与简介可参考 SkillHub 目录页。