前言¶
DeepSeek Harness(dsh)把智能體跑在本地 Web 界面裏,一輪任務經常要等很久:改代碼、跑測試、查倉庫,瀏覽器標籤頁一切走,完成或報錯就只能回頭盯着會話列表。頁面開着但人在別的窗口時,這種等待尤其明顯。
DeepSeek 官方把 Harness 的設計寫成「一切皆插件」:模型、工具、會話、沙箱、循環和 UI 都是可替換的插件,不必改 Harness 源碼。社區目錄 deepseek-harness-plugin.com 收錄了不少第三方擴展,它是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。
dsh-notification 就是其中一款通知類插件。它不給模型加工具,只在 Web GUI 裏用瀏覽器的 Notification API 彈出系統通知,讓你切到別的標籤頁也能知道這一輪已經結束。本文按目錄詳情頁、倉庫 README / README.zh.md、package.json 和 DeepSeek Harness 官方說明覈對後整理。
這是什麼¶
dsh-notification 是面向 DeepSeek Harness Web GUI 的桌面通知插件,由 omdsh-dev 維護,許可證 MIT,當前倉庫版本爲 0.1.2。社區目錄把它歸在「通知與集成」,2026-08-15 收錄;寫作當日(2026-08-17)目錄頁與 GitHub 倉庫均顯示 55 stars。
它解決的問題很具體:會話結束一輪後,瀏覽器彈出系統通知。你可以按結束原因開關,再用關鍵詞包含 / 排除規則過濾,避免所有完成都響一遍。
倉庫 README 把實現拆成兩半,不需要改 Harness 源碼:
host: notification 投影(最近一輪的原因/正文/工具名) --session/projection--> 瀏覽器
client: 會話列表完成提醒(即時、去重)+ 持久化設置
-> 權限 + 當前會話可見性門控
-> new Notification("DSH 已完成", { body: "部署完成" })
host 側只對已有會話日誌做只讀投影(結束原因、截斷後的回覆正文、調用過的工具名),client 側監聽會話列表裏「未選中會話已完成」的即時去重信號,再套上你保存在瀏覽器裏的偏好。插件不寫會話日誌,不註冊面向模型的工具,也不往請求裏塞任何提示詞,因此沒有額外 token 開銷。
核心功能¶
按結束狀態決定要不要響¶
host 投影會帶上這一輪的結束原因。設置裏可以分別開關五類:
- 正常完成(completed)
- 出錯(error)
- 中止(aborted)
- 阻塞(blocked)
- 達 Token 上限(token limit)
默認只開「完成」和「出錯」,其餘關閉。長時間跑任務時,通常只需要知道成功或失敗;中止、阻塞、打到 token 上限可以按自己的工作流再打開。
關鍵詞包含 / 排除¶
規則匹配對象是會話標題、該輪迴覆文本,以及調用過的工具名。更早的輪次不會參與匹配。
- 包含規則:至少命中一條才通知;一條都沒有時整輪不彈。
- 排除規則:命中即不通知。
- 支持字面量或正則,可選擇是否區分大小寫。
默認沒有任何關鍵詞規則。需要的時候可以用來只盯含 deploy、error 的會話,或把噪音大的工具名排除掉。
可見性門控¶
「僅在任務不在眼前時通知」默認開啓:當前正在看的那條會話完成時不彈;頁面在後臺,或你正在看別的會話、別的工作區時仍會提醒。關掉之後,即使正盯着該會話也會通知。同一會話的多條通知會互相替換,避免堆一串橫幅。
另外還有總開關和「需要手動關閉」。總開關關掉後不再彈出,規則和偏好仍保留;手動關閉打開後,通知會一直待到你點掉。
權限與測試¶
偏好存在瀏覽器 localStorage。設置段在 設置 > 通知,可以在這裏授予瀏覽器 Notification 權限,併發送一條測試通知,用來確認系統層面沒有把瀏覽器通知攔掉。
安裝與啓用¶
插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。裝之前應先看倉庫源碼和 MIT 許可證。
社區目錄頁給出的安裝命令是:
dsh plugin add github:omdsh-dev/dsh-notification
這是目錄頁的原文寫法。該插件的 dsh.plugin.json 把 client 平臺聲明爲 web,倉庫 README 因此要求裝進 web profile,並用帶版本標籤的 tarball,裝完後重啓 web 服務,讓 host 半部分和新的 client bundle 一起生效:
dsh plugin --profile web add https://github.com/omdsh-dev/dsh-notification/archive/refs/tags/v0.1.2.tar.gz
默認的 dsh web profile 已包含所需的 client 組合(會話列表、設置外殼、locale)。目錄頁還提示:如需可復現安裝,可固定 commit 哈希,例如 dsh plugin add github:omdsh-dev/dsh-notification#<commit>。
裝完後打開 Web GUI,到 設置 > 通知 打開總開關,並在瀏覽器彈出權限請求時選擇允許。macOS 等系統還要在系統設置裏允許該瀏覽器發送通知,否則頁面裏開了也看不見橫幅。
典型用法¶
- 先發一條測試通知,確認瀏覽器權限和系統通知開關都已放行。
- 保持默認:完成和出錯才提醒,「僅在任務不在眼前時通知」保持開啓。切到別的標籤頁跑一輪任務,完成後應看到標題爲「DSH 已完成」一類的系統通知,正文是該輪迴復的文本摘要。
- 若只關心部署或報錯,加包含規則(例如字面量
deploy)或排除規則,過濾掉不需要的會話標題、回覆片段或工具名。 - 回覆很長時,host 側會按
maxBodyChars截斷後再送給瀏覽器。需要更長摘要時,在cordis.yml對應插件行上改配置:
- id: dsh-notification
name: dsh-notification
config:
maxBodyChars: 400 # 投影正文預算;更長的回覆會在 host 側省略號截斷
點擊通知只會把瀏覽器窗口拉到前臺,不會跳到那一輪的具體位置。通知正文是純文本摘要,不是完整對話。
適用場景與注意事項¶
比較適合這些情況:
- 用
dsh web跑較長的編碼或排查任務,人會切去看文檔、郵件或別的倉庫。 - 同時開着多個會話或工作區,需要知道後臺那條已經結束。
- 只想被「完成 / 出錯」打斷,而不是每一次中止或阻塞都彈一次。
使用前要清楚邊界,這些都寫在倉庫的「已知限制」裏:
- 標籤頁必須開着。頁面隱藏時瀏覽器仍可彈通知;標籤頁關掉之後不會再彈。它不是操作系統級的常駐守護進程。
- 必須授予 Notification 權限。站點權限被拒絕後,無法從頁面內部強行恢復,需要到瀏覽器站點設置裏改。
- 只在 running→idle 邊沿觸發一次。斷線期間完成的輪次,重連後不會補發。
- 規則只看最近一輪。會話標題 + 最近一輪迴復 + 該輪工具名,不匹配更早的輪次。
- 點擊不深鏈。只聚焦窗口,不會定位到那一輪。
目錄頁的安全提示同樣適用:插件以當前 dsh 進程權限運行。這款插件聲稱自己只讀投影、不寫日誌、不給模型加工具,但仍應自行覈對源碼後再裝。
小結¶
dsh-notification 把「這一輪跑完了」從 Web 頁面裏挪到系統通知欄,用結束狀態開關和關鍵詞規則控制噪音,並且不改模型請求、不改會話日誌。它依賴瀏覽器 Notification API 和仍打開着的 Web GUI,適合已經在用 dsh web、又經常把標籤頁切走的人。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-notification/
GitHub:https://github.com/omdsh-dev/dsh-notification