前言¶
用 DeepSeek Harness(DSH)跑长任务时,常见做法是开着 Web 界面等一轮对话结束。切到别的窗口写代码或开会,往往不知道任务已经跑完;需要审批或回答问题时,也要靠时不时切回浏览器。主进程一旦因插件未捕获的错误退出,排查往往要从终端日志里翻堆栈开始。
dsh-sentinel 是社区维护者 herenfor 发布的客户端类插件,在 DSH 主程序之外承担「照看」:一轮对话正常结束或需要你出面时发通知,可选 Windows 托盘启动/停止 DSH,并在崩溃后写报告、拉起紧急 DSH 与本地说明页。它接替已不再更新的 dsh-task-notify。目录页:https://www.skillhub.cn/plugins/herenfor/dsh-sentinel,源码:https://github.com/herenfor/dsh-sentinel。
这是什么¶
一句话:在 DSH 主进程之外提供任务完成提醒、托盘启动,以及崩溃后的紧急 DSH 与说明页面;可选插件健康检查。
维护者 herenfor,许可证 MIT(见仓库 LICENSE)。当前资料中的插件版本为 0.3.0,面向 DSH 0.2.x(>=0.2.0-rc.2 <0.3.0-0)。文档写明主要在 Windows 11 + WSL2 下使用,DSH 运行在 WSL 中;独立 headless、sdk 和 sdk-minimal profile 暂不支持,需要 DSH 的 web profile 及 DSH 支持的 Node.js 版本。
核心功能¶
任务与注意力通知¶
- 一轮对话正常结束时发送通知;取消、出错和委派的子任务结束时不提醒。
- 本轮启动的后台任务(例如编译)仍在运行时,结束的这一轮不提醒;等后台任务结束、AI 处理完结果后再提醒。
- 需要你出面时也会提醒:有待审批操作、AI 提问,或本轮结束时还有未回答问题;5 秒内处理完的不提醒。
- 支持 Web 模式里的 minimal 预设(AI 没有工具也能触发)。
- 优先使用浏览器通知;浏览器未打开、无权限或发送失败时,改用 Windows 系统通知(DeepSeek Harness 名称、鲸鱼图标、默认提示音)。通知失败不影响任务运行。资料说明通知暂不支持点击后跳转到对应对话。
可选 Windows 托盘¶
插件包内带可选托盘程序,需单独安装(不是 DSH 插件本体的一部分):双击/单击打开网页,右键可重启或停止 DSH 等。安装脚本位于安装后的 node_modules/dsh-sentinel/tray/install.sh。
崩溃防护¶
DSH 进程异常退出后(资料举例:某插件抛出未处理错误),可自动:将崩溃报告写入 ~/.dsh/logs/dsh-sentinel/crashes/<时间>/;启动不带第三方插件的紧急 DSH(profile sentinel-rescue);在浏览器打开本地说明页,并可在 WSL 下发送 Windows 通知。不会修改你的既有配置。
仅安装插件并照常启动时,运行中崩溃有保护;启动就失败(配置错误、插件装坏)需通过启动器 dsh-sentinel-run 启动 DSH 才能覆盖。托盘默认经启动器启动则无需改命令;终端自启需在 dsh web 前加启动器前缀(见下文典型用法)。
插件健康检查(可选,默认关闭)¶
DSH 启动完成时检查已启用但未正常运行的插件,状态变化时再查;可发 Windows 通知,并在 设置 → 插件健康 或 http://127.0.0.1:<端口>/dsh-sentinel/health 查看。只读状态,不修改插件。
安装与启用¶
在 WSL 终端执行(命令来自仓库 README):
dsh plugin --profile web add github:herenfor/dsh-sentinel#v0.3.0
安装后等当前任务结束,重启 DSH 并刷新浏览器页面。WSL 需能找到 pnpm,且能运行 Windows 程序以便发送 Windows 通知。
若曾安装过 dsh-task-notify,先卸载再装本包(通知设置会保留):
dsh plugin --profile web remove dsh-task-notify
若 profile 里仍有旧的手动 task-notify 路径,请删除以免覆盖新版本。
开启浏览器通知:
- 打开 DSH 设置 → 任务通知。
- 点击 启用浏览器通知,在浏览器中允许。
- 点击 测试通知 确认。
页面需通过本机 localhost / 127.0.0.1 或 HTTPS 打开;换浏览器、端口或域名需重新授权。
启用插件健康检查:在 cordis.patch.yml 中设置 sentinel-health 的 disabled: false 后重启 DSH。崩溃防护相关项为 sentinel-crash-guard(rescue / openPage / notify 等,整段关闭可用 disabled: true)。
卸载:
dsh plugin --profile web remove dsh-sentinel
典型用法¶
用启动器覆盖「启动即失败」¶
在终端启动 DSH 时,在命令前加上启动器(路径以 web profile 安装后为准):
node ~/.dsh/profiles/web/node_modules/dsh-sentinel/bin/dsh-sentinel-run.mjs -- dsh web --port 3080
启动器会把 DSH 输出原样转出;正常 Ctrl+C 或托盘停止不会误报崩溃。
自测崩溃防护¶
先停掉正在运行的 DSH 或换端口,再执行:
DSH_SENTINEL_CRASH_TEST=10 dsh web
约 10 秒后 DSH 会故意崩溃,应出现说明页与紧急 DSH;报告会标明自测。试完按说明页命令关闭紧急 DSH。
安装托盘(可选)¶
在 WSL 中:
bash ~/.dsh/profiles/web/node_modules/dsh-sentinel/tray/install.sh
文件复制到 Windows 的 %USERPROFILE%\DshTray。非默认端口可用 --port;自定义启动/停止可在 ~/.config/dsh-tray/env 中设置 DSH_TRAY_START、DSH_TRAY_STOP 等(见 README)。
Windows 通知备用路径:默认 PowerShell 5.1;失败时可尝试 pwsh + BurntToast 1.1.0:
Install-Module BurntToast -RequiredVersion 1.1.0 -Scope CurrentUser
适用场景与注意¶
适合在 Windows 11 + WSL2 上用 web profile 日常跑 DSH、希望离开浏览器窗口仍能收到完成/审批/待答提醒,并希望在进程崩溃时有报告与紧急修复入口的用户。
使用前请注意:插件与 DSH 在同一进程权限与环境中运行,安装前应阅读仓库源码与 MIT 许可证,自行评估信任边界。SkillHub 目录与 GitHub 均为社区生态,与 DeepSeek / 幻方无官方从属关系。
限制(来自 README):kill -9 或 OOM 强杀时无法留记录;疑似插件由堆栈推断;紧急 DSH 需 dsh 命令行,与桌面版限制见文档;健康检查对导入即失败的插件只能显示「没有启动」,细节需看启动日志。
结尾¶
dsh-sentinel 把「任务是否结束、是否要回来处理」和「崩溃后如何自救」从主进程里拆到外围:通知、托盘、启动器与可选健康检查,组成一套主要在 WSL + Windows 下的照看方案。
- 目录页:https://www.skillhub.cn/plugins/herenfor/dsh-sentinel
- GitHub:https://github.com/herenfor/dsh-sentinel
- 问题反馈:https://github.com/herenfor/dsh-sentinel/issues(附 DSH 版本、浏览器与复现步骤;分享日志前请去掉凭证与会话信息)