前言¶
用 DeepSeek Harness(DSH)跑智能體時,對話窗口不一定在前臺:Agent 通過 ask_user_question 提問、進入計劃審閱(plan review),或彈出權限確認(permission prompt)時,若你沒有盯着聊天界面,很容易漏掉。常見做法是反覆切回 DSH 窗口看有沒有 pending 請求,既打斷手頭工作,也拖慢人機協作節奏。
下面介紹社區插件 dsh-plugin-notify(維護者 nebula9i,分類:客戶端)。它在上述場景觸發時,在 Windows 上彈出原生桌面通知卡片提醒你;回答仍在聊天裏完成,卡片本身不提供作答按鈕。插件當前版本爲 0.1.0,僅支持 Windows(win32),依賴 Node.js ≥ 20 與 DSH >=0.2.0-0 <0.3.0。
這是什麼¶
dsh-plugin-notify 是 DSH 的 Cordis 插件 bundle:當 Agent 等待你的輸入時,調用 Windows PowerShell 繪製桌面卡片,把問題摘要、計劃審閱或權限說明展示在屏幕角落。它與 DSH 官方無從屬關係;可在社區目錄頁查看條目:nebula9i/dsh-plugin-notify,源碼與文檔在 GitHub。
設計原則是 「It notifies; it does not answer」:卡片沒有確認/拒絕按鈕,點擊卡片會把 Harness 窗口帶到前臺,你在聊天裏照常作答;插件在 waterfall 裏只調用 next() 並原樣返回結果,不改變聊天客戶端的行爲。
核心功能¶
觸發條件¶
插件監聽 Cordis waterfall,三類來源對應不同卡片樣式(README 中的 accent 顏色):
| 觸發 | 來源 waterfall | 卡片 |
|---|---|---|
ask_user_question |
user-questions/request |
問題文案,藍色強調 |
Plan review(exit_plan_mode) |
同上,intent.kind: plan-review |
紫色強調 |
| Permission prompt | approval/request |
琥珀色強調 |
可通過配置項 questions、approvals 分別開關問題類與審批類通知;主開關爲 enabled。
卡片如何消失¶
| 你的操作 | 結果 |
|---|---|
| 點擊卡片 | 激活聊天並關閉卡片(默認 focusOnClick: true) |
| 點擊 ✕ | 僅關閉卡片,不切換窗口 |
| 在聊天裏作答 | 請求 settled 後插件寫入 <cardId>.close,卡片自行收起 |
| 什麼都不做 | 卡片不會超時,一直保留 |
同一會話裏多個 pending 問題會合併爲一張卡片、多個 Tab(與聊天 UI 一致);不同 chat 各用獨立彈窗。問題與審批按 request.agent.session.id 與決策類型分組,不會混在同一張卡上。
多卡片堆疊¶
新 chat 的卡片佔據屏幕角落最下方槽位,已有卡片被上推;被上推的卡片啓動倒計時(默認 countdownMs: 20000 毫秒,底部進度條),倒計時結束後自動關閉。再次成爲「最新」的那張卡會停止倒計時並常駐。超過 maxStack(默認 5)時,最舊的一張會立刻關閉。
各卡片由獨立的 powershell.exe 進程繪製,插件用純文本 layout 文件協調堆疊順序(每行 cardId|countdownSeconds,最新在上)。默認播放系統提示音(sound: true),可在配置中關閉。
安裝與啓用¶
插件以 profile bundle 方式安裝,不是單獨的 dsh plugin add 命令。在桌面應用的 profile 目錄(%USERPROFILE%\.dsh\profiles\desktop)中,把 bundle 加入 package.json 的 dependencies 與 dsh.profile.bundles,然後執行 pnpm install。
1、編輯 package.json,增加 link 依賴並把 bundle 列入 profiles(路徑改爲你本機 checkout 的絕對路徑):
// package.json
"dependencies": {
"dsh-plugin-notify": "link:<absolute path to your checkout>"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-plugin-notify"
]
}
}
2、在 profile 目錄安裝依賴:
cd %USERPROFILE%\.dsh\profiles\desktop
pnpm install
bundle 自帶的 cordis.patch.yml 會掛載插件行,一般無需再寫一行配置。若要改默認行爲,可在 profile 的 cordis.patch.yml 中追加:
- id: notify
name: dsh-plugin-notify
config:
countdownMs: 30000
sound: false
3、重啓 DSH 應用後生效。打包版沒有就地熱加載;開發模式下可用 Reload Page,或在 DevTools(F12)裏執行 location.reload()。
配置項摘要¶
在 profile 的 cordis.patch.yml 裏通過 config 覆蓋默認值(完整表見 README):
| 鍵 | 默認值 | 含義 |
|---|---|---|
enabled |
true |
總開關 |
questions / approvals |
true |
是否響應問題 / 審批 waterfall |
countdownMs |
20000 |
被上推後的倒計時(毫秒) |
maxStack |
5 |
可見卡片上限 |
sound |
true |
系統感嘆號提示音 |
focusOnClick |
true |
點擊卡片是否激活 Harness 窗口 |
throttleMs |
5000 |
抑制循環中完全相同請求的重複彈窗 |
powershell |
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe |
繪製卡片的解釋器 |
maxBodyChars |
220 |
正文截斷長度 |
title |
DSH needs your answer |
無自定義 header 時的標題 |
debug / debugPath |
false / <plugin>/debug.log |
診斷日誌 |
典型用法與自測¶
安裝並重啓後,無需額外 API:Agent 在聊天裏發起用戶問題、計劃審閱或權限請求時,若對應開關爲 true,桌面會出現卡片。你在聊天中完成作答後,卡片應自動消失;點擊卡片則回到 DSH 繼續操作。
倉庫提供 smoke 測試與 PowerShell 預覽腳本,可在開發 checkout 中驗證行爲:
node test/smoke.mjs
powershell.exe -NoProfile -ExecutionPolicy Bypass -File test/previews.ps1
適用場景與注意¶
適合:在 Windows 上使用 DSH 桌面版、長時間並行其他窗口、希望 Agent 「等人」時有明顯桌面提醒的開發者。
務必注意:
- 插件僅在 Windows 上運行(
package.json的os: ["win32"]),Linux/macOS 不適用。 - 插件隨 當前 DSH 進程權限 執行,並會啓動
powershell.exe繪製 UI;安裝前請閱讀源碼與 MIT 許可證,確認可接受其行爲與依賴。 - 社區插件目錄 skillhub.cn 與 DeepSeek / 幻方無官方從屬關係;DSH 生態主張「一切皆插件」,本插件是其中的客戶端增強,不改變聊天內作答流程。
結尾¶
dsh-plugin-notify 把「Agent 在等你」這件事從「盯着聊天窗口」變成「桌面卡片 + 回聊天作答」:只觀察 waterfall、不替你在卡片裏點選,避免與聊天客戶端自己的 pending 狀態不同步。若你在 Windows 上常駐 DSH,可按上文 profile 方式 link 安裝並調整 cordis.patch.yml。
- 目錄頁:https://www.skillhub.cn/plugins/nebula9i/dsh-plugin-notify
- GitHub:https://github.com/nebula9i/dsh-plugin-notify