🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

OpenCode 提示音 contraliz/dsh-occlick

DeepSeek Harness
contraliz3 天前有提交已提供中文文档扫描:未发现敏感能力

为对话结束、权限请求和出错分别播放提示音

32.9/100
综合分
4
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add contraliz/dsh-occlick
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · security
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的 OpenCode 通知音效:回合结束、请求权限、回合出错各有独立选择器。

README

由 DeepSeek 最新模型翻译生成
dsh-occlick 在 DeepSeek Harness 里播放 OpenCode 通知音效 —— 一轮对话结束时响一声,智能体请求权限时响一声,一轮对话失败时响一声,每种事件都能从整套 OpenCode 音效库里单独挑一段。 OpenCode 为自家桌面应用准备了一小套通知音效。这个插件把这套音效搬到 DSH:一轮对话结束时响一声,智能体请求权限时响一声,一轮对话失败时响一声。这样跑长任务时你可以把视线移开,等智能体需要你时再听声音回来。 Settings → Sound effects 下的三个音效选择器:Turn finished、Permission requested 和 Turn ended on an error,每个都带一个 OpenCode 音效下拉菜单 Settings → Sound effects:每种事件一个选择器,覆盖全部 45 段 OpenCode 音效,外加 Off (silent)。选中某段音效会立刻试听。
展开完整文档(README 剩余 1 节)
dsh-occlick

在 DeepSeek Harness 里播放 OpenCode 通知音效 —— 一轮对话结束时响一声,智能体请求权限时响一声,一轮对话失败时响一声,每种事件都能从整套 OpenCode 音效库里单独挑一段。

OpenCode 为自家桌面应用准备了一小套通知音效。这个插件把这套音效搬到 DSH:一轮对话结束时响一声,智能体请求权限时响一声,一轮对话失败时响一声。这样跑长任务时你可以把视线移开,等智能体需要你时再听声音回来。

Settings → Sound effects 下的三个音效选择器:Turn finished、Permission requested 和 Turn ended on an error,每个都带一个 OpenCode 音效下拉菜单

Settings → Sound effects:每种事件一个选择器,覆盖全部 45 段 OpenCode 音效,外加 Off (silent)。选中某段音效会立刻试听。

功能说明

| 事件 | 来源 | 行为 |
| 一轮对话结束 | 会话 running: true → false | 播放一次结束音效 |
| 请求权限 | approval/request | 播放权限音效,然后把请求交给审批界面 |
| 一轮对话因错误结束 | api-session/error | 播放错误音效;随后的一轮结束保持静音 |
| 用户中止对话 | 停止按钮或 Esc Esc | 静音;被中止的一轮不算结束 |
| 启动或重连时的抖动 | 约 250 ms 内出现 true → false | 静音 |
| 页面加载时已有任务在跑 | 首个快照就是 running: true | 观察到运行约 2 s 后才出声 |
| 重复的空闲刷新 | false → false | 静音 |
| 子代理会话 | origin: subagent | 静音 |
| 挂载在空闲列表上 | — | 静音(不回放历史) |

- 三个通道,三个选择器:一轮结束、请求权限、一轮因错误结束,各自挑自己的音效。
- 每个事件只响一次:音效跟着事件走,不跟每一步、每次工具调用或每个流式 token。失败的一轮播放错误音效,不播结束音效,两者绝不叠加。
- 每种 45 段音效:OpenCode 自带的全部音效 —— Alert、Bip-bop、Nope、Staplebops 和 Yup —— 选中即试听。
- 在 DSH 里配置:同一组选择器既出现在 Settings → Sound effects,也出现在 Plugins 下插件自己的那一行,因此照常走启用/停用和卸载流程。
- 该安静的地方保持安静:子代理的回合不出声,已停止的回合不出声,一连串审批请求只响一次,打开或重新加载 harness 不会重放旧的回合结束音。

DSH 按会话发布运行状态,所以当你在看别处时结束的回合仍会发声。错误按会话记忆 15 秒,因此失败的回合不会再播放回合结束音。审批请求在 1.5 秒内合并,所以一连串请求只响一次。

安装

需要 DSH 0.2.0 或更高版本 和 Web 客户端(桌面应用,或 dsh web)。插件是 Cordis 客户端 bundle,需要页面来渲染设置,也需要音频输出。

从插件页面安装

1. 打开 Plugins → Add plugin。
2. 粘贴仓库地址:

https://github.com/contraliz/dsh-occlick

3. 点击 Install,然后点击 Enable now。
4. 打开 Settings → Sound effects,选一个音效。

从命令行安装

复制与你运行 DSH 方式匹配的配置档对应那一行:

DSH desktop app
dsh plugin --profile desktop add github:contraliz/dsh-occlick

dsh web
dsh plugin --profile web add github:contraliz/dsh-occlick

命令行安装后重启 DSH:bundle 条目在启动时组装。卸载时用同样的命令,把 add 换成 remove dsh-occlick。

从本地检出安装

git clone https://github.com/contraliz/dsh-occlick
cd dsh-occlick
dsh plugin --profile web add .

选择音效

打开 Settings → Sound effects,或 Plugins → dsh-occlick → Configure。两处显示同样的三个选择器,每个都列出全部音效,标签与 OpenCode 一致。

每个通道还提供 Off (silent),所以可以静音某个事件,同时让其他事件继续发声。

默认值是 OpenCode 桌面应用对相同事件使用的音效:

| 通道 | 默认值 | OpenCode 对应项 |
| Turn finished | staplebops-01 | Agent complete |
| Permission requested | staplebops-02 | Permission required |
| Turn ended on an error | nope-03 | Error |

选择音效后会立即保存并播放,所以不用等事件发生就能试听。

| 系列 | 数量 | 库内名称 |
| 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-occlick.turn、dsh-occlick.permission 和 dsh-occlick.error 下,所以按浏览器保存,而不是按配置档保存。版本 0.2.x 保存的回合音效(dsh-occlick.sound)会迁移过来。清除站点数据会恢复默认值。

Category

集成与连接 —— 插件把 DSH 已有的回合、审批和错误信号转成本地通知渠道。它不连接任何外部服务,不新增模型、工具或技能,也不改动对话内容。

建议标签:notifications、sound、audio、accessibility、opencode。

权限与风险

dsh-occlick 是客户端 Cordis 包,宿主侧为空。它不申请任何 DSH 权限,不调用工具,不执行 shell 命令,不访问文件系统路径,也不读取任何凭据。

| 层面 | 插件做什么 |
| 客户端服务 | 读取 sessions.list(其中的 running 位),注册三个插槽条目(settings.section、plugins.row.config,以及一个透传的 conversation.composer 选择器),并注册自己的语言词典 |
| 远程事件 | 监听 approval/request(随后调用下一个处理器,审批界面仍然优先)和 api-session/error |
| 浏览器存储 | 只读写上面列出的 dsh-occlick.* 键 |
| 网络 | 运行时无网络 —— 音频片段内嵌在包里,不发任何请求 |
| 音频 | 复用同一个 HTMLAudioElement,播放本地 data: URI |
| 文件、shell、MCP、子代理 | 无 |

- 自动播放,静默完成:浏览器要求先有用户手势才允许播放音频,所以第一次按下指针或按键时,会用一段零长度静音片段预热该元素。预热全程静音,绝不会出声;在窗口里随便点击不会自己触发声音。
- 你主动停止不算完成:用输入框的停止按钮或 Esc Esc 快捷键停止回合,不会播放回合结束音。
- 数据不出本机:没有分析统计,没有遥测,没有远程日志。

兼容性

| 要求 | 说明 |
| DSH 0.2.0+ | 用到客户端插槽、sessions.list、remote.$on 和 ctx.locale;包内声明了 engines.dsh |
| Web 客户端 | 桌面应用或 dsh web。无头/TUI 配置档没有设置页,也没有音频输出,插件在那里不生效 |
| Chromium/Electron WebView | 需要 HTMLAudioElement、localStorage 和 CSS 自定义属性 |
| Node.js 22+ | 仅用于开发(构建和测试);安装后的插件不运行 Node |
| 启用浏览器存储 | 存储被禁用时,选项回退到默认值 |

已在 Windows 11 的 DSH 桌面应用 0.2.1 上测试。如果在其他 DSH 版本上看不到选择器,说明客户端插槽 API 变了;请提交 issue 并附上 DSH 版本。

故障排查

- 第一次点击前没有声音:窗口收到手势之前,浏览器会拦截音频。点击或输入一次即可;之后回合结束会正常播放,点击本身是静音的。
- 某个声道没声音:检查它的选择器是不是设成了 Off (silent)。
- 全都没声音:检查系统和浏览器音量,确认 DSH 窗口没有在系统混音器里被静音。
- 点击时播放了旧声音:0.4.0 及更早版本的预热会出声;升级到 0.4.1 或更高版本。
- 选项重置:清除站点数据或换用其他浏览器,保存的密钥就会消失。

详情

- 打包发布,不打补丁:包内自带 cordis.patch.yml,因此 DSH 会把它列在 Plugins 下,显示独立行和 Configure 页面,而不是作为松散的 Loader 行出现。
- 放音频,不发通知:插件通过一个复用的 HTMLAudioElement 播放音频片段。它不弹系统通知,不注册服务,也不加工具栏按钮。
- 每个事件只响一次:按会话对下降沿做防抖,错误标记会抑制该轮的回合音效,停止事件则完全抑制回合音效。
- 宿主侧零工作:lib/index.js 导出一个空的 apply,所以服务端半边不加载任何东西,也不保存任何状态。

开发

npm run fetch:sounds # download the OpenCode clips into assets/audio (needs network)
npm run build # regenerate lib/client.js from src/client.js + assets/audio
npm test # offline checks for the generated bundle

lib/client.js 是生成产物,且已提交到仓库,因为 DSH 每个插件行只提供一个脚本:所有音频片段都以 data URI 形式内嵌其中。要改就改 src/client.js 再重新构建,不要直接编辑 lib/client.js。

源码结构:

| 路径 | 作用 |
| src/client.js | 浏览器半边:事件检测、播放、设置选择器 |
| lib/client.js | 生成的浏览器打包产物(已提交,保证安装后即可加载) |
| lib/index.js | 宿主半边:空的 apply,让 Loader 有一行可显示 |
| assets/audio | 下载来的 OpenCode 音频片段 |
| scripts/build.mjs | 把 assets/audio 内嵌进 lib/client.js |
| scripts/fetch-sounds.mjs | 维护者工具,从 OpenCode 刷新 assets/audio |
| test/client.test.mjs | 针对生成产物的离线检查 |

致谢

音效库来自 OpenCode 桌面应用(packages/ui/src/assets/audio),采用 MIT 协议。详见 THIRD_PARTY_NOTICES.md。

许可证

MIT。详见 LICENSE。
预览分享卡片长什么样 ↓contraliz/dsh-occlick
分享 · DeepSeek Harness Hub
contraliz/dsh-occlick

为对话结束、权限请求和出错分别播放提示音

回到顶部