前言¶
DeepSeek Harness(DSH)採用插件化架構。在 Windows 環境下,管理一個常駐系統的托盤監視程序(如 DshTaskWatcher)通常需要手動下載安裝包、配置環境並確保進程常駐。yeqingtang/dsh-task-watcher-plugin 將 DshTaskWatcher(獨立 PowerShell 托盤應用)打包進 DSH 插件,在 DSH 的框架下完成部署、拉起與生命週期管理,解決了獨立進程與宿主服務解耦的需求。
核心功能¶
該插件採用 Host + Web 雙半端 架構,主要能力如下:
- 脫離宿主進程:使用
CREATE_NO_WINDOW標誌啓動 PowerShell,不綁定 job,無終端窗口。DSH 進程重啓或關閉時,托盤監視器會繼續運行,不受影響。 - 獨立生命週期:插件僅負責部署與啓動,不干預托盤的日常運行。即便停用或卸載插件,正在運行的監視器也不會被終止。
- 停止意圖記憶:當通過開關或托盤右鍵退出監視器時,會生成
stopped.flag。DSH 重啓後不會自動拉回已停止的監視器,除非手動重新啓動(這符合“崩潰/強殺仍允許自動恢復”的設計邏輯)。 - 單實例互斥:監視器內部實現了互斥鎖,防止與手動安裝的實例產生雙托盤。
- 零依賴零構建:依賴庫爲純手寫 ESM,無構建步驟,減少環境複雜度。
管理 API¶
插件提供三個 Loopback POST 接口用於控制:
POST /api/dsh-task-watcher/status:查詢運行狀態、PID 和已部署版本。POST /api/dsh-task-watcher/start:增量覆蓋部署 assets 並拉起托盤。配置文件config.json僅在缺失時寫入。POST /api/dsh-task-watcher/stop:停止托盤進程。匹配邏輯嚴格錨定-File DshTaskWatcher.ps1,避免誤殺其他包含該文件名的進程。
安裝與啓用¶
在終端中執行以下命令安裝插件:
dsh plugin --profile web add @yeqingtang/dsh-task-watcher-plugin
安裝完成後,需要重啓 web 服務才能生效。啓用後,可在 設置 → 插件 → 任務監視器 中看到狀態顯示與啓停開關(界面每 10 秒輪詢一次,支持中英雙語)。
使用注意事項¶
- 平臺限制:僅支持 Windows (win32)。
- Node 版本:要求 Node.js 版本 >= 20.0.0。
- 部署路徑:監視器會被安裝到
%LOCALAPPDATA%\DshTaskWatcher。 - 停止邏輯:停止接口只匹配通過
start接口拉起的進程,不會誤殺其他啓動腳本。
總結¶
該插件通過 Shell 集成的方式,將獨立的 Windows 托盤程序納入 DSH 生態。它既保留了監視器的獨立性,又通過 API 提供了統一的控制入口,適合需要在 Windows 環境下維護常駐後臺任務的 DeepSeek Harness 用戶。