dsh-sound
by AI-Galaxy-GPU
六类事件独立提示音:回合完成、审批、提问、计划评审、目标受阻、任务失败各有独立声音与音量,可在 Web 设置面板配置(内置合成音 / 静音 / 本地音频文件)。
Per-event sound notifications: turn completion, approval, question, plan-review, goal-blocked, and task-failure each get their own sound and volume, configurable in the Web UI (built-in synth, mute, or local audio file).
安装
dsh plugin --profile web add github:AI-Galaxy-GPU/dsh-soundGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
English | 中文
DeepSeek Harness(DSH)Web 端插件:任务完成后播放通知铃声,并在需要人介入时 (审批、提问、计划评审、目标受阻、任务失败)播放注意提示音。
📬 已提交至 — (等待维护者审批)
演示
源文件: docs/demo.mp4
截图

功能
六类事件完全独立
每类事件各自配置声音与音量(0–100%):
| 事件 | 检测来源 | 默认声音 |
|---|---|---|
| 回答完成 / 后台任务完成 | turn/end 且 reason.kind === 'completed';任务 → completed |
风铃 |
| 审批请求 | approval/requested 帧 |
叮咚 |
| 用户提问 | question/requested 帧(不满足计划评审特征) |
叮咚 |
| 计划评审 | question/requested 帧(单问题 + 计划评审意图) |
叮咚 |
| 目标受阻 | goal 投影进入 blocked |
叮咚 |
| 后台任务失败 / 循环失败 | 任务 → failed;turn/end 且 error;host/agent-error |
铃铛 |
- 完成事件受「当前会话不响铃」限制;注意事件(审批/提问/计划评审/目标受阻/失败)始终响铃。
- 用户停止(
aborted)、killed任务、max-tokens/blocked/interrupted不响完成音。 - 事件由连接层帧流(
events.mux+events.host)精确检测。mux 打开时回放的 未决审批/提问(刷新恢复)不响;同一rpcId只响一次。 - 事件流不可用、或连续解包失败时自动降级为快照 diff。
- 多标签页:同时打开多个标签页时同一次事件只响一声(BroadcastChannel 决胜); 单标签页立即播放,不做 40ms 握手。
声音来源
设置面板里每类事件用 Radio.Group + Radio.Button 选择声音:
- 内置合成音 — 叮咚 / 风铃 / 铃铛 / 完成 / 成功,Web Audio 实时合成,无需音频文件;
- 静音 — 该事件不响;
- 本地文件 — 选择任意 MP3/WAV 等文件;选中后该事件行下方会出现文件选择。
上传文件存入 IndexedDB(
dsh-sound-audio),不受 localStorage 容量限制。
设置面板(设置 → 声音通知)
总开关、六个事件行(标题行右侧音量滑块,下方 Radio.Button 分段选择; 点击选项即选中并播放;选「本地文件」时出现选择/更换按钮与文件名)、 配置导入/导出。
安装
需要支持 bundle 插件的 DSH 版本(dsh.profile.bundles + dsh.bundle.patch),
且 PATH 中有 pnpm(corepack enable 或 npm i -g pnpm)。
# 一键安装:pnpm 安装依赖并把本包加入 profile 的 bundles 层
dsh plugin --profile web add dsh-sound
# 重启服务(或刷新页面),打开 设置 → 声音通知 即可配置
其他 profile 同理:dsh plugin --profile <name> add dsh-sound。
手动安装(无 pnpm 时)
- 把本包及依赖(
@deepseek-ai/schemastery、@deepseek-ai/cosmokit、@standard-schema/spec) 复制到$DSH_HOME/profiles/web/node_modules/; - 在
$DSH_HOME/profiles/web/package.json的dsh.profile.bundles中追加"dsh-sound"; - 重启
dsh web。
配置持久化
- 客户端配置保存在浏览器 localStorage(键
dsh-sound:config),读取时做字段校验与默认值兜底。 上传的本地音乐存入 IndexedDB(dsh-sound-audio),不受 localStorage 容量限制。 - 配置键:
enabled、quietCurrent,以及六个声音 + 六个音量字段——completionSound/approvalSound/questionSound/planReviewSound/goalBlockedSound/failureSound(内置键 /none/local/data:URL /audio:<id>)与completionVolume…failureVolume(0–1)。localFiles记住每类事件上次选的本地文件,切到内置音再切回时不丢。 - 0.2.0 配置自动迁移:旧配置的
defaultSound迁为completionSound, voice/TTS 值降级为该类默认音,workspaces/debounceMs/ 全局volume/ 语音设置等旧字段一律忽略。 - 导出 / 导入:设置面板可把完整配置下载为 JSON(IndexedDB 音频引用内嵌为 data URL), 也可从 JSON 文件恢复——换浏览器 / 换设备无需重新配置。
- 宿主端同时注册
dsh-sound设置命名空间:rc.6 的 settings API 白名单 (dsh-host-apiproxy的WEB_SETTINGS_NAMESPACES)不会把第三方命名空间暴露给浏览器, 该注册为平台开放暴露机制后的无缝迁移预留(客户端存储接口外形与 settingsScope 一致)。
开发
npm test # 宿主端 + 客户端 100 余项自动化断言(Node 即可,无需浏览器)
npm run check # 语法检查
结构:
开发注意:profile 的 pnpm 使用
nodeLinker: hoisted,安装时会拷贝file:依赖到node_modules——直接改本仓库不会立即生效,需要 重新执行pnpm --dir ~/.dsh/profiles/web update dsh-sound,或把~/.dsh/profiles/web/node_modules/dsh-sound换成指向本目录的软链。 Web 服务按请求读取 bundle 内容(只有 boot 页的 rev 哈希在启动时缓存), 刷新拷贝后浏览器硬刷新(Cmd+Shift+R)即可,无需重启服务。
lib/index.js— 宿主端:注册 settings 命名空间(schemas 校验 + 默认值)lib/client.js— 浏览器端 bundle:事件检测、声音引擎(Web Audio / IndexedDB 音频)、设置面板lib/types/index.d.ts— 宿主端类型声明cordis.patch.yml— bundle 补丁层(插入dsh-sound行)tools/— 测试与验收脚本(不随 npm 包发布)
发布
npm login # 登录 npm(建议开启 2FA)
npm publish --access public
许可证
原始 README: https://github.com/AI-Galaxy-GPU/dsh-sound/blob/main/README.zh.md ↗
同类插件
查看全部 →
dsh
将 DeepSeek Harness 的生命周期状态、错误与审批请求,桥接到本地运行的 OpenPets 桌面伙伴。

dsh-qqbot
让 QQ Bot 接入 DeepSeek Harness(dsh)的官方插件

dsh-open-in-vscode
从 Web GUI 一键在 VS Code 中打开工作区目录。

dsh-notification
回合完成桌面通知,按结果分控 + 关键词过滤。

dsh-notifier
DSH 统一通知推送与远程控制:一个 `notify()` API 打通 25+ 渠道(Telegram / 钉钉 / 飞书 / 企业微信 / QQ 机器人 / WxPusher / PushPlus / Server 酱 / Bark / Discord / Slack / ntfy / webhook 等),timeSensitive / active / passive 分级路由并重试;五通道反向审批(Telegram 按钮 / 飞书卡片 / QQ / WxPusher / 微信 iLink);QQ/钉钉/飞书官方扫码登录;本地 Web 管理台;多 agent 路由;系统桌面通知——以及**手机指挥中心**:在手机上发 `!status` / `!stop` / `!retry` 遥控 agent,通知带可操作按钮(查看结果 / 重试 / 日志,点击回调 agent)。密钥脱敏、工具限流、零运行时依赖。

chatccc
飞书(Lark)或微信(WeChat)聊天控制 DeepSeek Harness / Claude Code / Cursor / Codex / CCC Agent