dsh-mobile-push-notify:任務/目標完成通知(桌面原生 + 手機 Web Push)

前言

DeepSeek Harness (dsh) 的設計理念是“一切皆插件”。在開發或運維場景中,智能體任務往往在後臺運行,任務完成時開發者可能不在終端旁。如何第一時間獲知任務狀態是常見痛點。

目前 DSH 生態中存在一些遠程監控插件(如 dsh-pocket),它們通常提供完整的 UI 交互。本插件複用同一套成熟模式,但聚焦於“通知”這一單一核心:提供 macOS/Windows/Linux 原生桌面通知,並支持零配置的手機端 PWA/Web Push 配對,讓任務完成狀態實時同步到手機鎖屏。

核心功能

本插件提供以下能力:
* 桌面原生通知:在 macOS、Windows 和 Linux 上彈出系統通知,包含任務摘要與耗時。
* 手機掃碼配對:通過 PWA 或 Web Push 協議,將手機與電腦配對,接收鎖屏通知。
* Cloudflare 快速隧道:一鍵啓動公網隧道,在無公網 IP 或非內網環境下也能使用手機推送。
* 能力拆分:提供 task-notify(桌面)、mobile-push-notify-gateway(網關/隧道)和 mobile-push-notify-push(推送)三個獨立模塊。

安裝與啓用

安裝插件需要使用 dsh plugin 命令,無需手動下載代碼。

  1. 安裝插件
    dsh plugin --profile web add dsh-mobile-push-notify
  1. 重啓 Web 服務
    dsh web
  1. 查看日誌
    插件啓動後會自動開啓一個網關。在終端啓動日誌中可以看到管理頁地址,默認爲 http://127.0.0.1:3188/admin。

使用方法

1. 電腦端通知(零配置)

安裝並運行後,無需額外設置。當 DSH 中的任務完成(如 turn/end 事件且狀態爲完成,或 goal/change 且階段爲完成)時,系統會自動發送通知。
* macOS:通知中心橫幅 + Glass 提示音。
* Windows:系統 Toast。
* Linux:notify-send。
* 如果系統通知服務不可用,終端會自動響鈴作爲兜底。

2. 手機配對

通過手機訪問網關管理頁進行配對。

  1. 在電腦瀏覽器打開 http://127.0.0.1:3188/admin。
  2. 局域網配對:確保手機和電腦在同一 WiFi 下,掃描頁面上的“局域網配對”二維碼。
  3. 公網配對:點擊頁面上的“開啓公網隧道”。首次使用會自動下載 cloudflared 二進制文件,稍後出現公網二維碼後掃碼。

配對成功後,手機會自動打開 DSH 的官方 Web 界面,保持實時同步。

3. 開啓手機推送

  1. 在手機上進入 DSH Web 界面。
  2. 點擊頁面右下角的 “🔔 開啓任務通知” 按鈕,並允許瀏覽器發送通知。
  3. iOS 用戶注意:建議通過 Safari 打開,點擊分享按鈕“添加到主屏幕”以 PWA 形式安裝,再點擊開啓通知(iOS 16.4+ 要求 HTTPS)。
  4. Android 用戶:可直接在 Chrome 或 Edge 中安裝 PWA 或允許通知。

之後,當任務完成時,手機鎖屏會收到包含任務標題、摘要和耗時的通知,點擊可直接跳轉回 DSH 界面查看詳情。

配置說明

插件的默認配置已滿足大部分場景。如需調整,可通過環境變量或修改配置文件 ~/.dsh/profiles/web/cordis.patch.yml。

常用環境變量

變量名 默認值 說明
DSH_TASK_NOTIFY_ENABLED 1 總開關,設爲 0 禁用通知。
DSH_TASK_NOTIFY_EVENTS completed,error,aborted,goal-completed 需要觸發通知的事件類型。
DSH_TASK_NOTIFY_SOUND Glass macOS 提示音名稱,設爲 none 可靜音。
DSH_TASK_NOTIFY_BELL 0 系統通知失敗時是否響鈴。
DSH_TASK_NOTIFY_GATEWAY_PORT 3188 網關監聽端口。
DSH_TASK_NOTIFY_TARGET_PORT 自動讀取 DSH Web 服務監聽的端口。
DSH_TASK_NOTIFY_VAPID_SUBJECT mailto:... iOS 嚴格校驗的 VAPID 郵箱地址。

高級推送

插件支持擴展到 Bark 或通用 Webhook。

Bark 配置(需在 ~/.dsh/task-notify.json 或環境變量中設置):

{
  "barkKey": "你的 Bark Key",
  "webhookUrl": "https://example.com/hook/{{title}}"
}

安全模型

理解插件的安全機制有助於在公網環境下安全使用。

  • 內網隔離:網關默認將流量反向代理到 127.0.0.1 的 DSH Web 服務。因此,不需要將 DSH Web 綁定到 0.0.0.0,本地網絡更安全。
  • 訪問控制:管理頁 /admin* 及推送發送端點僅接受迴環請求(Loopback)。配對設備擁有完整控制權限,請勿將配對二維碼分享給他人。
  • 配對安全:配對 Token 有效期爲 10 分鐘。配對過程使用一次性 Token,設備可單獨撤銷,或通過“停止全部配對”清空。
  • 公網隧道風險:開啓 Cloudflare 隧道會將擁有代碼執行能力的 DSH 暴露到互聯網。請用完即關。若需長期固定地址,建議配置 DSH_TASK_NOTIFY_PUBLIC_BASE_URL 並使用 Cloudflare 命名隧道或自有反向代理。
  • 推送加密:Web Push 使用 aes128gcm 標準加密,推送服務僅能訪問密文。

兼容性

  • DSH 版本:dsh >= 0.1.0-rc.5
  • Node 版本:node >= 20
  • 權限要求:
    • exec: 需要 osascript, notify-send, powershell 等工具。
    • network: 需要 webhook 訪問權限及 github.com 等域名解析。

License

MIT

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

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

小夜