dsh-better-push:爲 DeepSeek Harness 提供 macOS 原生通知

前言

用 DeepSeek Harness(DSH)跑長回合、後臺任務或子智能體時,窗口不在前臺就很容易被漏掉:回合結束、工具等待批准、智能體提問、後臺命令收尾,都不會主動提醒你。系統自帶的瀏覽器通知往往和應用脫節,點擊也難以回到對應 Session。下面介紹社區插件 dsh-better-push:在 macOS 上把上述事件轉成以 DeepSeek Harness 應用名和圖標展示的系統橫幅,點擊即可聚焦到觸發通知的 Session。

這是什麼

dsh-better-push(npm 包名 @ceasarxuu/dsh-better-push,當前版本 0.1.0,MIT 許可證)由維護者 ceasarXuu 發佈,分類屬於 DSH 客戶端 類插件。README 明確標註爲第三方插件,不是 DeepSeek / DeepSeek Harness 官方組件。

定位一句話:在 macOS 上爲 DSH 提供原生通知,覆蓋回合完成、待批准工具、提問、錯誤、後臺任務、子智能體與 workflow 等觸發點,並支持點擊橫幅打開對應 Session。

運行環境要求 DeepSeek Harness 0.2.1-rc.3 及以上、低於 0.3.0,且需 macOS 上的桌面或 Web 界面;插件未發佈到 npm,安裝來源以 GitHub 倉庫或倉庫內 market 索引爲準。

會通知哪些事件

插件按事件類型分別開關,默認大多開啓。下表摘自 README,便於對照配置項名稱。

觸發條件 通知內容概要 默認
回合結束 Session 名、一行回覆預覽、耗時 開
工具等待批准 Session 名 + 工具名;批准後橫幅自行關閉 開
智能體提問 Session 名 + 問題正文 開
回合失敗 / 中斷 / 上下文溢出 提供商或回合錯誤信息 開
後臺任務結束 任務標籤 + 狀態(含 run_in_background、promoted 命令) 開
子智能體回合結束 父對話名 + preset;點擊打開父 Session 關
Workflow 運行結束 Workflow 名 + 停止原因 開
測試通知 設置頁或 POST /plugin/better-push/test —

前臺 Bash 調用雖在內部也是 job,但插件讀取 job feed 的 awaited 標誌,只有真正留在後臺跑完的任務纔會推送,避免你在終端前盯着時仍被刷屏。

核心機制(簡要)

包內分爲兩半,同一安裝包一併加載:

  1. Host 半(index.js) 監聽各 live Session 的 session/event(如 turn/end、approval/asked 等)、user-questions/request 瀑布流,以及 jobs feed;做分類、去重、靜默時段過濾,並在 /plugin/better-push 提供 GET /poll、GET /state、GET /health、POST /test 等 HTTP 接口。
  2. Browser 半(client.js) 約每秒輪詢上述路由,在渲染進程裏發出 UNUserNotification,署名 DeepSeek Harness;桌面端點擊後調用 uiWorkspace.openSession(sessionId)。無窗口附着時,Host 可回退到 osascript display notification(歸因與點擊行爲與渲染器路徑不同,見後文限制)。

採用輪詢而非 WebSocket,是因爲桌面渲染器運行在 dsh-app://app,同源 fetch 由 Electron 殼轉發到 Host;每秒一次 loopback 請求同時充當「窗口是否在線」的心跳。

安裝與啓用

安裝前請先退出 DSH 應用(運行中 profile 會被鎖定)。安裝完成後需 重啓應用一次。配置寫在 profile 的 cordis.patch.yml 中,行 id 爲 better-push。

倉庫 README 給出三種方式,任選其一。

1. 插件市場發現(推薦,版本 pinned 到具體 commit)

在 Settings → Plugins → Discover → market sources 添加索引 URL(只需添加一次),再從列表安裝 “Better Push — macOS notifications”:

https://raw.githubusercontent.com/ceasarXuu/dsh-better-push/main/market/index.json

2. Plugin Manager → Add

可粘貼倉庫 URL、pnpm 簡寫,或 release 打包的 tgz:

https://github.com/ceasarXuu/dsh-better-push
github:ceasarXuu/dsh-better-push
https://github.com/ceasarXuu/dsh-better-push/releases/download/v0.1.0/ceasarxuu-dsh-better-push-0.1.0.tgz

3. CLI

先退出應用,再執行:

dsh plugin --profile desktop add github:ceasarXuu/dsh-better-push
# 或本地目錄:
dsh plugin --profile desktop add /absolute/path/to/dsh-better-push

更新版本時用同樣方式覆蓋安裝;僅 market 索引會把 git 源釘死在 commit 上,github: 安裝會跟蹤默認分支 HEAD。

設置項

在 Settings → 通知 / Notifications(側欄獨立一節,與 General、Plugins 並列;同一表單也出現在 Settings → Plugins 對應插件行)中編輯。各開關獨立,修改後立即生效:設置頁寫入 profile patch,加載器把 volatile 字段提交到運行中的插件,瀏覽器半在下次輪詢時採用新策略。

鍵 默認值 含義
enabled true 系統通知總開關
notifyInForeground true 窗口聚焦時也通知;關則僅後臺通知
sound true 每條通知播放聲音
turnEnd true 回合結束
approvals true 工具待批准
questions true 智能體提問
errors true 失敗 / 中斷 / 上下文溢出
jobs true 後臺任務結束
subagents false 子智能體 / Agent Teams 隊友回合結束
workflows true Workflow 運行結束
preview true 回合結束正文裏放簡短助手回覆預覽
minTurnSeconds 0 短於該秒數的回合結束不通知(0 表示全部通知)
quietHours "" 本地靜默窗口 HH:MM-HH:MM,可跨午夜
fallbackWhenNoClient true 無窗口附着時用 osascript
fallbackSoundName Glass 回退路徑使用的系統聲音名

若團隊裏子智能體頻繁收尾,保持 subagents 默認關閉可避免通知轟炸;需要時再單獨打開。

典型用法與自檢

從設置頁發測試通知,或使用 Host 提供的測試接口(端口以本機 DSH 爲準,README 示例爲 61670):

curl -s -X POST http://127.0.0.1:61670/plugin/better-push/test \
  -H 'content-type: application/json' -d '{"body":"hello"}'

查看插件當前狀態:

curl -s http://127.0.0.1:61670/plugin/better-push/state | jq

clients: 0 表示窗口已關,走 osascript 回退路徑;clientIds 以 denied 結尾表示渲染器無法通知,Host 已對該客戶端回退。

日常使用時,離開 DSH 窗口跑長任務即可依賴默認策略:後臺任務結束、待批准、提問等會推橫幅;回到 Mac 點擊通知即可打開對應 Session。若只希望「人不在窗口前才響」,將 notifyInForeground 設爲 false。

適用場景與注意

適合誰:在 macOS 上用 DSH 桌面或 Web 面、經常切到其他應用或合蓋等待 agent 收尾的開發者。不適合在非 macOS 環境指望同等體驗——README 寫明當前 僅 macOS;渲染器半在 Windows/Linux 理論上可工作,但回退邏輯與文案針對 macOS,未在其他系統測試。

權限與安全:插件以當前 DSH 進程權限運行,會監聽 Session 與 job 事件並在本機 loopback 上提供 HTTP 面。安裝前請自行查看 GitHub 倉庫 源碼與 MIT 許可證,確認符合你的安全策略。

已知限制(摘自 README):渲染器路徑無法自定義通知聲音(僅 silent)、無副標題與 action 按鈕;暫無 Dock 角標、通知歷史頁、按 Session 靜音。點擊聚焦爲盡力而爲。關閉 DSH 窗口後若仍要收到提醒,需保持 fallbackWhenNoClient 爲 true,但回退通知的點擊無法打開 DSH;若寧可錯過也不要 Script Editor 歸因,可關閉該選項。

DSH 生態強調「一切皆插件」;社區目錄 skillhub.cn 上的插件頁 與 GitHub 均爲獨立分發渠道,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-better-push 把 DSH 裏「該你回來處理」的時刻接到 macOS 系統通知上,並按事件類型細粒度開關,減少漏批、漏答與漏看後臺結果。需要安裝說明與完整配置表時,以倉庫 README 爲準:

  • 目錄頁:https://www.skillhub.cn/plugins/ceasarXuu/dsh-better-push
  • GitHub:https://github.com/ceasarXuu/dsh-better-push
羽毛球分组比赛记分
小程序二维码

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

小夜