用生成式音乐与提示音掌握智能体工作状态
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add mhlywxl/dsh-coding-sound该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
为 DeepSeek Harness 生成背景音乐和通知提示音。
README
由 DeepSeek 最新模型翻译生成dsh-coding-sound
DeepSeek Harness(DSH)声音插件:用声音盯住智能体。模型输出时演奏生成式背景音乐,完成、审批/等待、思考与工具执行各有可配置的提示音——不盯着屏幕,也能凭声音知道它是在思考、还在干活、还是卡在等你。
关键词:DeepSeek Harness 声音插件 · 背景音乐 · 提示音 · 完成提醒 · 审批提醒 · 通知音效 · 声音反馈 · 专注 · 注意力 · 效率 · AI 助手声音提醒 background music · notification sound · completion chime · approval alert · focus · attention · productivity · dsh sound plugin
为什么装它
- 不用一直盯着屏幕:音乐跟着模型正在输出的文字走,停下来那一刻你听得到;思考、回答、工具执行三个阶段的声音可以分别调。
- 减少「AI 在等你」:审批与提问会响一次独立的「等待操作」提示音,切到别的窗口也不会漏掉。
- 保持节奏感:音符由正在输出的文字驱动,快慢就是它的工作节奏——它还在动,你就听得到。
- 不打扰:全部用 Web Audio 在浏览器里合成,包内没有任何音频素材;音乐、通知音量、每个阶段的频率与音高都能单独关闭或调整。
展开完整文档(README 剩余 1 节)
dsh-coding-sound
DeepSeek Harness(DSH)声音插件:用声音盯住智能体。模型输出时演奏生成式背景音乐,完成、审批/等待、思考与工具执行各有可配置的提示音——不盯着屏幕,也能凭声音知道它是在思考、还在干活、还是卡在等你。
关键词:DeepSeek Harness 声音插件 · 背景音乐 · 提示音 · 完成提醒 · 审批提醒 · 通知音效 · 声音反馈 · 专注 · 注意力 · 效率 · AI 助手声音提醒 background music · notification sound · completion chime · approval alert · focus · attention · productivity · dsh sound plugin
为什么装它
- 不用一直盯着屏幕:音乐跟着模型正在输出的文字走,停下来那一刻你听得到;思考、回答、工具执行三个阶段的声音可以分别调。
- 减少「AI 在等你」:审批与提问会响一次独立的「等待操作」提示音,切到别的窗口也不会漏掉。
- 保持节奏感:音符由正在输出的文字驱动,快慢就是它的工作节奏——它还在动,你就听得到。
- 不打扰:全部用 Web Audio 在浏览器里合成,包内没有任何音频素材;音乐、通知音量、每个阶段的频率与音高都能单独关闭或调整。
Generative background music and notification chimes for DeepSeek Harness: hear whether the agent is thinking, still working, or waiting for you, without watching the screen. Every sound is synthesized in the browser with Web Audio — the package ships no audio assets.
设置页新增一页「声音与提醒」,卡片与参考桌面版的声音设置同构:
🔊 声音与提醒 [已自定义] ⌃ 背景音乐与完成/等待提示音 ─────────────────────────────────────────────────────────
生成式背景音乐 [数字 ⌄] ▶
通知音量 ────────────● 100%
生成完成 [合成音效 ⌄] ▶
等待操作 [合成音效 ⌄] ▶
当前会话音量 ────────────● 100% 其他会话音量 ──────────●── 80%
🔊 阶段声音思考 / 回答 / 工具执行,可分别关闭、调频率与音高 ─────────────────────────────────────────────────────────
思考 [●] [2 字/拍 ⌄] [标准 ⌄] ▶
回答正文 [●] [4 字/拍 ⌄] [标准 ⌄] ▶
工具执行 [●] [0.9 秒 ⌄] [标准 ⌄] ▶
左侧设置导航的「声音与提醒」使用扬声器图标:宿主对未知 section id 只提供齿轮兜底,插件在 section 的 label 里带自己的图标,并用一条只命中本行的样式隐藏兜底齿轮(宿主若改结构,最坏退回齿轮 + 扬声器两个图标,不影响功能)。
行为
| 场景 | 行为 |
| 某个会话开始输出 | 该会话的音乐淡入(0.25 s);按当前阶段的密度取拍(回答默认每 4 字、思考默认每 2 字),且两拍间隔 = max(100 ms, 60 + 30 × 密度) ms——密度同时决定「几字一拍」和最快出音速度,所以试听听得到的快慢就是实际运行的速度,C 大调五声音阶随机取音,15% 概率低八度,±5% 随机 detune |
| 输出中 | 节拍跟随真实字符增量,不是固定循环;整段挂载/重渲染/换会话不会被误当打字 |
| 思考(reasoning) | 有:思考段和回答正文一样逐 token 出音符;可在「阶段声音 → 思考」里改密度(1/2/3/4/6/8 字一拍)、音高(低/标准/高)或关闭 |
| 工具执行 | 有:工具行本身不出音符;当前会话空闲约 1.2 s 后进入「工作脉冲」,频率可选 0.1 / 0.15 / 0.2 / 0.3 / 0.4 / 0.6 / 0.9 / 1.2 / 1.6 / 2.0 s 一拍(最快与思考密度 1 的 100 ms 相同),音高可选低/标准/高,或关闭。相邻两拍的间隔在设定值上下随机浮动(三角分布,约 ±35%;另有约 15% 概率拉长到 1.6–2.4 倍),听感更像打字机而不是节拍器;行内「随机」开关可以关闭浮动、回到固定节拍。音量与文字拍一致。等待审批时暂停并响「等待操作」 |
| 某个会话进入等待操作 | 只停这个会话的音乐(0.25 s 淡出),并响「等待操作」;其他会话照常 |
| 一轮结束 | 当前会话 320 ms 防抖后响「生成完成」;子代理会话不响 |
| 切会话 | 当前会话按「当前会话音量」、其他会话按「其他会话音量」,0.25 s 交叉过渡 |
| 其他会话在后台工作 | 以「其他会话音量」播放缓慢的环境脉冲(约 0.7–1.1 s 一拍);切到该会话后改为逐字节拍 |
| 窗口在后台 | 继续发声;回到前台恢复,不补放积压音符 |
- 阶段声音独立于主卡片:思考、回答、工具执行各有一个开关,关闭某一阶段后该阶段不出声;被关闭阶段里的文字仍然算作“有活动”,不会让工作脉冲趁机补进来。
- 每行都有试听:思考/回答的 ▶ 用当前密度与音高播一小段上行音,音与音的间隔就是实际运行时该密度的出音间隔;工具执行的 ▶ 按当前脉冲频率与音高播 2–3 下,开启「随机」时使用同样的随机间隔。试听和实际运行一样,都是满音量(与文字拍相同)。即使背景音乐预设是「关闭」,试听也使用默认预设发声。
- 工作脉冲只补“没有文字的空窗”:一旦有字符到达就回到逐字节拍,且脉冲不会和文字拍叠加。
- 音乐与通知音完全隔离:「通知音量」只作用于两个提示音,音乐音量由预设自身的主增益 × 会话音量决定。
- 去重:「等待操作」按 turn + prompt 身份去重(上限 512),断线重连/重放不会重复响;打开页面时已经存在的等待状态不会补响。
- 音频挂起时不排队:页面/系统把 AudioContext 挂起时不再排新音符,恢复后从当前节奏继续。否则挂起期间的所有音符会共用同一个时间戳,恢复瞬间同时发声——听感上就是一声爆音或「沙沙/嗡嗡」的杂音。
- 多窗口:每个浏览器标签各自发声(未做跨窗口互斥)。
默认值
| 项 | 默认 |
| 生成式背景音乐 | 数字(digital) |
| 通知音量 | 100% |
| 生成完成 | 合成音效(synth) |
| 等待操作 | 合成音效(synth) |
| 当前会话音量 | 100% |
| 其他会话音量 | 80% |
| 思考声音 | 开,每 2 字一拍,音高「标准」 |
| 回答声音 | 开,每 4 字一拍,音高「标准」 |
| 工具执行 | 开,脉冲频率 0.9 s(十档:0.1 / 0.15 / 0.2 / 0.3 / 0.4 / 0.6 / 0.9 / 1.2 / 1.6 / 2.0 s),间隔随机浮动(可关闭),音高「标准」 |
| 卡片展开状态 | 展开(持久化) |
设置按浏览器保存(localStorage),刷新页面、重启 DSH 后仍在;换一个浏览器是另一套设置。
读取所有值时都会夹紧、校验,存储损坏或被手改也不会让页面报错。
音乐预设
| 预设 | 波形 | attack | decay | sustain | release | 低通 | 混响 decay | wet | 主增益 |
| 空灵 | sine | .1 | .4 | .4 | .8 | 3000 | .8 | .35 | .07 |
| 经典 | triangle | .01 | .2 | .2 | .3 | 2000 | .3 | .2 | .08 |
| 数字 | square | .005 | .1 | .1 | .1 | 5000 | .05 | .05 | .06 |
| 复古 | sawtooth | .02 | .3 | .3 | .4 | 1500 | .35 | .25 | .08 |
信号链:每会话 gain → 共享低通(Q=1) → 主增益 → 输出,低通同时旁路 卷积混响 → wet → 主增益。
一个页面只有一个 AudioContext(浏览器同时只允许少量),切换预设时就地重建链路,并重新挂接所有会话声部。
通知音效
6 个选项:关闭 / 合成音效 / 正面通知 / 正确提示 / 界面启动 / 界面返回。全部由 Web Audio 实时合成,包内不含任何第三方音频素材。
每个音是正弦主音 + 4 倍频 shimmer(12% 电平,衰减到 0.6× 时长):
| 选项 | 音型 |
| 合成音效 | 完成:1318.5 → 1568 → 2093 Hz;等待:1760 → 1318.5 Hz |
| 正面通知 | 上行二音 1318.5 → 1760 Hz |
| 正确提示 | 确认二音 1046.5 → 1568 Hz |
| 界面启动 | 上行琶音 523.25 → 659.25 → 783.99 → 1046.5 Hz |
| 界面返回 | 下行二音 783.99 → 523.25 Hz |
- 最终增益 = 通知音量 / 100 × 选项电平;四个命名选项沿用原素材的响度比例(正面 .62 / 正确 .85 / 启动 1 / 返回 .70),切换时不会忽大忽小。
- 「合成音效」按场景区分完成/等待两种音型;四个命名选项对两个场景使用同一段音型(与原素材行为一致)。
- 音量为 0 时两个提示音都不播;浏览器不支持 Web Audio 时设置页给出提示,页面其余功能不受影响。
安装与开发
发布后(npm 上有版本时):
dsh plugin --profile desktop add dsh-coding-sound
本地开发:用 Harness 的插件安装动作装入 desktop profile(推荐;Plugin Manager 的“安装 bundle”)目标填这个目录的绝对路径:D:\dev\harness\dsh-coding-sound 也可以从命令行以 link: 安装:
dsh plugin --profile desktop add link:D:\dev\harness\dsh-coding-sound
构建浏览器包(src/.js → client.js)
node build.mjs # 或 npm run build
node build.mjs --check # 仅检查产物是否最新
node test.mjs # 38 项离线测试,含把生成后的 client.js 在假运行时里跑一遍
Host 半改动(index.js)需要重启 DSH 才能生效;只改 src/ 时重新 node build.mjs 并刷新页面(Client 产物按启动时的模块图加载,刷新才会取到新文件)。
离线安装 / 另一台电脑 / macOS
插件没有原生依赖、没有安装脚本,client.js 已预构建;Host 半只是一个空的 Loader 行,全部功能都在浏览器里(Web Audio + React)。因此:
- macOS 可用:代码里没有 Windows 专属路径或原生模块,DSH 的 Web/Electron 页面在 macOS 上跑的是同一套 JS。未在 macOS 实机验证过,但不存在平台相关分支。
- 运行时不需要网络:没有远程素材、没有 fetch、没有第三方依赖。
- 离线安装步骤(目标机不需要联网):
1. 在源机打包(npm pack 不需要联网,只打包发布文件):
cd D:\dev\harness\dsh-coding-sound
npm pack
得到 dsh-coding-sound-0.1.0.tgz
也可以直接拷贝整个目录(排除 .git/ 和 node_modules/)。
2. 把 tgz(或目录)拷到目标机,例如 /Users/you/Downloads/dsh-coding-sound-0.1.0.tgz。
3. 在目标机安装(dsh 不在 PATH 时,用 DSH app 内自带的 runtime/cli/bin/dsh):
dsh plugin --profile desktop add /Users/you/Downloads/dsh-coding-sound-0.1.0.tgz
目录方式:dsh plugin --profile desktop add link:/Users/you/dsh-coding-sound
目标机完全离线、pnpm 仍尝试访问 registry 时,在命令末尾加 --offline。
4. 启用 bundle:dsh plugin add 只把包装进 profile,不会自动加载。到 设置 → 插件 里启用 dsh-coding-sound(等价于把 "dsh-coding-sound" 加进 ~/.dsh/profiles/desktop/package.json 的 dsh.profile.bundles 数组)。
5. 完全退出并重启 DSH,打开 设置 → 声音与提醒。
也可以在目标机的 Plugin Manager 里直接安装这个目录或 tgz——它会同时完成第 3、4 步。
- 设置保存在浏览器 localStorage(键 dsh:coding-sound:v1),新电脑从默认值开始:数字 / 合成音效 / 100% / 当前 100% / 其他 80%。不需要迁移配置文件。
- 如果目标机用 Safari 打开 Web GUI,首次需要点一下页面(用户手势)才能出声,这是浏览器自动播放策略,插件已经处理恢复。
发布
发布到 GitHub、npm 与社区插件市场(Awesome DSH Plugin)的完整步骤见 PUBLISH.md。
结构
dsh-coding-sound/
├─ package.json # dsh.bundle.patch + dsh.client{platform:web}
├─ cordis.patch.yml # 插入 id: coding-sound 一行 ├─ index.js # Host:只占一个 Loader 行,无路由 ├─ client.js # 构建产物(不要手改) ├─ src/ │ ├─ presets.js # 4 组预设参数、音阶、节流常量 │ ├─ settings.js # 解析/归一化/localStorage/徽章/去重/音量与选项电平 │ ├─ engine.js # AudioBus + 多会话音乐引擎(共享链、混响脉冲缓存) │ ├─ chimes.js # 6 个通知音效的合成实现 │ ├─ observer.js # DOM 观察 → 字符增量(挂载/重渲染/换会话防护) │ ├─ sessions.js # sessionStatus 边沿纯函数 + 每会话声音生命周期 │ └─ client.js # 槽位注册 + 设置卡片 + 运行时装配 ├─ locale/{zh,en}.json # 插件标题/描述 ├─ icon.svg ├─ build.mjs # src/.js → client.js 的拼装脚本 ├─ test.mjs # 离线测试台(node:test) ├─ LICENSE # MIT └─ PUBLISH.md # 发布到 GitHub / npm / 插件市场的步骤
验收状态
| # | 验收项 | 状态 |
| A1 | 开始输出 → 音乐;结束/中断 → 0.3 s 内淡出 | 已实现(离线边沿测试);听感需人工 |
| A2 | 音乐密度跟随输出速度(每 N 字一拍,间隔 = max(100, 60 + 30 N) ms) | 已实现;密度与节奏有单测 |
| A3 | 5 档预设与参考版同参 | 参数逐字段单测;听感需人工 |
| A4 | 完成音 / 等待音分开、可替换 | 已实现;边沿与去重有单测 |
| A5 | 6 个选项、可试听、可替换 | 已实现(全部合成,无素材依赖);试听需人工 |
| A6 | 通知音量只影响提示音 | 已实现(两条独立 gain 路径) |
| A7 | 当前/其他会话音量两档、切会话过渡 | 已实现;音量映射有单测 |
| A8 | 等待操作只停该会话 | 已实现;边沿测试覆盖 |
| A9 | 卡片与参考版同构 | 已实现(6 行、三态徽章、折叠);并排截图需人工 |
| A10 | 后台出声 | 依赖 Web Audio 音频时钟;需人工 |
| A11 | 刷新/重启后设置仍在 | localStorage;需人工 |
| A12 | 子代理/工具不触发完成音;重连不重复 | 子代理与去重有单测;重连需人工 |
| A13 | 4 个素材与参考同源 | 已按 D4 替换为合成实现,包内不再携带 WAV |
| A14 | 与 typewriter-blip / ui-beep 并存 | 不共享 DOM/节点,设计上可并存;冲突提示未做 |
| A15 | 离线测试 + 无类型错误 | node test.mjs 38/38;无 TS 构建 |
| A16 | 各种全关组合静音且不报错 | 徽章/静音映射有单测;需人工听 |
与参考实现的差异 / 已知限制
1. 设置保存在浏览器而不是 Host Config。参考设计里的 Config(全 .volatile())没有落地:本地以目录形式链接安装的包无法解析 Host 侧 @deepseek-ai/schemastery 依赖,而浏览器本地的设置本来就是权威层。SettingsStore 已支持 Host 默认值作为基线(setHostDefaults),以后加回 Config 只需把它接进 configForms。
2. 非当前会话是环境脉冲。浏览器只能看到当前会话的 DOM,拿不到其他会话的逐 token 信号,所以后台会话以约 0.7–1.1 s 一拍的脉冲保持「仍在工作」的听感;切到该会话后立刻恢复逐字节拍。
3. 工具执行不是逐工具音符。参考实现从 tool_dispatch 事件给每个工具一个音;这里没有该事件,改用“当前会话空闲 1.2 s 后的工作脉冲”来覆盖工具执行和长思考,频率(0.1–2.0 s 十档,最快与最密文字拍相同)与音高可在「阶段声音 → 工具执行」里调,或关闭;每两个脉冲之间的间隔会随机浮动(约 ±35%,另有一成多的概率变成较长停顿),模仿打字机的节奏。音量与文字拍一致。
4. 未做插件冲突提示(检测 typewriter-blip / ui-beep 并建议禁用)。本插件与它们共用页面里各自独立的 AudioContext,不共享节点、不互相改写 DOM,所以可以并存;提示文案留待后续。
5. 未做「恢复默认」按钮,与参考版保持一致。
6. 插件卸载时,音乐引擎停止发声并关闭 AudioContext;声音只在用户手势之后启动(浏览器自动播放策略)。
7. 原 WAV 已按决策 D4 换成合成实现:4 个命名选项改为同风格的合成音型,assets/ 与 Host 音频路由已删除,npm 包不再携带第三方音频素材。
8. 设置导航图标是插件侧的变通做法:宿主的 settings.section 只按 section id 映射导航图标(未知 id 用齿轮),没有插件图标入口。这里把扬声器图标放进 label,再用 button:has(> span [data-coding-sound-nav]) > svg 隐藏兜底齿轮;宿主若改导航结构,最坏退回「齿轮 + 扬声器」两个图标,功能不受影响。
素材与许可
插件不包含任何第三方音频素材:6 个通知音效全部由 Web Audio 实时合成。源代码以 MIT 许可发布,见 LICENSE。
音乐参数(音阶、包络、预设表、合成音频率、节流)逐字段取自参考桌面版 main-v2 分支的 generative-music.ts / sound.ts,以保证听感一致。
同作者的其他插件
- DSH 分屏工作区(dsh-split-workspace,开发中,尚未发布)— 把 DSH 会话区拆成最多四个原生窗格,每个窗格都是独立会话,拥有自己的输入框、流式输出、审批与视图页。
支持作者
如果这个项目帮你省下了盯屏幕的时间,欢迎请作者喝杯咖啡 ☕,或者给作者「充充电」⚡。金额随意,心意最重要。
支付宝 · 微信支付预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
mhlywxl/dsh-coding-sound
用生成式音乐与提示音掌握智能体工作状态
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,362已汉化DSH
71.4
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,076已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,814已汉化DSH
71.1
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。