@hope_phenom/dsh-plugin-notify:DSH 每輪迴答結束時的桌面通知

前言

用 DeepSeek Harness(DSH)跑長對話或子任務時,窗口在後臺、你在寫別的代碼,往往要等切回界面才知道這一輪已經結束。以前有的做法依賴托盤輔助進程和 DSH_NOTIFY 標準輸出協議;啓動方式一變(dsh web、桌面應用、是否帶托盤),通知鏈路就容易對不齊。

下面介紹 Hope-Phenom 維護的標準 DSH 插件 @hope_phenom/dsh-plugin-notify:在 Host 內訂閱 session/event,每輪 turn/end 發一條桌面通知,不依賴托盤進程,也不要求單獨的 stdout 協議。

這是什麼

npm 包名 @hope_phenom/dsh-plugin-notify(倉庫 Hope-Phenom/dsh-plugin-notify),分類爲客戶端插件。簡介:每輪迴答結束時發一條桌面通知;相當於舊版 DSH 托盤輔助(DshNotifyicon)裏的通知能力,以獨立插件重新實現。許可證 MIT,當前 package 版本 0.1.0。

核心功能

事件與觸發

  • 在每次 turn/end 時通知;可選是否對 subagent / 子任務也通知。
  • 內置「安靜」策略:可設最短輪次時長(毫秒),低於閾值不彈;對通知子進程有硬超時。

投遞通道

默認 Auto:檢測到 Python 則用內置 scripts/notify.py,否則用 scripts/notify.ps1,無需先手工配解釋器。

也可強制 Python、PowerShell,或 Custom command(任意可執行文件 + 帶佔位符的參數模板,類似舊托盤輔助的外部命令)。

跨平臺大致爲:Windows 系統 balloon / WinRT toast;macOS osascript;Linux notify-send。內置 Python 腳本優先 notifypy,再按平臺回退;PowerShell 腳本在 Windows / macOS / Linux 上分派到對應實現。

設置頁

Settings → Notifications 分四組:何時通知、投遞通道、通知文案、高級項(超時、設置文件路徑、發送/失敗計數、最近一次投遞結果)。底部有 Send test、Restore defaults、Save;支持實時預覽與重新檢測通道。

文案與參數模板支持佔位符,例如 {label}、{sessionTitle}、{turn}、{reason} / {reasonLabel}、{duration} / {durationMs}、{title} / {message} 等;參數模板按空格拆分,含空格需加引號,單獨一個佔位符會作爲單個參數傳入(便於多行正文)。

配置採用原子讀寫:設置文件損壞時會回退默認並給出說明,避免插件整體不可用。

安裝與啓用

前提:DSH 桌面應用或 dsh web 已在 desktop profile 下運行。

方式 A — npm(推薦)

  1. 側欄 Plugins → Install → 輸入包名 @hope_phenom/dsh-plugin-notify。
  2. 安裝完成後點 Enable now(新 bundle 可通過 HMR 激活;若界面無反應可重啓 DSH)。
  3. 在 Settings → Notifications 裏配置。

命令行(需先退出 DSH 桌面應用,因其會鎖定 profile 目錄)示例:

& "C:\Users\<you>\AppData\Local\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" `
  plugin --profile desktop add @hope_phenom/dsh-plugin-notify

方式 B / C — 本地目錄

在 Plugins 頁選擇本地目錄並填倉庫絕對路徑,或用同一 dsh.cmd 執行:

& "C:\Users\<you>\AppData\Local\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" `
  plugin --profile desktop add "F:\WorkSpace\dsh-plugin-notify"

注意:路徑必須是絕對路徑;相對路徑會按 shell 當前目錄解析,裸目錄名會被當作 npm 包名。替換同名已安裝包時,需重啓進程以加載新的 JS 模塊。

卸載:Plugins 頁操作,或:

dsh plugin --profile desktop remove @hope_phenom/dsh-plugin-notify

典型用法

安裝並啓用後,默認 Auto 通道在多數環境即可收到「輪次結束」通知。若要驗證當前配置,在 Settings → Notifications 底部點 Send test。

若已有 Python 通知腳本,可切到 Python 通道並改參數模板,例如:

{script} {message} --title {title}

內置腳本接受 --title、--message、--event、--kind、--session、--turn、--reason、--duration-ms 等參數。

在不真正發送通知的前提下查看某平臺會執行的命令(便於跨平臺檢查):

python scripts/notify.py --dry-run --platform macOS --title T --message M
python scripts/notify.py --dry-run --backend notify-send --title T --message M
pwsh -File scripts/notify.ps1 -DryRun -Platform Linux -Title T -Message M

適用場景與注意

適合:長時間跑 DSH、需要「這一輪答完」桌面提醒的開發者;希望統一 dsh web、桌面應用、有無托盤等多種啓動方式下的通知行爲。

注意:

  • 插件在 Host 內運行,通知子進程以 當前 DSH 進程權限 啓動;安裝前建議閱讀倉庫源碼與 MIT 許可證。
  • desktop profile 僅能通過桌面應用自帶的 dsh.cmd 管理(README 給出的 Windows 路徑);Linux / macOS 用戶若 CLI 路徑不同,應以本機 DSH 安裝文檔爲準,包名與 profile 名稱不變。
  • DSH 生態強調「一切皆插件」;社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

@hope_phenom/dsh-plugin-notify 把「輪次結束 → 桌面通知」做成標準插件:訂閱會話事件、自帶 Python/PowerShell 投遞與完整設置頁,減少對托盤與 stdout 協議的依賴。

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

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

小夜