dsh-sentinel:在 DSH 主進程之外照看任務通知、托盤與崩潰恢復

前言

用 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 路徑,請刪除以免覆蓋新版本。

開啓瀏覽器通知:

  1. 打開 DSH 設置 → 任務通知。
  2. 點擊 啓用瀏覽器通知,在瀏覽器中允許。
  3. 點擊 測試通知 確認。

頁面需通過本機 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 下的照看方案。

羽毛球分组比赛记分
小程序二维码

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

小夜