前言¶
用 DeepSeek Harness(dsh)跑長任務時,終端不一定一直開着,Web UI 也可能被切走。如果任務結束、模型需要提問、或等待審批,開發者需要一種低打擾的方式來知道“該回來了”。
pitetow/dsh-notify-on-complete 就是爲此寫的 DSH 插件:在運行結束、模型調用 ask_user_question、或等待沙箱提權 / 工具權限審批時發送桌面通知。插件定位爲 extension,MIT 許可證,package.json 中版本號爲 0.3.0。
核心功能¶
運行結束通知¶
插件在頂層運行結束後發送通知,並按結果區分正文類型:
completederrorabortedmax-tokens
插件只通知頂層運行,過濾 subagent 會話,判斷字段爲:
header.origin === 'subagent'
這樣可以減少一次 CLI 運行中多個子會話重複通知的情況。
會話中即時提醒¶
除了運行結束,插件還會在會話過程中觸發通知:
- 模型調用
ask_user_question - 等待沙箱提權審批
- 等待工具權限審批
這些場景通常意味着任務在等待用戶輸入。插件通過以下配置項精細控制:
onBlockedonQuestiononApproval
零運行時依賴¶
插件不依賴 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 - 已安裝的
dshCLI - 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,並希望用系統通知提醒
安裝前需要注意:
- 插件會以當前
dsh進程的權限運行,建議先檢查源碼和許可證。 curl | bash會執行遠程腳本,建議使用前審查scripts/install.sh。- 安裝腳本默認不覆蓋已有目錄;使用
--force前確認沒有需要保留的本地修改。 - Web GUI 場景需要重啓
dsh web進程後生效。
項目地址¶
GitHub:
https://github.com/pitetow/dsh-notify-on-complete