dsh-notify:把 DSH 關鍵事件推到 Windows 通知中心

前言

在 DeepSeek Harness 裏跑長任務時,窗口不一定在前臺:根回合結束、審批卡住、模型通過 ask_user_question 提問,或上下文/token 逼近上限,若只靠盯着界面,很容易漏掉需要立刻處理的節點。社區裏也有其它通知類插件;本文介紹的 dsh-notify(維護者 NotLinky671,GitHub NotLinky671/dsh-notify)走 Windows 10/11 原生 Toast,把上述事件寫入系統通知中心,並可選點擊通知把 Harness 窗口拉到前臺。

這是什麼

dsh-notify 是 DSH 的客戶端類插件:監聽會話與投影事件,在 Windows 上通過 PowerShell 5.1 調用 WinRT 彈出 Toast。它不發起網絡請求,運行時零第三方 npm 依賴;macOS 在路線圖中,Linux 未計劃——在非 Windows 上僅打一條警告後安靜退出,不影響 DSH 本體。

會觸發哪些通知

下面表格與 README 一致,便於對照默認開關與展示方式(Banner 爲常規橫幅;Alert 爲長駐 + 默認約 1.3s 提示音,由插件經 SoundPlayer 播放,而非 Toast XML 裏的 <audio>)。

事件 來源 展示 默認
根回合完成 turn/end,reason=completed Banner 開
根回合失敗 turn/end,reason=error Alert 開
根回合中斷 turn/end,reason=aborted / max-tokens / blocked Banner 開
需要審批 approval/asked Alert 開
Agent 向你提問 tool/call,name=ask_user_question Alert(含問題標題) 開
審批被策略自動拒絕 approval/asked,policy=never Banner 隨上項策略
上下文超閾值 contextPressure 投影 Banner;≥95% 升爲 Alert 開(80%)
當日 token 預算超限 tokenUsage 投影增量 Alert(每日一次) 關
子 Agent 回合結束 turn/end,origin=subagent Banner 關

安裝與啓用

僅支持 Windows。README 寫明在 DSH 0.2.x Desktop 上驗證過;安裝前須完全退出 DeepSeek Harness(含托盤),因爲 desktop profile 在應用運行期間不能被外部改寫。

不要執行 dsh plugin add dsh-notify:npm 上另有同名包 Pasumao/dsh-plugin-notify,會裝錯項目。應使用 github: 形式:

# 1. 完全退出 DeepSeek Harness(含托盤圖標)

# 2. 安裝
& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "github:NotLinky671/dsh-notify"

# 3. 手動重新啓動應用

使用 dsh web 時,把 --profile desktop 換成 --profile web。

需要固定版本或環境無 git 時,可用 release 壓縮包:

& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "https://github.com/NotLinky671/dsh-notify/releases/latest/download/dsh-notify.tgz"

本地改插件源碼時,可 link 當前目錄,重啓即生效,無需反覆安裝:

& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "link:$PWD"

配置

在 ~/.dsh/profiles/desktop/cordis.patch.yml(dsh web 對應 .../profiles/web/)裏按插件 id 覆蓋:

- patch:
    - id: dsh-notify
      config:
        contextWarnPercent: 80      # 0 表示關閉上下文警告
        contextCooldownMs: 300000   # 同一會話內兩次警告的最小間隔
        dailyTokenBudget: 20000000  # 每日 20M token;0 表示關閉
        quietHours: [23, 8]         # 23:00–08:00 不彈 Toast(可跨午夜)
        notifySubagentEnd: true     # 開啓子 Agent 結束通知
        sound: false
        clickFocus: false

改完後重啓應用。當日 token 累計與基線寫在 ~/.dsh/storages/dsh-notify/state.json;插件首次見到某 session 只記基線,不把歷史用量算進當天。

可選字段 README 還提到 soundEvent、criticalRepeat 等,用於調整 Alert 音色與重複次數;完整列表以倉庫 README 爲準。

點擊通知聚焦窗口

默認首次加載會在 HKCU(當前用戶、無需管理員)寫入 AppUserModelID 與 dsh-notify: 協議;點擊 Toast 經 wscript.exe 隱藏調用 focus.ps1,嘗試把 Harness 窗口帶到前臺。若不需要點擊行爲,設 clickFocus: false 可跳過註冊表,Toast 仍正常顯示。

實現與運行環境注意

  • 通知腳本依賴 Windows PowerShell 5.1 的 WinRT 投影;PowerShell 7(pwsh)無 Windows.UI.Notifications,會直接失敗。
  • 插件以當前 DSH 進程權限運行;安裝前建議瀏覽源碼並確認許可證(MIT)。
  • 無網絡、不讀取消息正文,僅使用 session/title、approval/policy 及 tokenUsage / contextPressure 等元數據。

適用場景

適合在 Windows 10/11 上長時間掛 DSH Desktop、又不想一直盯着窗口的開發者:失敗與審批、模型提問用 Alert 拉高注意力;上下文與 token 預算可按項目習慣調閾值。社區插件目錄見 skillhub.cn 上的 dsh-notify 頁;源碼與 issue 在 GitHub。DSH 生態強調「一切皆插件」,該目錄爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。

經過上面的步驟,你可以在 Windows 上把 DSH 裏「該看一眼」的事件交給系統通知中心,並按需關閉聲音、靜默時段或點擊聚焦。

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

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

小夜