dsh-approval-notifier(哨兵):DSH 內待確認事項提醒

前言

在 DeepSeek Harness(DSH)裏跑智能體時,審批、越權確認、ask_user_question 提問往往散落在不同工作區或會話裏。你一旦切到別的界面或盯着當前對話,很容易錯過需要本人拍板的節點。系統級桌面通知能用,但和 Harness 的會話上下文脫節,也不符合「只在客戶端內完成操作」的習慣。

「哨兵 / Sentinel」(包名 dsh-approval-notifier)是 Macicle77 維護的客戶端類 DSH 插件:當任意工作區、任意會話有待確認事件時,在 DSH 右下角逐條彈出緊湊提醒卡片,可配動畫與提示音;點「去處理」會跳到對應會話,並在左下角短暫反饋「正在處理」。它只負責提醒,不替你做任何決定。

這是什麼

  • 名稱:dsh-approval-notifier(展示名:哨兵 / Sentinel)
  • 維護者:Macicle77(npm 作者字段:macicle)
  • 分類:客戶端(dsh.client,注入 Web 端 UI)
  • 許可證:MIT(見倉庫 LICENSE)
  • 當前版本(package.json):2.0.1
  • DSH 引擎要求:dsh 滿足 >=0.2.1-rc.1 <0.2.2-0 || >=0.2.2-rc.1 <0.3.0-0,Node >=20

插件通過 Host 半觀察待確認流,由瀏覽器半繪製右下角卡片、提示音與窗口標題提示;不使用 Windows 或其它系統通知 API。

核心功能

提醒方式與佈局

  • 提醒落在 Harness 窗口內:右下角卡片 + 提示音 + 可選窗口標題閃爍待確認數量。
  • 卡片寬 min(390px, 100vw-36px),多條自下而上堆疊,新卡默認間隔 700ms(可配置);序號自上而下 1→2→3。
  • 框架貼對話區測量:右貼滾動條左緣、底邊貼在輸入框(或審批面板)上沿之上,避免擋住底部輸入框和原生「允許一次 / 拒絕」等按鈕;若原生按鈕被卡片蓋住,會在卡片上方繪製青色高亮環,點擊可穿透點到原生按鈕。

去處理與左下反饋

點某條「去處理」:該卡約 0.18s 收起後移除,一定跳轉到對應會話(跳轉前保存視圖,其它提醒仍保留)。同時在左下角(工作區列表下方、頭像上方)顯示「✅ 提示有效,正在處理」,5 秒後約 300ms 淡出。

30 秒分級升級(按條獨立)

某條 30 秒未處理時,僅該條卡片與文字等比放大(每級約 +6%,封頂約 +30%),提示音換成更急促的升級音,音量逐級增加。升級與「二次提醒」邏輯獨立。

二次提醒

點「去處理」後若 10 秒內沒有任何 pointer/滾動/按鍵等操作,且請求仍 pending、頁面可見,會重新彈出該條:紅色警示卡片 +「⚠ 二次提醒」+ 雙響提示音;每條每次「去處理」最多觸發一次二次提醒。

條數多時的緊湊黃條

高度不夠時先壓縮單卡;仍放不下時,全部卡片切換爲緊湊黃條(深色底 + 亮黃描邊),只顯示「第幾次 · 項目 · 第幾級」。鼠標懸停某條時該條恢復全文與按鈕(類似 Mac Dock),其餘保持緊湊。升級等級在緊湊模式下仍逐級醒目(琥珀→橙→紅等),升級瞬間該條可抖動約 3 秒。

去重與測試

同一待確認事件只生成一張卡(Host 與本地兜底統一去重)。設置頁提供測試提醒:默認每 3 秒連續彈 3 條,可驗證彈出順序與二次提醒。

配置與熱更新

全部設置在 Plugins → Installed plugins → 哨兵 bundle 配置頁,經官方 Host Config(volatile 字段)寫入 profile 的 cordis.patch.yml,保存後 HMR 立即生效;無浮動設置面板。本地圖片/音頻上傳目錄爲 $DSH_HOME/approval-notifier/assets/($DSH_HOME 默認 ~/.dsh)。

主要配置項(摘自 README 表格):

字段 默認 說明
提醒品牌名 哨兵 通知/標題裏顯示的名字
彈出動畫 / 逐條間隔 向上彈出 / 700ms 6 種預設 + 預覽
自定義動畫圖片 無 網圖 URL 或本地上傳(≤3MB)
首次提示音 / 音量 叮咚 / 0.6 6 種預設;可自定義 URL/本地(≤5MB)
30 秒升級 開 / 30s / 5 級 / 急促警報 僅放大該條
二次提醒 開 / 10s 點去處理後無操作才觸發
標題提示 開 窗口標題閃爍待確認數量

還可配置:升級開關/間隔/級數/升級音、自定義提示音等(見 README「可配置」一節)。

安裝與啓用

推薦走 DSH 官方插件管理器,不要憑倉庫名手拼 CLI 安裝命令。

  1. 打開 DSH 側邊欄 → Plugins → Install / Add plugin。
  2. 若包已發佈到 npm:填入包名 dsh-approval-notifier,或在插件市場 Discover 一鍵安裝(若已收錄)。
  3. 本地/離線:填 tarball 絕對路徑(倉庫 node tools/package.mjs 產出 dist/dsh-approval-notifier-<version>.tgz),或開發目錄絕對路徑。
  4. 安裝後出現在 Installed plugins:可啓停、打開配置頁;卸載在該 bundle 頁點 Remove(管理器會清理 profile 依賴與選擇項)。

安裝、卸載、啓停與設置均由官方插件管理完成,無需手改 profile 以外的散落配置。

典型用法

日常無需額外 API:插件隨 Host 觀察 waterfall,有待確認即排隊彈卡。

  1. 安裝並啓用後,在 Plugins → 哨兵 按需改動畫、間隔、提示音與升級/二次提醒開關。
  2. 用設置頁的測試提醒確認右下角順序、音量和二次提醒是否符合預期。
  3. 真實待確認出現時,在右下角點「去處理」進入對應會話,在 Harness 內完成審批或回答問題;左下角短暫提示表示跳轉已生效。
  4. 若長時間未處理,留意該條的放大與升級音;若已點「去處理」但遲遲未操作界面,可能收到帶「二次提醒」的紅卡。

開發側自檢(維護者倉庫命令,普通用戶可跳過):

npm install
node selftest.mjs

適用場景與注意

適合誰:經常在 DSH 多工作區、多會話並行,且不願依賴系統通知、又希望待確認不淹沒在聊天記錄裏的開發者或操作者。

範圍與限制(README「限制」):

  • 覆蓋當前 DSH Host 進程內所有工作區/會話(桌面 App 通常只有一個 Host)。
  • App 完全退出時不提醒;窗口最小化時卡片仍在 Harness 內,恢復窗口即可見。
  • 「閱讀」判定依賴滾動/指針/按鍵等;純靜止盯屏會被視爲「無操作」,從而可能觸發二次提醒——這是插件需求定義的行爲。
  • HMR 或刷新會重置頁面內存裏的「已點開/二次提醒」狀態,審批請求本身不受影響。

安全習慣:插件以當前 DSH 進程權限運行,會讀寫 profile 配置與 $DSH_HOME/approval-notifier/assets/。安裝前應在 GitHub 查看源碼與 MIT 許可證,確認符合你的環境策略。

結尾

dsh-approval-notifier 把「待你確認」收斂成右下角可配置的哨兵提醒:不越權代批,只把跳轉與升級節奏說清楚。插件目錄頁見 SkillHub 條目;源碼與完整說明見 GitHub:Macicle77/dsh-approval-notifier。

羽毛球分组比赛记分
小程序二维码

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

小夜