前言¶
用 DeepSeek Harness(DSH)跑 agent 时,常见情况是窗口在后台、你在看别的标签页,或者同时开着多个会话。权限审批、模型向你提问、任务真正结束或对话因错误停住——这些状态往往只体现在侧边栏或会话列表里,没有声音或桌面提醒时,很容易错过。
下面介绍社区插件 dsh-chime(维护者 AkotaP,分类:客户端)。它在 DSH Web 客户端侧订阅会话状态,按事件类型播放可配置的提示音,并可选用系统通知;配置写在插件页,不改动 DSH profile 里的业务配置(安装插件本身仍会改 profile 的 bundles,见下文安装说明)。
这是什么¶
dsh-chime 是 DSH 的 Web 通知音效插件:针对四类会话相关事件,分别设置音源、音量、何时提醒,以及是否弹桌面通知。仓库与说明见 GitHub,社区目录页见 SkillHub。
插件以 纯 Client 为主:配置与播放引擎在浏览器侧,持久化在 localStorage(key dsh.chime.config.v1)。宿主侧只注册两条 loopback HTTP 路由,用于把本地音频文件暴露成同源 URL 播放,不复制你的音频文件。
四类事件与触发条件¶
插件按 DSH 的 uiSession.sessionStatus 与会话列表做判定(事件驱动为主,400ms 轮询作兜底)。四类事件与 README 中的对应关系如下。
| 音效类别 | 触发时机 |
|---|---|
| 权限审批 | 工具调用等待批准(pendingInteraction === 'approval') |
| 回答问题 | ask_user_question 提问或计划审批(question / plan-review) |
| 中断 | 对话因最终错误无法继续(会被自动重试的失败不会响) |
| 完成 | 任务真正结束(无运行中的 agent、无在跑子代理、无后台任务) |
「完成」与「中断」刻意做了不误报:后台 bash、后台子代理仍在跑时不会误报完成;可自动重试的失败不触发中断。默认未配置的音效不会响,也不会退回内置提示音。
核心功能¶
音源与音量¶
- 链接式音源:可粘贴
http(s)网络链接,或本地音频的完整路径(Linux/macOS 如/home/you/ding.mp3,Windows 如E:\Sounds\ding.mp3)。本地文件由宿主路由GET /dsh-chime/asset?path=<绝对路径>提供字节流(支持Range/206),浏览器侧用 Web Audio 播放。 - 每类音效独立音量:0–100,互不影响。
- 首次播放前,插件会在用户
pointerdown/keydown时解锁AudioContext,以满足浏览器自动播放策略。
提醒时机¶
同时考虑「事件发生在哪个会话」和「你当前是否在 DSH 窗口」,共五档:只看当前会话 / 只在我不在时 / 我不在或事情在别的会话(README 推荐)/ 总是 / 从不。音效与系统通知各自选档,但共用同一套判定逻辑。
窗口在后台或长时间未聚焦时,仍可通过 remote 推送即时响应;避免仅依赖定时器而在隐藏标签页被节流后才响。
系统通知¶
- 独立总开关与逐类开关,走浏览器
Notification(silent: true,声音由音效通道负责)。 - Windows / macOS / Linux 均走系统通知中心;点击通知可回到对应对话(
openSession)。 - 桌面版另有实验性选项:点击通知时把窗口带到前台(
notify.raiseWindow,默认关闭)。 - 首次需在 DSH 设置里完成通知授权(浏览器要求权限请求落在用户手势里);不支持或拒绝时静默降级。
配置入口¶
在 插件 → 本插件页面(或插件页的提示音卡片)。表单直接渲染在插件页,无单独保存按钮,修改即时生效。
安装与启用¶
安装会改动 %USERPROFILE%\.dsh(Linux/macOS 下为对应用户目录下的 .dsh)下的 profile 配置,并需要重启 DSH(会打断正在跑的会话)。插件以当前 DSH 进程权限运行,安装前建议浏览仓库源码与 MIT 许可证。
方式一:插件页
侧边栏「插件」→「添加插件」,填入仓库地址 https://github.com/AkotaP/dsh-chime(同处也接受 npm 包名 dsh-chime、本地目录绝对路径和 tarball)。DSH 会先用 git ls-remote 探仓库再交给 pnpm,装完后在列表中确认插件为启用状态。
方式二:命令行(与上式等价,profile 为 desktop 时):
dsh plugin --profile desktop add https://github.com/AkotaP/dsh-chime
README 注明:发布到 npm 之后也可使用包名:
dsh plugin --profile desktop add dsh-chime
装好后重启 DSH,在插件页的提示音卡片中应能看到配置表单。卸载:插件页卸载,或:
dsh plugin --profile desktop remove dsh-chime
并确认 profile 的 dsh.profile.bundles 里已移除 dsh-chime。
典型用法¶
- 按上文安装并重启 DSH,打开插件页的提示音配置。
- 为需要的声音类别填写 URL 或本地绝对路径,调节音量。
- 为「音效」和「通知」分别选择提醒时机五档之一;若要用桌面通知,先在设置中授权浏览器通知。
- 保持 DSH 在后台运行 agent:当出现审批、提问、最终错误或任务真正完成时,按你的配置播放音效或弹出通知;点击通知可跳回对应会话。
若希望由 DSH 内的 agent 协助安装,README 提供了可复制给 agent 的说明段落(要求装完后先询问用户再重启)。
适用场景与注意¶
适合:长时间让 agent 在后台跑任务、多会话并行、需要听觉或系统级提醒以免错过审批与提问的 DSH 用户。
环境与版本(来自仓库 package.json 与 README):
- Node.js
>=20 - DSH
>=0.2.0-rc.2 - 当前包版本
0.6.0
注意:
- 未配置音源则该类事件静音,无默认叮一声。
- 本地路径依赖 desktop 等带 host half 的安装;纯 Web 场景下本地文件路由行为以实际宿主为准。
- 实验性「点击通知前置窗口」对收起到系统托盘的情况有限制,README 建议从托盘打开窗口。
- 社区目录 SkillHub 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,按需选用即可。
结尾¶
dsh-chime 把 DSH 里权限审批、提问、最终错误与真实完成四类状态,落成可配置的提示音和可选桌面通知,并区分提醒时机,减少后台跑 agent 时的漏接。需要细节、事件判定契约与版本历史时,请直接查阅仓库 README 与 CONTRACT.md。
- 目录页:https://www.skillhub.cn/plugins/AkotaP/dsh-chime
- GitHub:https://github.com/AkotaP/dsh-chime