前言¶
用 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(推薦)
- 側欄 Plugins → Install → 輸入包名
@hope_phenom/dsh-plugin-notify。 - 安裝完成後點 Enable now(新 bundle 可通過 HMR 激活;若界面無反應可重啓 DSH)。
- 在 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 許可證。
desktopprofile 僅能通過桌面應用自帶的dsh.cmd管理(README 給出的 Windows 路徑);Linux / macOS 用戶若 CLI 路徑不同,應以本機 DSH 安裝文檔爲準,包名與 profile 名稱不變。- DSH 生態強調「一切皆插件」;社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
@hope_phenom/dsh-plugin-notify 把「輪次結束 → 桌面通知」做成標準插件:訂閱會話事件、自帶 Python/PowerShell 投遞與完整設置頁,減少對托盤與 stdout 協議的依賴。