前言¶
在 DeepSeek Harness(DSH)里跑 agent 时,任务往往在后台继续执行。窗口切到其他应用后,很难凭肉眼判断「回复是否已经结束」或「是否出现了需要你审批、选方案、回答提问的 pending 交互」。常见做法是反复切回 DSH 看会话列表,或自己写脚本轮询状态——既打断工作,又和 Harness 已有的事件模型脱节。
下面介绍社区插件 dsh-ping-macos(维护者 adamxu-git):在 macOS 上利用系统通知和标准提示音(Glass),在回复跑完或需要你介入时提醒;点击通知抬起窗口并切到对应会话。它不请求网络、不做 Dock 角标或菜单栏图标,定位是「最小可用」的通知层。
这是什么¶
dsh-ping-macos 是 DSH 的 client + 宿主半插件:lib/client.js 在浏览器侧订阅会话与 UI 状态;lib/index.js 在宿主侧注册 POST /__dsh-ping-macos/sound,用 afplay 播放 /System/Library/Sounds/Glass.aiff。配置保存在本机 localStorage,不联网。
npm 包名与仓库一致,当前资料中的版本为 0.2.0(MIT)。package.json 标明与 DSH 0.2.1-rc.2 兼容;行为依赖 sessions.list、uiSession.sessionStatus 等 0.2.x 快照形状,宿主 API 变更时需插件跟进。
核心功能¶
插件监听两类事件(详见仓库 README 行为表):
| 事件 | 触发条件 | 通知表现 |
|---|---|---|
| 回复完成 | sessions.list 中某会话 running: true → false |
「回复完成 · 会话名」,普通横幅 |
| 需要你确认 | uiSession.sessionStatus 出现新的 pendingInteraction |
「需要你确认 · 审批/方案/提问」,常驻提醒 |
其他已核实行为:
- 子代理会话(
origin: 'subagent'或带parentId)默认静音。 - 前台策略:取决于「设置 → 通知提醒」;默认「回复完成」在窗口可见时不弹、「需要你确认」默认仍弹。
- 合并完成:同一次列表更新里多个
running → false合并为一条「N 个会话完成」;此类汇总通知点击只抬窗,不切到单一会话。 - 点击通知:经隐藏 iframe 导航
dsh://open抬起 Electron 窗口,并调用sessions.open(id)(0.1.5)或uiWorkspace.openSession(id)(0.1.6+);两者皆无时仅抬窗。 - 提示音:非 macOS 或宿主无 webServer 时静默,通知仍可显示。
设置页路径:设置 → 通知提醒——总开关、回复完成策略(仅离开 / 总是 / 关闭)、待处理策略、提示音开关及测试按钮。系统通知权限需在「系统设置 → 通知 → DeepSeek Harness」中允许。
安装与启用¶
DSH Desktop:插件 → 添加插件 → 搜索 dsh-ping-macos → 安装 → Cmd+Q 完全退出后再打开。
Web 配置:
dsh plugin --profile web add dsh-ping-macos
装完后重启对应的 dsh web,并对页面做硬刷新。
安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证;插件以当前 DSH 进程/页面权限运行,仅在本机读写 localStorage 与调用宿主 sound 路由,无对外网络请求。
典型用法与验证¶
重启后插件不再弹欢迎通知。可按 README 建议验证:
- 将窗口切到其他应用,让 agent 跑完一个任务,结束时应出现「回复完成」类通知。
- 在 DevTools 控制台:
__dshPing.state() // 绑定状态、permission、记账条数、通知句柄数、定时器状态
__dshPing.test('done') // 立即弹一条完成通知
__dshPing.test('attention') // 立即弹一条待处理通知
点通知应抬起 DSH 并切换到对应会话(单会话完成通知);汇总完成通知仅抬窗。
卸载示例(资料中的桌面 profile 路径,操作前请自行备份):
cp ~/.dsh/profiles/desktop/cordis.patch.yml.bak-20261029-203052 \
~/.dsh/profiles/desktop/cordis.patch.yml
rm -rf ~/.dsh/profiles/desktop/node_modules/dsh-ping-macos
然后重启 DSH Desktop。
适用场景与注意¶
适合:在 macOS 上使用 DSH Desktop 或 Web,希望 agent 在后台跑完或出现待确认交互时能被动提醒,且接受「仅系统横幅 + Glass 提示音、无 Dock/菜单栏角标」的方案。
限制(仓库「已知限制」摘要):
- 页面进程仍存活时才能提醒;完全退出 App 后无通知。
- 多开 DSH 页面/窗口时,每个页面各跑一份 client,会各自提醒,设置也分属各页
localStorage。 - 桌面端通知无审批按钮(Service Worker 在
dsh-app://下不可用)。 - 同一会话连续两次完成会各弹一条(按
tag去重,不合并同会话的多次完成)。
DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区收录,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-ping-macos 把 Harness 里「会话结束」和「待你确认」两类状态变化,映射成 macOS 原生通知与可选提示音,并用 dsh://open 把点击动作接回当前会话。若你需要在 macOS 上少切几次窗口、又不愿引入网络或角标方案,可以从目录或 GitHub 安装后,用 __dshPing.test 与真实任务各验一遍。