dsh-desktop-alerts:用屏幕氛圍提醒 DSH 完成、待審批與未讀會話

前言

在 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。

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

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

小夜