前言¶
用 DeepSeek Harness(DSH)跑智能體時,常見情況是窗口被別的應用蓋住:審批、追問或一輪結束,你未必立刻看見。系統通知可以補一層,但有人更習慣 macOS Dock 上的視覺提示。DSH Host 插件跑在 Desktop Host 的 Node 子進程裏,不能直接調用 Electron 主進程的 app.dock.bounce(),也沒法讓「DSH 桌面圖標」替插件跳一下。下面介紹維護者 ihodorchenko 的客戶端插件 dsh-dock-attention:在需要關注且 Harness 不在前臺時,通過原生輔助應用 DSH Attention 在 Dock 裏短暫出現並請求用戶注意。
這是什麼¶
dsh-dock-attention 是 DSH 的 Host 插件,監聽 durable session 事件流(審批、智能體提問、回合結束等),僅在窗口不在前臺時觸發 Dock 提示;若你已經在看 Harness,設計上不會打斷當前窗口。
- 維護者:ihodorchenko
- 分類:客戶端(社區目錄 SkillHub 條目)
- 平臺:macOS 12+;其他平臺會掛載但不執行
- 許可證:MIT(見 GitHub 倉庫)
爲什麼 Dock 上是單獨的圖標¶
Desktop 應用的 Dock 圖塊屬於 Electron 主進程;Host 插件無法跨進程讓 DSH 圖標彈跳。插件採用最小可行方案:需要關注時寫請求文件,用 open -n -g 在後臺啓動原生 helper DSH Attention。Helper 以普通應用身份擁有 Dock 圖塊(非前臺),調用 AppKit 的 requestUserAttention 使圖塊彈跳,並在 Harness 回到前臺、點擊該圖塊或超時後退出,圖塊隨之消失。點擊彈跳中的圖塊會激活 Harness(未運行時則啓動)。
Helper 首次複製到 ~/Library/Application Support/dsh-dock-attention/DSH Attention.app(去隔離、ad-hoc 簽名、註冊 LaunchServices),請求與日誌在同級 runtime/;插件更新會自動刷新副本。Helper 不需要輔助功能、自動化、錄屏或通知權限。
核心功能¶
觸發條件(默認均開啓)¶
| 時刻 | 事件 | 默認 |
|---|---|---|
| 智能體等待審批 | approval/asked |
開 |
智能體提問(如 ask_user_question、exit_plan_mode) |
tool/call |
開 |
| 回合結束、失敗、被攔或觸達 token 上限 | turn/end |
開 |
以下情況通常靜默:用戶取消的回合(aborted)、fork/中斷的回合、子智能體會話(除非 includeSubagents: true)。若 activeBundleIds 中任一應用已在前臺、已有 beacon 在跳、或距上次彈跳不足 minIntervalSeconds,也會跳過。
配置要點¶
配置項均可選,profile 裏 config 會覆蓋默認值。常用字段包括:
| 字段 | 默認 | 含義 |
|---|---|---|
enabled |
true |
總開關 |
targetBundleId |
com.deepseek.dsh |
點擊 beacon 時要激活的應用;瀏覽器跑 dsh web 時可改爲瀏覽器 bundle id |
activeBundleIds |
['com.deepseek.dsh'] |
視爲「已在看 Harness」的前臺應用 |
skipWhenActive |
true |
上述應用在前臺時不跳 |
mode |
critical |
critical 持續直到你回來或超時;informational 按 repeatCount 跳若干次 |
timeoutSeconds |
30 |
beacon 在 Dock 中的時間預算(3–300) |
minIntervalSeconds |
3 |
兩次彈跳之間的防抖(0–120) |
sound |
null |
系統聲音名或音頻路徑;默認無聲 |
示例:只關心「需要你介入」的時刻,並加長超時、加系統音:
- id: dock-attention
name: dsh-dock-attention
config:
mode: critical
timeoutSeconds: 45
bounceOnTurnEnd: false
sound: Glass
在 Safari 裏跑 dsh web 時:
config:
targetBundleId: com.apple.Safari
activeBundleIds: ['com.apple.Safari']
安裝與啓用¶
插件以當前 DSH 進程的權限運行;安裝前建議瀏覽 倉庫源碼 與 MIT 許可證,確認符合你的環境策略。
Plugin Manager / CLI(desktop profile):
dsh plugin --profile desktop add "github:ihodorchenko/dsh-dock-attention"
也接受 git+https://github.com/ihodorchenko/dsh-dock-attention.git;各 Release 附帶源碼歸檔。
本地目錄:
dsh plugin --profile desktop add "link:/absolute/path/to/dsh-dock-attention"
不用 Plugin Manager 時,可在 profile patch 中直接指向入口(Loader 監視 profile,無需重啓):
- insert:
- id: dock-attention
name: 'file:///absolute/path/to/dsh-dock-attention/index.js'
config:
mode: critical
要求 Node >= 20(見 package.json engines)。
驗證是否工作¶
在插件目錄執行自測腳本(不編譯,會安裝 beacon 副本、啓動並觀察退出):
node tools/self-check.mjs
運行期間 Dock 應出現約八秒後消失的 DSH Attention 彈跳圖標;腳本會打印 helper 日誌尾部與啓動路徑。
適用場景與注意¶
適合:macOS 上長時間讓 DSH 在後臺跑任務,希望「離開鍵盤時」用 Dock 動效找回窗口,且不想默認開系統通知插件的用戶。
務必知曉的限制:
- 僅 macOS;機制與 Dock、LaunchServices 綁定。
- 跳的是 DSH Attention 的 Dock 圖塊,不是 Harness 本體圖標;圖塊僅在等待關注時出現。
- Beacon 活躍時是普通應用,會短暫出現在 Dock 與 Cmd-Tab,啓動時不搶焦點。
- 默認無通知、無聲音;需要更多渠道可配置
sound或搭配如dsh-macos-notifications等插件。 - 「減少動態效果」或第三方 Dock 動畫修改可能抑制彈跳動畫,圖塊仍會出現。
- Helper 爲 ad-hoc 簽名、未 notarized;首次使用由插件複製到 Application Support 並去 quarantine,一般無需手跑
xattr。 - Harness 已在前臺時按設計不會彈跳。
排查「完全沒有圖標」等問題,README 的 Troubleshooting 一節有進一步步驟(資料截斷處未完整列出,以倉庫 README 爲準)。
結尾¶
DSH 生態強調「一切皆插件」;SkillHub 插件目錄 是社區站點,與 DeepSeek / 幻方無官方從屬關係。dsh-dock-attention 用 Host 插件加原生 beacon 的方式,在桌面 Host 權限模型下補上了「後臺需要關注」的 Dock 提示。需要安裝與完整配置表時,以 GitHub:ihodorchenko/dsh-dock-attention 爲準。