前言¶
在 DeepSeek Harness(DSH)裏跑 agent 時,任務往往在後臺繼續執行。窗口切到其他應用後,很難憑肉眼判斷「回覆是否已經結束」或「是否出現了需要你審批、選方案、回答提問的 pending 交互」。常見做法是反覆切回 DSH 看會話列表,或自己寫腳本輪詢狀態——既打斷工作,又和 Harness 已有的事件模型脫節。
下面介紹社區插件 dsh-ping-macos(維護者 adamxu-git):在 macOS 上利用系統通知和標準提示音(Glass),在回覆跑完或需要你介入時提醒;點擊通知抬起窗口並切到對應會話。它不請求網絡、不做 Dock 角標或菜單欄圖標,定位是「最小可用」的通知層。
這是什麼¶
dsh-ping-macos 是 DSH 的 client + 宿主半插件:lib/client.js 在瀏覽器側訂閱會話與 UI 狀態;lib/index.js 在宿主側註冊 POST /__dsh-ping-macos/sound,用 afplay 播放 /System/Library/Sounds/Glass.aiff。配置保存在本機 localStorage,不聯網。
npm 包名與倉庫一致,當前資料中的版本爲 0.2.0(MIT)。package.json 標明與 DSH 0.2.1-rc.2 兼容;行爲依賴 sessions.list、uiSession.sessionStatus 等 0.2.x 快照形狀,宿主 API 變更時需插件跟進。
核心功能¶
插件監聽兩類事件(詳見倉庫 README 行爲表):
| 事件 | 觸發條件 | 通知表現 |
|---|---|---|
| 回覆完成 | sessions.list 中某會話 running: true → false |
「回覆完成 · 會話名」,普通橫幅 |
| 需要你確認 | uiSession.sessionStatus 出現新的 pendingInteraction |
「需要你確認 · 審批/方案/提問」,常駐提醒 |
其他已覈實行爲:
- 子代理會話(
origin: 'subagent'或帶parentId)默認靜音。 - 前臺策略:取決於「設置 → 通知提醒」;默認「回覆完成」在窗口可見時不彈、「需要你確認」默認仍彈。
- 合併完成:同一次列表更新裏多個
running → false合併爲一條「N 個會話完成」;此類彙總通知點擊只抬窗,不切到單一會話。 - 點擊通知:經隱藏 iframe 導航
dsh://open抬起 Electron 窗口,並調用sessions.open(id)(0.1.5)或uiWorkspace.openSession(id)(0.1.6+);兩者皆無時僅抬窗。 - 提示音:非 macOS 或宿主無 webServer 時靜默,通知仍可顯示。
設置頁路徑:設置 → 通知提醒——總開關、回覆完成策略(僅離開 / 總是 / 關閉)、待處理策略、提示音開關及測試按鈕。系統通知權限需在「系統設置 → 通知 → DeepSeek Harness」中允許。
安裝與啓用¶
DSH Desktop:插件 → 添加插件 → 搜索 dsh-ping-macos → 安裝 → Cmd+Q 完全退出後再打開。
Web 配置:
dsh plugin --profile web add dsh-ping-macos
裝完後重啓對應的 dsh web,並對頁面做硬刷新。
安裝前建議自行查看 GitHub 倉庫 源碼與 MIT 許可證;插件以當前 DSH 進程/頁面權限運行,僅在本機讀寫 localStorage 與調用宿主 sound 路由,無對外網絡請求。
典型用法與驗證¶
重啓後插件不再彈歡迎通知。可按 README 建議驗證:
- 將窗口切到其他應用,讓 agent 跑完一個任務,結束時應出現「回覆完成」類通知。
- 在 DevTools 控制台:
__dshPing.state() // 綁定狀態、permission、記賬條數、通知句柄數、定時器狀態
__dshPing.test('done') // 立即彈一條完成通知
__dshPing.test('attention') // 立即彈一條待處理通知
點通知應抬起 DSH 並切換到對應會話(單會話完成通知);彙總完成通知僅抬窗。
卸載示例(資料中的桌面 profile 路徑,操作前請自行備份):
cp ~/.dsh/profiles/desktop/cordis.patch.yml.bak-20261029-203052 \
~/.dsh/profiles/desktop/cordis.patch.yml
rm -rf ~/.dsh/profiles/desktop/node_modules/dsh-ping-macos
然後重啓 DSH Desktop。
適用場景與注意¶
適合:在 macOS 上使用 DSH Desktop 或 Web,希望 agent 在後臺跑完或出現待確認交互時能被動提醒,且接受「僅系統橫幅 + Glass 提示音、無 Dock/菜單欄角標」的方案。
限制(倉庫「已知限制」摘要):
- 頁面進程仍存活時才能提醒;完全退出 App 後無通知。
- 多開 DSH 頁面/窗口時,每個頁面各跑一份 client,會各自提醒,設置也分屬各頁
localStorage。 - 桌面端通知無審批按鈕(Service Worker 在
dsh-app://下不可用)。 - 同一會話連續兩次完成會各彈一條(按
tag去重,不合並同會話的多次完成)。
DSH 生態強調「一切皆插件」;SkillHub 目錄頁 爲社區收錄,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-ping-macos 把 Harness 裏「會話結束」和「待你確認」兩類狀態變化,映射成 macOS 原生通知與可選提示音,並用 dsh://open 把點擊動作接回當前會話。若你需要在 macOS 上少切幾次窗口、又不願引入網絡或角標方案,可以從目錄或 GitHub 安裝後,用 __dshPing.test 與真實任務各驗一遍。