前言¶
在 DSH Web GUI 裏跑 agent 時,一旦觸發 ask_user_question、審批或計劃確認,界面會進入「等你作答」的等待態。內置問題卡片會接管輸入區——只有當你正看着這個標籤頁時,才容易發現 agent 已經停下來了。切到別的標籤、別的窗口或別的程序時,會話可能長時間卡在等待裏,頁面上卻沒有足夠醒目的信號把你拉回來。
下面介紹社區插件 dsh-ask-notify(維護者 liujianqiao701):在 DSH 客戶端側監聽與會話列表「琥珀色小圓點」同一份運行時狀態,把「需要你回答」主動推到右下角提醒卡;若頁面不可見或未聚焦,再補系統通知和標籤標題閃爍。插件當前版本 1.0.4(MIT),分類爲客戶端;在 SkillHub 插件目錄 可找到條目,源碼在 GitHub。
這是什麼¶
dsh-ask-notify 是 DSH Web GUI 的客戶端插件,不抓取 DOM,而是從宿主已有的 uiSession / 會話列表快照裏讀取等待態(question、approval、plan-review 等 kind)。有等待時彈出右下角提醒;你不在當前頁面時再觸發 Windows 桌面通知,並把標籤標題改成帶 ❓ 的閃爍樣式。
本插件不發起任何網絡請求;偏好寫在瀏覽器 localStorage,系統通知走 Notification API。安裝前建議自行查看源碼與許可證——插件隨當前 dsh web 進程在瀏覽器環境中運行。
三個提醒通道¶
| 通道 | 出現條件 | 作用 |
|---|---|---|
| 右下角提醒卡 | 存在任意等待(是否在頁面均會顯示) | 回到頁面時一眼看到還剩什麼問題 |
| 系統通知 | 頁面不可見或未聚焦,且已授權通知 | 在別的標籤或程序裏也能被叫到 |
| 標題閃爍 | 頁面不可見 | 在標籤欄上區分「有個標籤在等我」 |
卡片提供 去回答(切到對應會話並滾到輸入區)、稍後提醒(本條不再彈,下一條等待仍會彈)、以及 桌面提醒 / 聲音 開關。
安裝與啓用¶
首選:插件市場¶
在 DSH 界面 設置 → 插件市場 → 搜索 dsh-ask-notify → 安裝。裝完後看市場卡片上的狀態:
| 卡片狀態 | 還要做什麼 |
|---|---|
| 已生效 | 刷新頁面:F5,不行再 Ctrl+F5 |
| 已安裝,重啓後生效 | 重啓 dsh web,然後 Ctrl+F5 |
| 已安裝,未生效 / 已停用 | 點「爲什麼未生效?」——常見原因是「有 agent 正在運行」,停掉再裝 |
插件條目隨頁面啓動清單(window.__DSH_BOOT__)下發;不刷新頁面,瀏覽器不會加載新插件。市場顯示「已生效」卻「沒效果」時,多數只差這一步刷新。
備選:命令行¶
dsh plugin --profile web add github:liujianqiao701/dsh-ask-notify
命令行或本包 install.ps1 登記在 bundle 層,bundle 只在 dsh web 啓動時讀一次,因此裝完後必須重啓 dsh web,再 Ctrl+F5 刷新頁面。
環境要求¶
- Windows +
dsh web。 - Harness 1.0.4 起各版本可用:插件按優先級讀取
uiSession.sessionStatus(0.1.7+)、uiSession.pendingInteractions(0.1.2~0.1.6)、會話列表行上的pendingInteraction(≤0.1.1-rc.x);三個源都讀不到時會掃描 map 型成員並可在控制台__dshAskNotify.sources()查看discovered。 - 1.0.4 起無強制 cordis 注入依賴;服務暫時缺失時仍會掛載,約 15 秒讀不到數據會在控制台報警並在右下角顯示提示卡。
典型用法與自檢¶
平時無需配置:agent 進入等待態後,插件通過訂閱與約 2 秒輪詢更新提醒。不必真等問題,可在頁面控制台自檢:
__dshAskNotify.version // 當前安裝版本(資料中示例爲 1.0.4)
__dshAskNotify.selftest() // 右下角卡片保持約 12 秒
__dshAskNotify.sources() // used / carries / discovered
__dshAskNotify.state() // 等待、偏好、通知權限、頁面是否可見
__dshAskNotify.collect() // 當前等待列表;空數組表示現在無人等你
__dshAskNotify.show('approval', '試試審批樣式')
__dshAskNotify.hide()
sources().used 表示真正在供數據的源;used: "none" 且控制台出現讀不到數據源的警告時,可把 sources() 輸出反饋給維護者。
偏好鍵(localStorage):
| key | 含義 |
|---|---|
dsh-ask-notify:prefs |
各類等待與系統通知、聲音的布爾開關 |
dsh-ask-notify:autoasked |
首次用戶手勢申請通知權限的標記 |
dsh-ask-notify:lastshot |
多標籤下系統通知約 20 秒內去重 |
通知權限在第一次點擊或按鍵時自動申請一次;若曾被拒絕,可在卡片上開啓桌面提醒,或在 http://127.0.0.1 的站點設置裏允許。
適用場景與注意¶
適合誰:長時間在 DSH Web 裏跑 agent、經常多標籤或多窗口並行,又希望「審批 / 追問 / 計劃確認」不要靜默耗在等待態上的開發者。
排障要點:
- 先
Ctrl+F5,再執行__dshAskNotify.selftest();若返回undefined表示客戶端腳本未加載(命令行安裝未重啓、或未刷新頁面)。 - 不要用不帶
?rev=的/plugins/.../client.jsURL 手敲判活;新代 harness 路由帶 rev,手敲可能 404。可用Ctrl+U搜 boot payload,或看__dshAskNotify.sources()。 - 市場更新時若有 agent 在跑,市場會攔截更新;等會話結束或取消後再點更新。
- 系統通知不彈時檢查
__dshAskNotify.state().permission;用局域網 IP 打開時瀏覽器可能禁用通知。 - 若頁面已有
dsh-whale-mascot,提醒卡疊在其上方;同一等待多標籤各有一張卡,系統通知跨標籤只彈一次。
插件以你當前 DSH 進程與瀏覽器權限運行;安裝前請閱讀 倉庫 README 與源碼。SkillHub 爲社區插件目錄,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-ask-notify 把「agent blocked 等你回答」從「必須盯着輸入區才發現」變成右下角可見、離頁可通知、標籤可閃爍的三通道提醒,且數據來自與會話 UI 一致的運行時狀態,不依賴 DOM 結構。