前言¶
用 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 为准。