前言¶
在 DeepSeek Harness(DSH)裏跑 agent,常見情況是窗口不在前臺:一輪對話跑完、審批卡片在等、或會話列表裏還有沒點開的消息。系統通知往往要讀標題、點一下;彈窗和橫幅也容易打斷當前工作。若你更希望「餘光裏能察覺、不必立刻切回」,就需要一種不搶焦點、不代答審批的提醒方式。
下面介紹社區插件 dsh-desktop-alerts(維護者 onezeroyl,分類「趣味換裝」):在 DSH Web 界面內用全屏煙花、貼邊呼吸色帶和會話行高亮做純視覺提醒;在 Windows 上還可通過透明點擊穿透覆蓋層,在頁面被遮擋或窗口最小化時繼續在整塊屏幕上呈現同類效果。
這是什麼¶
dsh-desktop-alerts 是面向 DSH 的桌面氛圍提醒插件:會話 turn 完成時全屏煙花;需要你審批或回答提問時,屏幕四邊深綠呼吸;計劃待確認時用琥珀色邊閃;出錯時一次性紅閃;回答完尚未查看的會話在左側列表整行深綠高亮。沒有彈窗、卡片、通知橫幅和聲音(配置裏 sound 默認關閉)。
插件以 MIT 許可證發佈,當前 package 版本爲 0.3.7,要求 Node >=20。DSH 生態主張「一切皆插件」;插件目錄頁在 SkillHub,源碼在 GitHub。社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
核心功能¶
頁面內特效(全平臺)¶
- 任務完成:全屏煙花,約 3 次爆發、約 600 顆粒子,帶拖尾與輝光;深色主題偏霓虹,淺色主題更飽和。
- 審批 /
ask_user_question:四邊 #15803D 深綠呼吸,貼邊約 58px,不遮擋中間內容。 - 計劃待確認:同樣形式的邊閃,琥珀色。
- 出錯:一次性紅閃後自行停止。
- 未讀會話:跟隨 DSH 未讀點,列表中對應會話整行深綠;點開並消未讀後高亮消失。免打擾時段(
quietHours)只擋煙花與邊閃,不擋未讀高亮。
Windows 原生覆蓋層(可選兜底)¶
DSH 頁面在前臺時,由頁面側 lib/client.js 註冊 shell.overlay,用 canvas / CSS 繪製(GPU 合成)。頁面不在前臺、被遮擋或整個 DSH 窗口最小化時,宿主通過 loopback HTTP 與單文件 C# WPF 程序 DshDesktopAlertsFx.exe 在多顯示器上繪製透明、置頂、點擊穿透的覆蓋層,不搶焦點、不進任務欄與 Alt-Tab。
多顯示器時:每塊屏都會收到提醒;前臺頁只畫所在屏,其餘屏由覆蓋層補位。
需要 Windows 10/11 且系統帶有 .NET Framework 4.x 及 csc.exe(首次運行宿主用其編譯覆蓋層 exe)。macOS / Linux 可正常安裝,頁面內特效與未讀高亮可用,跨窗口覆蓋層自動降級。
架構要點¶
| 部分 | 位置 | 作用 |
|---|---|---|
| Host | lib/index.js |
攔截審批、計劃確認、agent 狀態與錯誤;維護隊列;loopback 路由;編譯並拉起覆蓋層 |
| 頁面層 | lib/client.js |
上報可見性與窗口矩形;前臺時本地繪製 |
| 原生層 | widget/DshDesktopAlertsFx.cs |
約 1.5s 輪詢 /state,補齊未覆蓋屏幕 |
| 契約 | CONTRACT.md |
端點、StateSnapshot、渲染歸屬 |
安全邊界:插件不代答審批,無 /answer;HTTP 僅 loopback 且帶啓動時隨機 token;任一步失敗則靜默降級,不影響官方審批鏈路。
安裝與啓用¶
在 DSH 插件市場(Discover → 索引源 https://cdn.jsdelivr.net/npm/dsh-plugin-catalog/index.json)搜索 dsh-desktop-alerts 安裝,或執行:
dsh plugin --profile web add dsh-desktop-alerts
本地已有插件目錄時,可在 DSH 會話中讓 agent 執行:
plugin_manager action: install_bundle
target: <本目錄絕對路徑>
安裝後重啓 DSH(或等待 profile 熱加載)。可用 cordis_inspect_query 確認 dsh-desktop-alerts 狀態爲 schema。
卸載:
plugin_manager action: remove_bundle target: dsh-desktop-alerts
卸載後重啓 DSH;%LOCALAPPDATA%\dsh-desktop-alerts 可手動刪除。
配置¶
在 profile 的 cordis.patch.yml 中寫入(字段以倉庫 README 爲準):
- id: dsh-desktop-alerts
name: dsh-desktop-alerts
config:
enabled: true
debug: true # 排查時寫 host.log
triggers: { approval: true, planReview: true, done: true, error: true }
celebrate: { enabled: true, cooldownMs: 800 }
effects: { fireworks: true, edgeFlash: true }
unreadHighlight: { enabled: true }
overlay: { autoStart: true }
quietHours: { enabled: false, start: "23:00", end: "08:00" }
sound: { enabled: false }
pendingTtlMs: 300000
想清靜時可關閉 effects.fireworks / edgeFlash;Windows 上若不需要後臺覆蓋層,可調整 overlay.autoStart。
典型用法與驗收¶
日常無需額外命令:開啓插件後,完成 turn、觸發審批或未讀會話時會按配置自動呈現效果。
Windows 上可在不依賴真實任務的情況下預覽覆蓋層(README 示例):
& "$env:LOCALAPPDATA\dsh-desktop-alerts\DshDesktopAlertsFx.exe" -ConfigPath "$env:LOCALAPPDATA\dsh-desktop-alerts\widget.json" -Preview 4
& "$env:LOCALAPPDATA\dsh-desktop-alerts\DshDesktopAlertsFx.exe" -ConfigPath "$env:LOCALAPPDATA\dsh-desktop-alerts\widget.json" -EdgePreview
排查時可查看 %LOCALAPPDATA%\dsh-desktop-alerts\host.log(需 debug: true)與 overlay.log。
適用場景與注意¶
適合長時間讓 agent 在後臺跑、又希望用餘光感知「完成 / 待你點審批 / 有未讀會話」的 DSH 用戶。不適合依賴獨佔全屏(全屏遊戲、部分 DRM 視頻)的場景——覆蓋層會被系統層級擋住。
安裝前建議自行查看 GitHub 源碼 與 MIT 許可證。插件以當前 DSH 進程權限運行;覆蓋層不讀屏、不抓鍵鼠,僅在本機 loopback 上同步狀態,無遙測與遠程請求。
已知限制:無 csc.exe 的精簡 Windows 僅保留頁面內特效;覆蓋層不跟隨系統「減少動效」;DSH 退出時覆蓋層子進程一併退出。
結尾¶
dsh-desktop-alerts 把「完成慶祝、待辦邊閃、未讀書籤」做成無彈窗的桌面氛圍層,並在 Windows 上補全頁面不在前臺時的多屏提醒。需要一鍵安裝入口可看 SkillHub 目錄頁,細節與契約見 GitHub 倉庫 README。