前言¶
在 DeepSeek Harness(DSH)里跑长任务时,人往往会切到别的窗口。回合何时结束、智能体是否在等审批、是否因错误中断,如果只靠盯界面,效率很低。桌面端可以靠系统通知,但 Web 客户端或习惯用声音反馈的开发者,更需要「事件到了就响一声、且别误报」的机制。
OpenCode 桌面应用自带一小套通知短音;社区插件 dsh-occlick(维护者 contraliz)把同一套素材接到 DSH 上,按三种事件各选一个片段播放,并在 Settings → Sound effects 里配置。插件在 GitHub 上采用 MIT 许可证,当前 package 版本为 0.4.1;社区目录页归类为趣味换装,仓库 README 中的分类标签为 Integrations & Connections。
这是什么¶
dsh-occlick 是一个仅运行在 DSH Web 客户端侧的 Cordis 客户端 bundle:不连外部服务、不改对话内容,只订阅 DSH 已有的回合运行状态、审批请求与会话错误信号,在本地用嵌入 bundle 的音频播放一次提示音。
适用环境:DSH 0.2.0 及以上,以及桌面应用或 dsh web;无设置页、无音频输出的 Headless/TUI profile 下插件不生效。
核心功能¶
下面介绍插件在三种通道上的行为,以及它刻意保持静音的情况。
三种事件、三个选择器¶
| 事件 | 触发来源 | 行为 |
|---|---|---|
| 回合结束(Turn finished) | Session running: true → false |
播放「回合结束」所选片段一次 |
| 权限请求(Permission requested) | approval/request |
播放「权限」片段,再把请求交给原有审批 UI |
| 回合因错误结束(Turn ended on an error) | api-session/error |
播放「错误」片段;随后该回合的结束不再播放「回合结束」音 |
每种通道在设置里都有独立下拉框,库内共 45 条 OpenCode 短音(Alert、Bip-bop、Nope、Staplebops、Yup 等命名),并可选 Off (silent)。选中的片段会立即试听一次。
默认与 OpenCode 桌面应用对应关系如下:
| 通道 | 默认值 | OpenCode 等价 |
|---|---|---|
| Turn finished | staplebops-01 |
Agent complete |
| Permission requested | staplebops-02 |
Permission required |
| Turn ended on an error | nope-03 |
Error |
播放策略(避免误响)¶
README 中明确列出的规则包括:
- 每个事件最多响一声,不跟随逐步工具调用或流式 token。
- 失败回合只播错误音,不会同时播「回合结束」音;错误状态在同 Session 内记忆约 15 秒。
- 用户用停止按钮或
EscEsc中止回合时不播结束音。 - 启动或重连后约 250 ms 内的
running抖动、页面加载时已在运行的 Session(需观察到 running 约 2 s 后才可能响)、子 agent Session(origin: subagent)、以及挂载在空闲列表上时的历史回放,均保持静音。 - 1.5 秒内的连续审批请求会合并,只响一次。
音频通过复用的 HTMLAudioElement 与本地 data: URI 播放;运行时无网络请求。浏览器 autoplay 策略下,首次指针或按键会用零长度静音片段预热,避免无声或误触整窗点击就响。
配置存储¶
选项保存在浏览器 localStorage:
dsh-occlick.turndsh-occlick.permissiondsh-occlick.error
按浏览器维度保存,而非 DSH profile。旧版 0.2.x 的 dsh-occlick.sound 会迁移;清除站点数据后恢复默认。
安装与启用¶
需要 DSH ≥ 0.2.0 与 Web 客户端。命令行安装后需重启 DSH(bundle 在启动时组装)。
在 Plugins 页面安装¶
- 打开 Plugins → Add plugin。
- 粘贴仓库地址:
https://github.com/contraliz/dsh-occlick
- 点击 Install,再 Enable now。
- 打开 Settings → Sound effects 选择片段。
命令行安装¶
按你使用的 profile 复制对应一行:
# DSH desktop app
dsh plugin --profile desktop add github:contraliz/dsh-occlick
# dsh web
dsh plugin --profile web add github:contraliz/dsh-occlick
卸载时将 add 换为 remove dsh-occlick,profile 与安装时一致。
从本地 checkout 安装(可选)¶
若已有源码目录,可在该目录执行(README 示例为 web profile):
git clone https://github.com/contraliz/dsh-occlick
cd dsh-occlick
dsh plugin --profile web add .
典型用法¶
- 安装并启用插件后,打开 Settings → Sound effects,或 Plugins → dsh-occlick → Configure;两处是同一套三个选择器。
- 为「回合结束」「权限请求」「错误」分别选片段;不需要的通道选 Off (silent)。
- 发起一段可能较久的 agent 任务,切到其他窗口;回合正常结束时应听到结束音;若触发审批,应听到权限音;若会话报错,应听到错误音而非结束音。
音库族与数量(名称均来自 README):
| 族 | 数量 | 库内名称示例 |
|---|---|---|
| Alert | 10 | alert-01 … alert-10 |
| Bip-bop | 10 | bip-bop-01 … bip-bop-10 |
| Nope | 12 | nope-01 … nope-12 |
| Staplebops | 7 | staplebops-01 … staplebops-07 |
| Yup | 6 | yup-01 … yup-06 |
适用场景与注意¶
适合谁:长时间在 DSH Web 或桌面壳里跑任务、希望用 OpenCode 同款短音感知「结束 / 要审批 / 出错」的开发者;也可作为不依赖视觉盯屏的辅助反馈(README 建议标签含 accessibility)。
权限与风险:插件 host 侧为空,不申请 DSH 权限、不执行 shell、不访问文件或凭证;客户端读取 sessions.list 的 running、监听 approval/request 与 api-session/error,并注册设置与插件行 UI。无遥测与远程日志。
安装前建议:插件以当前 DSH 进程所加载的客户端 bundle 形式运行;安装前应阅读 GitHub 仓库 源码与 MIT 许可证。社区目录 skillhub.cn 插件页 与 DeepSeek / 幻方无官方从属关系,属于 DSH「一切皆插件」生态中的独立收录。
兼容性备注:README 称在 DSH desktop app 0.2.1、Windows 11 上测试;需 Chromium/Electron WebView 的 HTMLAudioElement 与 localStorage。Node.js 22+ 仅用于开发与构建,已安装插件不在 Node 中运行。
结尾¶
dsh-occlick 把 DSH 里已有的回合、审批与错误信号转成三条本地提示音通道,素材与 OpenCode 一致、可逐项静音,且对中止回合与子 agent 等场景做了静音处理。需要安装或 issue 时可直接访问仓库与社区目录页:
- 目录页:https://www.skillhub.cn/plugins/contraliz/dsh-occlick
- GitHub:https://github.com/contraliz/dsh-occlick