dsh-dock-attention: Harness Requires You in the Background, Dock Icon Will Bounce

前言

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

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

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

Xiaoye