dsh-mac-notifications:爲 DeepSeek Harness 接入 macOS 原生通知

前言

用 DeepSeek Harness(DSH)跑長任務時,窗口不在前臺,很容易錯過智能體提問、工具授權請求,或者不知道一輪任務已經結束、在哪一步失敗。常見做法是盯住終端、開瀏覽器標籤,或自己寫腳本接 Webhook——在 macOS 上,更直接的做法是把關鍵節點交給系統通知中心。下面介紹的 dsh-mac-notifications 是社區維護的 DSH 客戶端類插件,在智能體需要你選擇、任務完成、任務異常中斷等時機,通過 Notification Center 彈出提醒;通知以 DeepSeek Harness 應用自身 的名義顯示(應用名稱與鯨魚圖標),而不是腳本編輯器。

這是什麼

  • 名稱:dsh-mac-notifications(Cordis 註冊 id:mac-notifications)
  • 維護者:zhiquanchi
  • 分類:客戶端(隨 DSH Web GUI 加載瀏覽器端模塊)
  • 許可證:MIT(package.json 版本 1.0.0)
  • 定位:爲 DSH 增加原生 macOS 通知,覆蓋提問、授權、完成、失敗等 Harness 生命週期節點。

插件與 DeepSeek 官方無從屬關係;安裝即運行第三方代碼,安裝前應自行查閱源碼與許可證。

核心功能

插件監聽 Harness 事件,按場景彈出對應文案(默認中文,可切英文):

場景 觸發時機 通知示例
需要你做出選擇 智能體調用 ask_user_question 「需要你的選擇」+ 問題內容
需要你的授權 工具請求授權(approval 流程) 「需要你的授權」+ 工具名與原因
任務完成 一輪任務正常結束(turn/end completed) 「任務已完成」+ 會話標題
任務異常中斷 步驟/回合出錯、被中止、會話級失敗 「任務異常中斷」+ 錯誤信息

防打擾方面,README 中寫明的行爲包括:

  • 會話仍有後臺任務(jobs)運行時,抑制「任務完成」通知,避免把「等待後臺任務」誤報爲完成;
  • 子智能體(subagent)會話默認不通知,只通知主會話;
  • 同一回合的 agent/error 與 turn/end error 去重,只報一次;
  • 完成通知帶冷卻時間(默認 3000 毫秒);
  • 配置寫在 cordis.patch.yml 的 config 中,改動後插件可熱重載。

工作原理(簡述)

插件分 Host 與 Client 兩段:

  1. Host 端(Node,index.js):監聽 Harness 事件,經本機 SSE 端點 /plugin/dsh-mac-notifications/events 把內容推給 Web GUI。
  2. Client 端(client.js,約 1 KB):隨 Web GUI 加載,用瀏覽器 Notification API 彈出通知。

因此通知中心裏顯示的是 DeepSeek Harness 應用名稱與圖標。安裝或更新插件後需刷新一次 Web GUI 頁面以加載 Client 模塊。無 Web GUI 連接時(例如 headless profile、頁面已關閉),可選 fallbackOsascript: true 回退到 osascript 通知(歸屬腳本編輯器;默認關閉)。

平臺:僅 macOS 生效(依賴 /usr/bin/osascript);其他平臺插件空轉,不發通知。

安裝與啓用

推薦用 DSH CLI 從 GitHub 安裝(按你實際使用的 profile 替換 web):

dsh plugin --profile web add github:zhiquanchi/dsh-mac-notifications
# 其他 profile 同理,如 headless:
dsh plugin --profile headless add github:zhiquanchi/dsh-mac-notifications

也可用 npm 包名安裝:

dsh plugin --profile web add dsh-mac-notifications

或在 DSH 桌面端 / Web GUI「插件」頁選擇「從目錄安裝」;亦可手工在 profile 的 cordis.patch.yml 中註冊:

- insert:
    - id: mac-notifications
      name: 'dsh-mac-notifications'
      config: {}

插件已提交 DSH.SO 等社區市場,桌面端「插件 → 發現」可搜索安裝(部分市場收錄可能有數小時同步延遲)。

配置

所有開關在插件對應行的 config 字段中設置:

字段 類型 默認值 說明
questions boolean true ask_user_question 時通知
approvals boolean true 工具授權請求時通知
completed boolean true 任務正常完成時通知
errors boolean true 異常中斷/失敗時通知
includeSubagents boolean false 是否包含 subagent 會話
suppressWhenJobsRunning boolean true 有後臺 jobs 時抑制完成通知
sound boolean true 是否播放系統默認提示音
language 'zh' \| 'en' 'zh' 通知文案語言
cooldownMs number 3000 完成通知最小間隔(毫秒)
fallbackOsascript boolean false 無 Web GUI 時回退 osascript

完整示例:

- insert:
    - id: mac-notifications
      name: 'dsh-mac-notifications'
      config:
        questions: true
        approvals: true
        completed: true
        errors: true
        includeSubagents: false
        suppressWhenJobsRunning: true
        sound: true
        language: zh
        cooldownMs: 3000
        fallbackOsascript: false

提示音爲系統默認(瀏覽器通知不支持自定義音效);可用 sound: false 靜音。通知權限沿用 DeepSeek Harness 應用自身的系統授權。

典型用法

  1. 安裝插件並刷新 Web GUI。
  2. 保持 macOS 已爲 DeepSeek Harness 開啓通知權限。
  3. 在後臺或最小化窗口下繼續跑任務;當智能體提問、請求授權、回合完成或出錯時,在通知中心查看摘要。
  4. 若只需失敗提醒,可將 questions、approvals、completed 設爲 false,保留 errors: true。
  5. headless 且無瀏覽器連接、仍要桌面提醒時,再考慮開啓 fallbackOsascript(接受腳本編輯器歸屬)。

點擊通知本身不會把應用帶到前臺(系統限制);問題正文仍使用模型輸出原文,僅固定標題類文案隨 language 切換。

適用場景與注意

適合:在 macOS 上使用 DSH Web / 桌面端,需要離開窗口仍能感知任務狀態與交互請求的開發者。

注意:

  • 插件以當前 DSH 進程權限運行,安裝前請審查 GitHub 倉庫 源碼。
  • 子 agent 並行、後臺 jobs 等場景已內置抑制與去重邏輯;若需 subagent 也提醒,設置 includeSubagents: true。
  • 社區目錄(如 SkillHub 插件頁)與 DSH.SO 等爲獨立站點,不是 DeepSeek 官方應用商店。

結尾

dsh-mac-notifications 把 DSH 裏「要問人、要授權、跑完了、出錯了」四類節點接到 macOS 通知中心,並儘量保持通知歸屬爲 DeepSeek Harness 本體。查閱詳情與更新:

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

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

小夜