dsh-notify-on-complete:給 DeepSeek Harness 添加桌面通知

前言

用 DeepSeek Harness(dsh)跑長任務時,終端不一定一直開着,Web UI 也可能被切走。如果任務結束、模型需要提問、或等待審批,開發者需要一種低打擾的方式來知道“該回來了”。

pitetow/dsh-notify-on-complete 就是爲此寫的 DSH 插件:在運行結束、模型調用 ask_user_question、或等待沙箱提權 / 工具權限審批時發送桌面通知。插件定位爲 extension,MIT 許可證,package.json 中版本號爲 0.3.0

核心功能

運行結束通知

插件在頂層運行結束後發送通知,並按結果區分正文類型:

  • completed
  • error
  • aborted
  • max-tokens

插件只通知頂層運行,過濾 subagent 會話,判斷字段爲:

header.origin === 'subagent'

這樣可以減少一次 CLI 運行中多個子會話重複通知的情況。

會話中即時提醒

除了運行結束,插件還會在會話過程中觸發通知:

  • 模型調用 ask_user_question
  • 等待沙箱提權審批
  • 等待工具權限審批

這些場景通常意味着任務在等待用戶輸入。插件通過以下配置項精細控制:

  • onBlocked
  • onQuestion
  • onApproval

零運行時依賴

插件不依賴 dsh 內部包。通知通過 Node.js 的 child_process.spawn 以 detached 子進程發出,避免受主進程退出路徑影響。

跨平臺通知命令

插件根據當前平臺選擇通知命令:

  • macOS:osascript
  • Linux:notify-send,不可用時回退 kdialog
  • Windows:PowerShell

不支持的平臺在加載時跳過並警告,不會在每個事件上拋錯。

系統提示音

插件支持系統提示音:

  • macOS:Glass
  • Windows:SystemSounds
  • Linux:canberra-gtk-play,不可用時回退 paplay

可以通過以下配置關閉提示音:

sound: false

安裝與啓用

前置條件

需要:

  • Node.js ^22
  • 已安裝的 dsh CLI
  • pnpm

插件依賴:

@deepseek-ai/cordis@^4.0.1

該依賴由 dsh CLI 提供,pnpm 安裝時會自動解析。

一鍵安裝

默認安裝命令:

curl -fsSL https://raw.githubusercontent.com/pitetow/dsh-notify-on-complete/main/scripts/install.sh | bash

這條命令會執行遠程腳本。安裝前建議先查看倉庫中的:

scripts/install.sh

安裝腳本默認不覆蓋已存在的源碼目錄。如果需要覆蓋更新,可以使用:

curl -fsSL https://raw.githubusercontent.com/pitetow/dsh-notify-on-complete/main/scripts/install.sh | bash -s -- --force

注意:--force 會刪除並重新下載源碼,該目錄中的本地編輯會丟失。

安裝到其他 profile

默認安裝到 web profile。如果要安裝到 headless profile:

curl -fsSL https://raw.githubusercontent.com/pitetow/dsh-notify-on-complete/main/scripts/install.sh | bash -s -- --profile headless

驗證是否生效

可以檢查當前 profile 的配置中是否出現插件:

dsh --profile web --dump-config | grep -n notify-on-complete

如果看到 notify-on-complete 相關條目,說明插件已經進入當前 profile 的配置樹。

生效方式:

  • CLI 一次性運行:下次運行生效
  • Web GUI:需要重啓 dsh web 進程

典型用法

更新插件

方式一:使用安裝腳本強制更新。

curl -fsSL https://raw.githubusercontent.com/pitetow/dsh-notify-on-complete/main/scripts/install.sh | bash -s -- --force

方式二:手動更新本地源碼。

cd ~/.dsh/plugins/dsh-notify-on-complete
git pull
pnpm install
pnpm run build
dsh plugin --profile web add link:.

完成後重啓或重新運行對應的 dsh 進程。

卸載插件

dsh plugin --profile web remove dsh-notify-on-complete
rm -rf ~/.dsh/plugins/dsh-notify-on-complete

卸載後重啓 dsh

適用場景與注意

適合這些情況:

  • 跑較長時間的 DSH 任務,不想一直盯着終端
  • 模型經常調用 ask_user_question,需要等用戶回答
  • 任務會觸發沙箱提權或工具權限審批
  • 使用 macOS、Linux 或 Windows,並希望用系統通知提醒

安裝前需要注意:

  1. 插件會以當前 dsh 進程的權限運行,建議先檢查源碼和許可證。
  2. curl | bash 會執行遠程腳本,建議使用前審查 scripts/install.sh
  3. 安裝腳本默認不覆蓋已有目錄;使用 --force 前確認沒有需要保留的本地修改。
  4. Web GUI 場景需要重啓 dsh web 進程後生效。

項目地址

GitHub:

https://github.com/pitetow/dsh-notify-on-complete
羽毛球分组比赛记分
小程序二维码

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

小夜