dsh-coding-sound:用声音盯住 DeepSeek Harness 里的 Agent

前言

在 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:在线安装

  1. 打开 DSH Desktop,侧边栏 插件市场 搜索 dsh-coding-sound 并安装;或 插件 → 添加插件 → 安装第三方插件,填入包名。
  2. 设置 → 插件 中启用 dsh-coding-sound。
  3. 完全退出并重开 DSH Desktop,新的客户端 bundle 才会生效。

Desktop:离线安装

  1. 联网机器执行 npm pack dsh-coding-sound,或从 Release 下载 .tgz 拷到目标机。
  2. 插件 → 添加插件 → 安装第三方插件:优先填 .tgz 绝对路径;若只接受目录,先解压再填解压路径。
  3. 在 设置 → 插件 启用后,完全退出并重开桌面端。

启用与验证

  1. 设置 → 插件 确认已启用;Web 端重启 dsh web 并刷新,桌面端完整重启。
  2. 打开 设置 → 声音与提醒,应能看到预设、通知与音量项;点试听确认有声。
  3. 发一条消息,确认流式输出时有背景音乐,结束时有完成音;若有审批流,确认等待音会响。

没有声音时:检查系统音量与插件内音乐/通知音量是否为 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye