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

opencode 提示音 notf0und/dsh-opencode-sounds

DeepSeek 客户端
notf0und38 天前有提交已提供中文文档扫描:未发现敏感能力兼容 / 相关生态

任务完成或需处理时播放 opencode 音效

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/notf0und/dsh-opencode-sounds.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 38 天前
档位由哪些信号合成

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

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

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

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

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

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 任务完成播放音效
  • 需处理时播放音效

README

由 DeepSeek 最新模型翻译生成
dsh-opencode-sounds 一个 DeepSeek Harness (DSH) Web UI 插件,当任务完成或有事情需要人工处理时,播放 opencode 的通知音效包。 它是 @ai-galaxy/dsh-sound(MIT 许可)的一个分支,将内置的合成提示音替换为 opencode 的真实音频资源,并使插件仅支持英文。事件检测引擎、设置面板和子代理通道来自上游;音效包、默认值和翻译则来自本分支。 音效包 内置音效完全来自 opencode,且顺序与 opencode 一致: | 系列 | 数量 | Id | | Alert | 10 | alert-01 … alert-10 | | Bip-bop | 10 | bip-bop-01 … bip-bop-10 | | Staplebops | 7 | staplebops-01 … staplebops-07 | | Nope | 12 | nope-01 … nope-12 | | Yup | 6 | yup-01 … yup-06 | 外加 None(静音)和 Local file(你自己的音频文件,存储在浏览器中)。
展开完整文档(README 剩余 1 节)
dsh-opencode-sounds

一个 DeepSeek Harness (DSH) Web UI 插件,当任务完成或有事情需要人工处理时,播放 opencode 的通知音效包。

它是 @ai-galaxy/dsh-sound(MIT 许可)的一个分支,将内置的合成提示音替换为 opencode 的真实音频资源,并使插件仅支持英文。事件检测引擎、设置面板和子代理通道来自上游;音效包、默认值和翻译则来自本分支。

音效包

内置音效完全来自 opencode,且顺序与 opencode 一致:

| 系列 | 数量 | Id |
| Alert | 10 | alert-01 … alert-10 |
| Bip-bop | 10 | bip-bop-01 … bip-bop-10 |
| Staplebops | 7 | staplebops-01 … staplebops-07 |
| Nope | 12 | nope-01 … nope-12 |
| Yup | 6 | yup-01 … yup-06 |

外加 None(静音)和 Local file(你自己的音频文件,存储在浏览器中)。

这些 MP3 文件位于 assets/audio/,由 tools/build-sounds.mjs 以 base64 data URL 的形式内联到 lib/client.js 中,因为 DSH 客户端将插件作为单个 CJS 工厂加载,没有相对模块解析器。

默认值

默认值镜像 opencode 内置的 "OpenCode Default" 音效包(packages/tui/src/attention.ts,对应 assets/audio/PROVENANCE.md 中记录的标签):

| DSH 事件 | 检测 | opencode 来源 | 默认音效 |
| Completion | turn/end reason.kind === 'completed';job → completed | done / default | bip-bop-01 |
| Approval request | approval/requested 帧 | permission | staplebops-06 |
| User question | question/requested,非计划审查形态 | question | bip-bop-03 |
| Plan review | question/requested 被归类为计划审查 | question | bip-bop-05 |
| Goal blocked | goal 投影进入 blocked | error | nope-03 |
| Failure | job → failed;turn/end error;host/agent-error | error | nope-07 |

独立的子代理通道

源自子代理的事件(一次性 kind: 'subagent' 作业以及标记为 origin: 'subagent' / parentId 的会话)拥有自己的音效和音量:

| 子代理事件 | 默认音效 |
| Completion | yup-01(opencode 的 subagent_done) |
| Approval / question / plan review / goal blocked / failure | none(静音) |

一个 Ignore subagent events 开关可一次性静音整个通道。

特性

- 六个完全独立的事件,每个都有自己的音效和音量(0–100%)。
- Completion 遵循 quiet current session;attention 事件始终响铃。
- 用户中止、被终止的作业以及 max-tokens / blocked / interrupted 回合保持静音。
- 检测会适应 DSH 构建:当连接层暴露事件流(events.mux + events.host)时会使用它,mux-open 重放保持静音,且每个 rpcId 最多响铃一次;在没有该功能的构建上(0.1.5-rc.3 及更高版本),插件读取客户端事实源直接(见下文)。
- 页面加载时已经为真的事物不会响铃:已经挂起的请求、已经阻塞的目标或已经失败的作业会被静默播种。
- 多个标签页:同一事件只响一次(BroadcastChannel 决胜);单独的标签页立即播放,无需握手。
- 配置以 JSON 导出/导入(IndexedDB 音频引用以内联 data URL 形式存储)。

每种声音如何被检测

| 事件 | 来源(DSH 0.1.5-rc.3+) |
| 完成 | 会话自身事件窗口中的 turn/end completed;对于窗口未暂存的会话,以列表 running 边缘作为延迟回退 |
| 失败 | turn/end error、SessionSnapshot.lastAgentError,或后台作业达到 failed |
| 审批 | uiSession.pendingInteractions,类型 approval |
| 用户提问 | uiSession.pendingInteractions,类型 question |
| 计划审查 | uiSession.pendingInteractions,类型 plan-review |
| 目标阻塞 | 目标投影(projectionValues.goal.goal.phase)进入 blocked |
| 设计上静默 | 回合以 aborted / blocked / max-tokens / interrupted 结束,以及作业 killed |

审批、提问和计划审查由交互域自身发布,因此插件不会从帧形状重新推导它们。在仍暴露 connection.api.events.mux 的 DSH 构建上,改为运行原始的基于帧的监视器。

计划审查仅在计划模式激活时存在:exit_plan_mode 引发审查问题,客户端根据该问题的 intent 及其 detail(即计划本身)将其分类为 plan-review。如果该形状发生变化,卡片仍会出现,但会听起来像普通提问,因此该形状由客户端测试中的契约夹具固定。在子代理会话内引发的计划审查使用子代理通道,默认情况下在那里是静默的。

设置面板

设置 → Sounds。一个主 Enabled 开关可打开或关闭整个插件,一个 Main agent / Subagents 标签栏在六个主事件行和子代理面板之间切换。每一行都有一个声音下拉菜单(opencode 的整个包,然后是 None,然后是 Local file)、一个 Play 按钮和一个音量滑块;选择声音会预览它。选择 Local file 会显示一个文件选择器;文件存储在 IndexedDB(dsh-opencode-sounds-audio)中,因此 localStorage 配额永远不会限制它。

安装

需要支持 bundle-plugin 的 DSH 版本(dsh.profile.bundles + dsh.bundle.patch)以及 PATH 上的 pnpm(corepack enable 或 npm i -g pnpm)。

从此检出目录
dsh plugin --profile web add file:/home/gonzalo/code/dsh-opencode-sounds

或从 GitHub
dsh plugin --profile web add github:notf0und/dsh-opencode-sounds

然后重启 dsh web(或刷新页面)并打开 设置 → Sounds。

手动安装

1. 将包添加到 $DSH_HOME/profiles/web/package.json —— 既是依赖项又是 bundle:
"dependencies": { "dsh-opencode-sounds": "file:/home/gonzalo/code/dsh-opencode-sounds" },
"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-opencode-sounds"] } }

2. pnpm --dir "$DSH_HOME/profiles/web" install
3. 移除旧插件:dsh plugin --profile web remove @ai-galaxy/dsh-sound
4. 重启 dsh web。

该 profile 使用 nodeLinker: hoisted,这会在安装时将 file: 依赖复制到 node_modules 中。对此检出目录的编辑不会影响到正在运行的应用,除非你重新运行 pnpm --dir "$DSH_HOME/profiles/web" install(或将复制后的目录替换为符号链接)。Web 服务器按请求读取 bundle 内容,因此之后只需在浏览器中强制刷新即可——无需重启服务器。

配置存储

- 客户端配置:localStorage,键为 dsh-opencode-sounds:config,每次读取时都会进行清理。
- 本地音频文件:IndexedDB,dsh-opencode-sounds-audio。
- 声音值:一个 opencode 音效包 id、none、local、一个 data: URL,或一个 audio: 引用。
- 字段:enabled、quietCurrent、ignoreSubagent,六个主声音 + 音量对(completionSound … failureSound、completionVolume … failureVolume)以及六个子代理对(subagentCompletionSound … subagentFailureVolume)。localFiles 会为每个事件保留最后选择的本地文件,这样切换离开再切回来时不会丢失它。
- 宿主还会注册 dsh-opencode-sounds 设置命名空间。rc.6 设置 API 允许列表(WEB_SETTINGS_NAMESPACES)不会向浏览器暴露第三方命名空间,因此客户端目前使用 localStorage;该注册保持了迁移路径的开放。

开发

npm install
npm test # 宿主 + 客户端行为测试(仅 Node,无需浏览器)
npm run check # 语法检查,外加检查内嵌音效包是否为最新
npm run build # 将 assets/audio/*.mp3 重新嵌入 lib/client.js

布局:

- lib/index.js — 宿主部分:注册设置命名空间(schema + 默认值)
- lib/client.js — 浏览器 bundle:事件检测、声音引擎、设置面板
- lib/types/index.d.ts — 宿主端类型声明
- assets/audio/ — opencode 的声音文件(.mp3 已嵌入,.aac 一并保留)
- cordis.patch.yml — bundle 补丁层(插入 dsh-opencode-sounds 行)
- tools/ — 测试、音效包构建器、验证脚本

跟进上游

本仓库是一个 fork,因此上游修复很容易拉取。origin 是本 fork,upstream 是原始插件:

git remote -v
origin git@github.com:notf0und/dsh-opencode-sounds.git (this fork)
upstream https://github.com/AI-Galaxy-GPU/dsh-sound.git (original)

git fetch upstream
git merge upstream/main # or: git rebase upstream/main

大多数上游工作都落在事件检测引擎中,而本 fork 在该处未做改动;冲突通常仅限于声音定义、默认值和设置 UI。合并之后,
重新运行 npm run build && npm test。

更新声音包本身意味着从 opencode 获取新文件并重新嵌入它们:

copy new audio into assets/audio/, refresh PROVENANCE.md, then:
npm run build && npm test

署名与许可

- 派生自 @ai-galaxy/dsh-sound — MIT。
- 声音文件来自 opencode (packages/ui/src/assets/audio,标签 v1.18.32)— MIT。参见 assets/audio/PROVENANCE.md。
- 本派生版本:MIT。
预览分享卡片长什么样 ↓notf0und/dsh-opencode-sounds
分享 · DeepSeek Harness Hub
notf0und/dsh-opencode-sounds

任务完成或需处理时播放 opencode 音效

这是你的仓库?认领条目

回到顶部