为对话完成、出错等五种场景分别播放提示音
32.4/100
综合分
5
GitHub 星标
193
npm 周下载
—/5
用户评分
数据截至 2026/9/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-done-soundnpm 源 · dsh-done-sound 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 49 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-done-sound @ 0.1.15
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/21 14:33:31
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 15 处,展示前 15 条)
- 读取本地文件lib/index.js:804
const pkg = JSON.parse(readFileSync(pkgPath, "utf8")); - 写入本地文件lib/index.js:826
mkdirSync(dirname(file), { recursive: true }); - 写入本地文件lib/index.js:827
appendFileSync(file, `[${stamp}] [${level}] ${message} - 删除本地文件lib/index.js:952
await unlink(audioPath(fileId)); - 写入本地文件lib/index.js:972
await mkdir(dataDir, { recursive: true }); - 写入本地文件lib/index.js:973
await writeFile(audioPath(fileId), buffer); - 删除本地文件lib/index.js:982
await unlink(audioPath(previous)); - 读取本地文件lib/index.js:1082
const buffer = await readFile(DEFAULT_AUDIO_PATHS[scene]); - 读取本地文件lib/index.js:1107
const buffer = await readFile(audioPath(fileId)); - 读取本地文件lib/index.js:1173
const buffer = await readFile(datedLogPath()); - 发起网络请求lib/client.js:319
fetch('/dsh-done-sound/api/log', { - 发起网络请求lib/client.js:589
res = await fetch( - 发起网络请求lib/client.js:709
fetch('/dsh-done-sound/api/log/export') - 请求外部主机registry.npmjs.orglib/client.js:798
fetch('https://registry.npmjs.org/dsh-done-sound/latest') - 发起网络请求lib/client.js:798
fetch('https://registry.npmjs.org/dsh-done-sound/latest')
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
涉及外部主机:registry.npmjs.org
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-commands@deepseek-ai/dsh-settings@deepseek-ai/dsh-host-webserver@deepseek-ai/schemastery@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-cordis-client-runner给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 五种场景提示音
- 出错提示音
最近更新
在 GitHub 查看全部 →v0.1.152026-09-15
· 修复「倒计时结束不发送继续」
根据日志定位到真正根因:DSH 0.1.5-rc.2 把发送会话消息的入口改了。
· 根因
· 插件原来用 connection.api.sessions.prompt(...) 发送「继续」
· rc.2 里这个接口已不存在,正确的发送入口变成 ctx.sessions 服务(sessions.binding(sessionId).session.prompt(...))
· 由于拿到的是 undefined,每次倒计时到点进入发送时都以 prompt-api-unavailable 立即取消循环 → 表现就是「倒计时结束不发送」
· 修复
· 改用 rc.2 正确的 ctx.sessions 发送「继续」,保留旧接口作为兼容回退(新旧 DSH 都能用)
· 插件声明加入 sessions 服务依赖
· 简化重试循环:每个重试窗口到点即发送,不再因「看起来在流式输出」而跳过(模型断开时 host 会卡在 running=true,等待它只会让倒计时空转)
· 现在的行为
| 触发 | 行为 |
|---|---|
| 模型报错 / 断开 | 每个重试窗口持续发送「继续」(#1 → #2 → #3…) |
| 重试轮以 aborted/blocked/error/max-tokens 结束 | 继续重试 |
| 重试轮以 completed 结束 | 停止(会话已恢复) |
| 会话等待人工确认 / 切换会话 / 关闭开关 | 停止 |
| 手动点「终止重试」 | 停止,倒计时与按钮隐藏 |
· 升级
dsh plugin --profile web add dsh-done-sound
升级后重启 dsh web,浏览器按 Ctrl + Shift + R 强制刷新。
v0.1.142026-09-15
· 修复「重试仍然只有一次」
0.1.13 已把自动重连改成持续重试,但真实断线场景下仍可能只重试一次。根因:
· 模型断开时,重试的那一轮常以 aborted(连接中断中止)结束
· 旧逻辑把 aborted / blocked 也当成「会话已恢复」→ 停止循环 → 只重试一次
· 本次修复
· 只有 completed 才算恢复:aborted / blocked / error / max-tokens 都会继续重试
· 拖死看门狗:若某次「继续」把会话带入流式状态却迟迟没有新轮次结束(模型已断、卡在 running),超时后强制再发一次,不再无限静默等待
· 诊断日志:重试循环的每个动作都会写入插件日志(retry: 前缀),便于确认停止原因
· 行为总结
| 触发 | 行为 |
|---|---|
| 模型报错 / 断开 | 每隔设定时间持续发送「继续」 |
| 重试轮以 aborted/error/blocked/max-tokens 结束 | 继续重试 |
| 重试轮以 completed 结束 | 停止(会话已恢复) |
| 会话等待人工确认 | 停止 |
| 手动点「终止重试」 | 停止,倒计时与按钮隐藏 |
| 会话切换 / 关闭开关 | 停止 |
· 升级
dsh plugin --profile web add dsh-done-sound
升级后重启 dsh web(确保加载新客户端包),浏览器按 Ctrl + Shift + R 强制刷新。
v0.1.132026-09-14
· 出错自动重连改为「持续重试」
之前发送一次「继续」后重连就结束了,模型断开时只会重试一轮。现在改成一直重试,直到会话恢复或你手动终止。
· 现在的行为
· 持续重试:每隔设定时间(默认 60 秒,可设 10-300 秒)再发一次「继续」,不再只试一次
· 手动终止:主界面倒计时后面有「终止重试」按钮,点一下立即停止,倒计时和按钮一起隐藏
· 不打断生成:如果某次「继续」把模型救活了(检测到重新开始输出),本轮不会重复发送;等这一轮结束后再判断——正常结束就停止重试,再次报错就继续重试
· 自动停止条件:会话恢复正常、出现等待确认、切换会话,或关闭插件/重连开关
· 进度可见:主界面 chip 显示 自动重连 #3 45s(第几次 + 下次倒计时),设置卡片同步显示
· 自动化测试
新增 test/retry.test.mjs,用 React 桩加载真实客户端包并驱动重试循环,覆盖 17 项断言:
· 发送后循环仍然存活(就是这次修的 bug)
· 模型一直不恢复时持续发送
· 流式生成期间不刷屏
· 会话恢复 / 等待确认 / 切换会话 / 手动终止各自正确停止
· 重复报错时继续重试
· 升级
dsh plugin --profile web add dsh-done-sound
升级后重启 dsh web,浏览器按 Ctrl + Shift + R 强制刷新。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-done-sound
DeepSeek Harness Web GUI 的对话音效插件。不同触发情况可以分别设置音频提醒,并为每种情况提供内置默认音效。
功能
- 五种场景独立配置:正常完成、中断、出错、等待确认、自动重连成功各自使用独立音频,可分别选择、试听和清除。
- 内置默认音效:即使没有上传任何文件,也会使用对应场景的默认音效:
- 正常完成:turn-done.wav
- 中断:turn-interrupt.wav
- 出错:turn-error.wav
- 等待确认:turn-pending.wav
- 自动重连成功:turn-retry.wav
- 音频格式:支持 mp3、wav、ogg、webm、m4a、aac、flac,单个文件最大 10MB。
- 完成检测:根据宿主 turn/end 事件的 reason 判断正常完成、中断、出错和超长截断,避免误触发;每轮只播放一次。
- 触发开关:
- 中断时也响:手动停止生成时是否播放,默认关闭。
- 出错时也响:对话以错误结束或超长截断时是否播放,默认开启。
- 等待确认提醒:Agent 等待批准、提问或其他人工确认时是否播放,默认开启。
- 重连成功也响:自动发送「继续」成功后是否播放专属音效,默认开启。
- 出错自动重连:出错后是否自动发送「继续」重试,默认开启。
展开完整文档(README 剩余 1 节)
dsh-done-sound DeepSeek Harness Web GUI 的对话音效插件。不同触发情况可以分别设置音频提醒,并为每种情况提供内置默认音效。 功能 - 五种场景独立配置:正常完成、中断、出错、等待确认、自动重连成功各自使用独立音频,可分别选择、试听和清除。 - 内置默认音效:即使没有上传任何文件,也会使用对应场景的默认音效: - 正常完成:turn-done.wav - 中断:turn-interrupt.wav - 出错:turn-error.wav - 等待确认:turn-pending.wav - 自动重连成功:turn-retry.wav - 音频格式:支持 mp3、wav、ogg、webm、m4a、aac、flac,单个文件最大 10MB。 - 完成检测:根据宿主 turn/end 事件的 reason 判断正常完成、中断、出错和超长截断,避免误触发;每轮只播放一次。 - 触发开关: - 中断时也响:手动停止生成时是否播放,默认关闭。 - 出错时也响:对话以错误结束或超长截断时是否播放,默认开启。 - 等待确认提醒:Agent 等待批准、提问或其他人工确认时是否播放,默认开启。 - 重连成功也响:自动发送「继续」成功后是否播放专属音效,默认开启。 - 出错自动重连:出错后是否自动发送「继续」重试,默认开启。 - 自动重连等待时间:可设置 10-300 秒,按 5 秒步进;等待期间显示倒计时,若会话自行恢复则自动取消。 - 全局音量:统一调节五种场景的播放音量。 - 版本检查:设置卡片显示当前版本和更新状态。 - 日志与导出:Host 和 Client 诊断日志保存到 profile 目录,可从设置卡片导出当天日志。 安装 dsh plugin --profile web add dsh-done-sound 本地开发: dsh plugin --profile web add link:F:\0.AI-CodeProject\DSHProject\0.日常聊天\dsh-done-sound 安装后重启 dsh web,打开设置页即可看到「对话完成音效」卡片。 升级已有安装后,请重启 dsh web 使 Host 端更新生效。旧版本中保存的单个自定义音频会自动作为「正常完成」音保留,不会丢失。 配置位置 设置 → 对话完成音效中会显示五行独立音频配置。每行都可以选择文件、试听或清除当前自定义音频;清除后会恢复该场景的内置默认音效。 自定义音频文件保存在 profile 目录的 .dsh-done-sound/ 中,配置保存在 DSH 设置中。Host 音频路由为: /dsh-done-sound/audio/ 架构 - Host 半区(src/index.js → 构建产物 lib/index.js):dsh-done-sound 设置作用域(ctx.settings)、五场景音频文件存储、webServer 路由与同源 JSON API(/dsh-done-sound/api/status|config|audio|clear)、dsh-done-sound 命令。路由经 ctx.inject(['webServer'], cb) 延迟挂载;构建时由 esbuild 内联 @deepseek-ai/schemastery,产物自包含(link 安装时无需依赖 profile 的模块解析)。 - Client 半区(lib/client.js):settings.section 设置卡片,以 fetch 调用 HTTP API;conversation.session.header.utilities 完成检测器订阅会话状态,按场景选择音效并处理等待确认与自动重连倒计时。 开发 pnpm install # 安装 esbuild pnpm run build # 打包 src/index.js -> lib/index.js(自带) pnpm run check # 语法检查两个产物 npm test # Host API 与完成检测测试 修改 Host 源码后重新 pnpm run build;Client 半区直接改 lib/client.js(__ModuleLoader__ 格式即运行时契约,无需打包)。 音效库下载 内置提示音不够用?社区精选音色库(百度网盘,永久有效): - 链接:https://pan.baidu.com/s/1xnef4xkCy8pkooXMGi2ApQ?pwd=1234 - 提取码:1234 下载解压后,在 设置 → 对话完成音效 → 对应场景 → 选择音频 中选用即可。 License MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
sxl19951101/dsh-done-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,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目