當 DeepSeek Harness (DSH) 的 agent 轉入空閒、錯誤或阻塞狀態時,缺少外部反饋。該插件訂閱 DSH 內置的 agent/status 事件,在任務完成、出錯或阻塞時向你的設備推送通知。
安裝¶
使用本地文件路徑安裝插件。其他 profile 的安裝命令同理。
dsh plugin --profile web add file:/path/to/dsh-task-notify
若 pnpm v11 攔截供應鏈策略,需在命令末尾追加 --config.minimum-release-age=0。
配置¶
編輯 ~/.dsh/settings.yaml,在文件末尾添加 task-notify: 段。
task-notify:
enabled: true
notifyOn: [idle, error, blocked] # 可選事件:idle error blocked goal-completed
agents: root # root=只通知頂層代理 | all
coalesceWindowMs: 2000 # 同會話窗口內合併重複通知
desktop:
enabled: auto # auto | on | off
sound: true # macOS 播放 Glass 提示音;Windows 靜音開關
format:
time: short # hidden | short | full
showDuration: true # 負載攜帶 durationMs 時追加「用時 X」
icons:
enabled: true # 圖形圖標總開關
urlTemplate: "" # 遠程圖標模板,如 https://host/icons/{event}.svg
bark:
enabled: false
server: https://api.day.app
deviceKey: "你的deviceKey"
ntfy:
enabled: false
server: https://ntfy.sh
topic: "只有你知道的隨機topic"
token: ""
serverchan:
enabled: false
sendKey: ""
webhook:
enabled: false
url: ""
headers: {}
配置項優先級從高到低爲:patch 顯式配置 > settings.yaml > 環境變量 > 默認值。
功能與渠道¶
該插件支持多平臺與多渠道分發,並在桌面端提供通知合併去重。
桌面端¶
- macOS:調用
osascript調用系統通知中心。受限於系統限制,僅支持純文本 + 提示音,無法自定義通知圖。 - Windows:通過 PowerShell + WinRT 發送 Toast 通知,支持嵌入 PNG 圖標。
移動端與網絡¶
- iOS:通過 Bark 推送。
- Android / iOS:通過 ntfy 推送。
- 微信:通過 Server醬 推送。
- 通用:通過任意 Webhook 發送 JSON 載荷。
通知內容¶
正文由 composeBody 統一格式化爲:內容摘要 · 時間 · 用時 X。
* format.time 控制時間顯示:short=HH:mm,full=YYYY-MM-DD HH:mm:ss,hidden=隱藏。
* format.showDuration 控制是否顯示任務耗時。
* 時間與用時後綴不參與截斷,始終完整顯示。
圖標¶
- 標題一律純文本,無 emoji。
- 圖標資源在包內
assets/icons/,包含 SVG 矢量源與 64×64 PNG。 - Windows:PNG 以
appLogoOverride嵌入。 - Bark / ntfy:配置
icons.urlTemplate後自動附加 icon 參數。 - Webhook:JSON 載荷附帶 icon 與內聯 iconSvg。
- macOS:無自定義圖,僅純文本。
菜單與測試¶
交互式配置¶
不想手編 YAML,可運行交互菜單。菜單會自動備份原配置爲 settings.yaml.bak-<時間戳>。
npm run menu
自測¶
向所有啓用的渠道發送一條樣例通知。
node self-test.mjs
# 僅測試桌面通道
node self-test.mjs --channel desktop
冒煙測試¶
在真實環境中驗證安裝路徑與事件處理。
npm run smoke
注意事項¶
- Node.js 版本:需安裝 Node.js
^22.19.0 || >=24。 - 依賴:純 ESM 模塊,無構建步驟。
- 運行權限:插件以當前 dsh 進程權限運行,安裝前請檢查源碼與許可證。