前言¶
在 DeepSeek Harness(DSH)里跑 Agent,常见状态是:模型在流式输出、在调工具、在等你点审批,或者已经停下来了——这些信息多半要靠盯着聊天窗口。切到别的应用写代码、看文档时,很容易漏掉「在等你操作」的瞬间,也不知道后台会话是不是还在干活。
dsh-coding-sound 是社区维护的 DSH 声音插件:模型输出时播放由 Web Audio 实时合成的生成式背景音乐,完成、等待审批、思考与工具执行各阶段可单独配置提示音。不依赖包内音频素材,运行时也不联网。下面介绍它做什么、怎么装、以及使用时要注意什么。
这是什么¶
- 名称:
dsh-coding-sound(npm 包名与插件标识一致) - 维护者:mhlywxl
- 分类:社区目录中的「趣味换装」类插件
- 许可:MIT(见 GitHub 仓库中的 LICENSE)
- 当前包版本(package.json):0.1.3
一句话定位:为 DSH 提供生成式背景音乐与通知提示音,让你凭听觉判断 Agent 是在思考、还在工作,还是卡在等你——而不必一直盯着屏幕。
插件面向 DSH 0.2.0 / 0.2.1;README 写明当前针对 0.2.1-rc.2 构建。没有原生依赖、没有安装脚本,client.js 已预构建,macOS / Windows / Linux 行为一致。
核心功能¶
生成式背景音乐¶
某个会话开始输出时,该会话音乐在 0.25 s 内淡入。音符跟随真实字符增量驱动,不是固定循环;节拍密度可配置(回答默认每 4 字一拍、思考默认每 2 字一拍)。两拍间隔为 max(100 ms, 60 + 30 × 密度) ms,试听时的快慢即实际运行速度。音高在 C 大调五声音阶上随机取音,并带少量 detune 与低八度概率。
提供四种音乐预设(空灵 / 经典 / 数字 / 复古),对应不同波形、包络、低通与混响参数;也可将背景音乐设为「关闭」。一个页面共享一个 AudioContext,每会话独立声部,当前会话与其他会话音量可分别调节(默认当前 100%、其他 80%),切换会话时 0.25 s 交叉过渡。
阶段声音:思考、回答、工具执行¶
| 阶段 | 行为概要 |
|---|---|
| 思考(reasoning) | 与回答类似逐 token 出音符;可改密度(1/2/3/4/6/8 字一拍)、音高(低/标准/高)或关闭 |
| 回答正文 | 默认每 4 字一拍,可单独开关与调参 |
| 工具执行 | 工具行本身不出音符;会话空闲约 1.2 s 后进入「工作脉冲」,频率多档可选(0.1~2.0 s);间隔可随机浮动(三角分布,可关「随机」回到固定节拍) |
关闭某一阶段后该阶段不出声,但该阶段的文字仍算「有活动」,不会让工作脉冲误补进来。工作脉冲只填补没有文字的空窗,有字符到达即回到逐字节拍,且不与文字拍叠加。
通知提示音¶
与背景音乐音量隔离的「通知音量」只作用于两类场景:
- 生成完成:一轮结束且防抖约 320 ms 后播放(子代理会话不响)
- 等待操作:某会话进入等待审批/输入时,仅该会话音乐淡出并播放等待音;其他会话照常
各提供 6 种选项:关闭、合成音效、正面通知、正确提示、界面启动、界面返回——全部由 Web Audio 实时合成,包内无第三方音频素材。「等待操作」按 turn + prompt 去重,避免断线重连重复响;页面加载时已存在的等待状态不会补响。
设置界面¶
安装并启用后,在 设置 → 声音与提醒 中可配置音乐预设、通知音效、会话音量,以及「阶段声音」卡片(思考 / 回答 / 工具执行)。每项支持试听;设置保存在浏览器 localStorage(键 dsh:coding-sound:v1),刷新或重启 DSH 后仍保留,换浏览器则为另一套配置。
安装与启用¶
先根据使用场景选择 Web(dsh web,web profile)或 DSH Desktop(desktop profile,由桌面端管理)。桌面端不要在终端执行 dsh plugin --profile desktop add ...,该命令会被拒绝;请用插件市场或「添加插件」界面。
Web:在线安装¶
dsh plugin --profile web add dsh-coding-sound
dsh --profile web
dsh --profile web 会打印带 token 的地址;若服务已在运行,安装后需重启服务并硬刷新页面。
Web:离线安装¶
在联网机器打包或从 GitHub Release 下载 .tgz,拷到目标机器后:
# 联网机器
npm pack dsh-coding-sound
# 目标机器:.tgz 绝对路径
dsh plugin --profile web add /absolute/path/dsh-coding-sound-<version>.tgz
# 或者解压后安装目录(根目录须有 package.json)
dsh plugin --profile web add /absolute/path/dsh-coding-sound
dsh --profile web
目标机器无需访问 npm 或 GitHub。
Desktop:在线安装¶
- 打开 DSH Desktop,侧边栏 插件市场 搜索
dsh-coding-sound并安装;或 插件 → 添加插件 → 安装第三方插件,填入包名。 - 设置 → 插件 中启用
dsh-coding-sound。 - 完全退出并重开 DSH Desktop,新的客户端 bundle 才会生效。
Desktop:离线安装¶
- 联网机器执行
npm pack dsh-coding-sound,或从 Release 下载.tgz拷到目标机。 - 插件 → 添加插件 → 安装第三方插件:优先填
.tgz绝对路径;若只接受目录,先解压再填解压路径。 - 在 设置 → 插件 启用后,完全退出并重开桌面端。
启用与验证¶
- 设置 → 插件 确认已启用;Web 端重启
dsh web并刷新,桌面端完整重启。 - 打开 设置 → 声音与提醒,应能看到预设、通知与音量项;点试听确认有声。
- 发一条消息,确认流式输出时有背景音乐,结束时有完成音;若有审批流,确认等待音会响。
没有声音时:检查系统音量与插件内音乐/通知音量是否为 0;Safari 首次播放需先点击页面(浏览器自动播放策略)。
典型用法与行为要点¶
日常使用不需要额外 API:启用插件后,声音随会话状态自动联动。多会话时,后台会话以「其他会话音量」播放较慢的环境脉冲(约 0.7~1.1 s 一拍),切到该会话后改为逐字节拍。窗口在后台时仍发声,回到前台不补放积压音符。
若已与 dsh-typewriter-blip、ui-beep 等声音插件并存,README 说明彼此不共享 DOM、不改写对方 DOM。每个浏览器标签各自发声,未做跨窗口互斥。
默认值摘录(可在设置中改):
| 项 | 默认 |
|---|---|
| 生成式背景音乐 | 数字(digital) |
| 通知音量 | 100% |
| 生成完成 / 等待操作 | 合成音效(synth) |
| 思考 / 回答 / 工具执行 | 均开启;思考 2 字一拍、回答 4 字一拍、工具脉冲 0.9 s |
适用场景与注意¶
适合谁:长时间让 Agent 跑任务、常多会话并行、或习惯靠听觉感知「是否还在输出 / 是否在等我」的 DSH 用户。
生态说明:DSH 采用「一切皆插件」思路;社区插件目录(如 SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系。安装第三方插件前,建议自行查看仓库源码与 MIT 许可证,并理解插件随当前 DSH 进程在浏览器/Electron 环境中运行,权限与宿主一致。
技术注意:全部声音在浏览器内用 Web Audio 合成;不支持 Web Audio 时设置页会提示,其余功能不受影响。AudioContext 被挂起时不排队新音符,恢复后从当前节奏继续,避免恢复瞬间爆音。
结尾¶
dsh-coding-sound 把 Agent 的工作节奏与等待状态映射成可配置的合成音乐与提示音,减少盯屏成本。查阅安装说明与行为细节见 GitHub README;在社区目录可检索插件条目。
- 社区目录:https://www.skillhub.cn/plugins/mhlywxl/dsh-coding-sound
- GitHub:https://github.com/mhlywxl/dsh-coding-sound