前言¶
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;
- 只觀察、不返回審批結果,批准仍必須由你點。
覆蓋場景¶
插件監聽三類事件,對應三組通知副標題:
approval/request:工具審批、沙箱升級、插件安裝/列表、工作區外寫入,副標題「需要你審批一次操作」;user-questions/request:ask_user_question、計劃審覈,副標題「需要你回答問題 / 需要你審覈計劃」;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”想要發送通知
點「允許」即可。如果沒彈出、沒點或點了拒絕:
- 打開「系統設置 → 通知 → 應用程序通知 → DeepSeek Harness」,打開「允許通知」;
- 確認沒有開啓專注模式 / 勿擾;
- 重啓 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