前言¶
在 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 裏「該看一眼」的事件交給系統通知中心,並按需關閉聲音、靜默時段或點擊聚焦。