dsh-needs-you-mac:把「Agent 在等你」變成 macOS 系統通知

前言

DeepSeek Harness(DSH,dsh)在執行審批、提問、登錄這類需要人介入的節點時,只在聊天輸入區渲染提示。一旦你切到別的窗口寫代碼、開會,Agent 就安靜地停在那裏:沒有系統通知、沒有 Dock 提醒、沒有聲音。等你回來,可能已經過去二十分鐘。

dsh-needs-you-mac 就是補「叫你回來」這一環的插件:監聽 DSH 的事件,在原生 macOS 通知裏彈一條橫幅,點一下就把 DeepSeek Harness 切回前臺。它只負責通知,不替你做決定。插件由 xuwhao 維護,分類是客戶端,npm 包名 dsh-needs-you-mac,當前版本 0.2.1,MIT 許可。

它解決什麼問題

0.1.x 的做法是用 osascript 發通知,macOS 會把通知算在腳本編輯器頭上,點橫幅打開的是腳本編輯器。0.2.0 改成在宿主進程內調用原生 UserNotifications API,通知歸屬 DeepSeek Harness 本身,點擊橫幅直接把 DSH 窗口帶到前臺,即使窗口最小化也會恢復。

插件只在「真的卡在等你」這一步才通知:

  • 通知來自 DeepSeek Harness 本身,不是腳本編輯器;
  • 點橫幅切回 DSH;
  • 只觀察、不返回審批結果,批准仍必須由你點。

覆蓋場景

插件監聽三類事件,對應三組通知副標題:

  1. approval/request:工具審批、沙箱升級、插件安裝/列表、工作區外寫入,副標題「需要你審批一次操作」;
  2. user-questions/request:ask_user_question、計劃審覈,副標題「需要你回答問題 / 需要你審覈計劃」;
  3. deepseek-account/model-sign-in-required、deepseek-account/session-expired:模型請求需要登錄、登錄過期,副標題「需要你登錄 DeepSeek 賬號」。

通知正文只包含工具名、原因、會話短 ID 或問題文本,全部留在本機。插件不聯網、不讀憑據、不讀寫文件。

防打擾機制

審批請求到達後先等 delayMs(默認 1200 ms)。如果這段時間裏請求已被自動審覈等非人類 answerer 答覆,就不通知。只有真正停在「等你」這一步的請求才會彈。

安裝與啓用

在桌面版裏用側欄安裝:插件 → 添加插件 → 輸入 dsh-needs-you-mac,然後重啓 DeepSeek Harness。

或者用 CLI:

# Desktop profile(使用桌面應用自帶的 dsh 命令)
dsh plugin --profile desktop add dsh-needs-you-mac

# Web profile
dsh plugin --profile web add dsh-needs-you-mac

dsh plugin add 會把包追加進對應 profile 的 dsh.profile.bundles,然後重啓 dsh 生效。

注意 Desktop 和 Web 的 profile 是獨立的:裝到 web 不會自動出現在桌面版。原生通知後端需要桌面版宿主(進程在 DeepSeek Harness.app 內)。

首次授權

原生後端發出第一條通知時,macOS 會彈一次:

“DeepSeek Harness”想要發送通知

點「允許」即可。如果沒彈出、沒點或點了拒絕:

  1. 打開「系統設置 → 通知 → 應用程序通知 → DeepSeek Harness」,打開「允許通知」;
  2. 確認沒有開啓專注模式 / 勿擾;
  3. 重啓 DSH(或等下一次通知)後生效。

不需要重裝。插件會自己檢測授權狀態,未授權時在日誌裏說明原因,並按 terminal-notifier → osascript 的順序回退。

配置

在 profile 的 cordis.patch.yml 裏覆蓋 config。注意 config 是整段替換,不是深合併,覆蓋時要把需要的鍵都寫出來:

- id: dsh-needs-you-mac
  name: dsh-needs-you-mac
  config:
    enabled: true
    notifyApproval: true
    notifyQuestion: true
    notifySignIn: true
    delayMs: 1200
    title: DeepSeek Harness
    sound: Glass
    maxBodyChars: 220
    backend: auto

各字段含義:

字段 默認 含義
enabled true 總開關
notifyApproval true 工具審批 / 沙箱升級 / 插件安裝等 approval/request
notifyQuestion true ask_user_question、計劃審覈等 user-questions/request
notifySignIn true 模型請求需要登錄 / 登錄過期
delayMs 1200 請求到達後等待多久再通知,給自動審覈留時間;範圍 100–10000
title DeepSeek Harness 通知標題
sound Glass macOS 提示音;none 靜音(原生後端使用系統默認通知聲)
maxBodyChars 220 通知正文最大長度;範圍 40–500
backend auto auto = 原生 → terminal-notifier → osascript;native = 只用原生;osascript = 強制舊後端

適用場景與注意

適合在 macOS 上用 DSH 桌面版、經常讓 Agent 停下來等人審批的開發者。使用前注意:

  • 插件以當前 dsh 進程權限運行。它的原生後端是 native/dsh_notify.mm 編譯出的 N-API 動態庫(native/dsh_notify.node,arm64 + x86_64 通用二進制),源碼隨包發佈,只調用系統 UserNotifications;兜底通知由固定的 /usr/bin/osascript 或 terminal-notifier 通過 argv 啓動,不經過 shell 拼接。安裝前仍應檢查源碼與許可證(MIT)。
  • 僅支持 macOS。非 darwin 平臺會直接禁用並打日誌。
  • 原生後端需要 DSH 桌面版;dsh web 的 CLI 宿主沒有 app 身份,原生後端不可用,會退回 osascript,點擊橫幅仍是腳本編輯器。這是宿主限制,不是配置問題。
  • 原生後端使用系統默認通知聲,sound 裏的音名只在 osascript / terminal-notifier 後端生效。
  • 插件市場不支持原地升級,更新方式是卸載後重裝,或重新執行 dsh plugin add dsh-needs-you-mac@latest。
  • 已在 DSH 0.2.1-rc.5、macOS 27 上實測;engines.dsh 聲明爲 >=0.2.1-rc.5 <0.3.0-0。

結尾

dsh-needs-you-mac 的價值很小也很清楚:把 DSH 每一次「停下來等你」變成一條點一下就回到窗口的系統通知,同時不碰審批決策。它只做一件事,並且沒有越界。

目錄頁:https://www.skillhub.cn/plugins/xuwhao/dsh-needs-you-mac

GitHub:https://github.com/xuwhao/dsh-needs-you-mac

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

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

小夜