前言¶
DSH 跑完一轮对话是「静悄悄」的:你去干别的,回来才发现它早答完了;这一轮花了多少额度,也只能切到网页里翻。这个插件把两件事拉到你眼皮底下:一轮真正结束时响一声,同时左上角弹一行「本轮扣费 / 余额」,十秒后淡出。
它叫 _turn-sound,是一个 DeepSeek Harness(DSH)插件,维护者 Buir5,分类属于客户端(dsh.client.platform = web)。下面按插件本身来介绍:它做什么、怎么装、怎么用、有哪些坑。
这是什么¶
一句话定位:一个把「回合结束」和「这一轮花的钱」做成提示音与可拖动浮层的 DSH 插件。
插件分为两半:
- 宿主半区跑在 Node 里,负责记账(
ledger)和提供音频; - 客户端半区是右下角一个 38px 的金色铃铛,点开是设置面板。
它解决的具体问题:DSH 答完一轮没有提醒,额度消耗也没有当面反馈,用户要么错过,要么事后去网页查账。这个插件把这两个动作放进当前窗口。
核心功能¶
README 列出的能力如下,均按原文核对:
| 能力 | 说明 |
|---|---|
| 回合结束提示音 | 检测到这一轮真正结束(不是流式中)才响,同一轮只响一次 |
| 扣费浮层 | 左上角显示「本轮扣费 / 余额」,可拖动,10 秒淡出,位置记在浏览器里 |
| 额度账本 | 监听 session/event 的 assistant/message.usage,按模型单价算人民币 |
| 余额校准 | 优先走 deepseekAccount.getBalance(),取不到再回落 API key / 旧快照 |
| 自定义音频 | 面板里选本地 MP3/WAV 上传,或直接用内置提示音 |
需要留意的是:人民币金额是「按 token 单价估算」,和官方账单可能存在分位差异;余额取的是账号接口的真实值。两者口径不完全一致,浮层上把两者并列展示正是为了方便对照。
安装与启用¶
README 没有提供 dsh plugin add ... 之类的命令,而是走 profile 依赖方式,原文如下:
# 1) 放进 DSH 的 profile 依赖
# ~/.dsh/profiles/desktop/package.json 里加:
# "_turn-sound": "file:C:/path/to/_turn-sound"
# 并在 dsh.profile.bundles 里加上 "_turn-sound"(放第一位才会排在最上)
# 2) 让 DSH 认得这个包(关键,缺了它插件不会进应用图)
# 包自带 cordis.patch.yml:
# - insert:
# - id: _turn-sound
# name: _turn-sound
两个步骤各自的作用:第一步把包挂进 profile 依赖并加入 bundles;第二步的 cordis.patch.yml 才是让 DSH 真正加载它的关键,缺了它插件不会进入应用图。装完重启 DSH,右下角出现金色铃铛即生效。
包内自带 cordis.patch.yml,package.json 中也通过 dsh.bundle.patch 指向它,因此不必手工写加载逻辑。
典型用法¶
按 README 的顺序:
- 点铃铛打开面板;
- 勾「启用」、选声音、调音量 / 浮层透明度;
- 「试听」确认音量,「测浮层」看额度样式;
- 「保存」写进
~/.dsh/turn-sound/config.json。
数据目录为 ~/.dsh/turn-sound/,内含 config.json、ledger.json 和上传的音频。
更新检查是插件自身行为:启动时读仓库根目录的 version.json(fetch + no-store)。若远端版本比本地新,铃铛右上角出现红点,面板底部显示 v当前 → v最新 · 去更新,点开是 Release 页;无网络时静默跳过,不影响播放。
适用场景与注意¶
适合:在 Web 客户端里长轮次使用 DSH、希望在离开窗口时也能感知「答完了」、并且想知道每轮大概花了多少钱的开发者。
注意事项如下:
- 插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证(仓库根目录提供
LICENSE,package.json标注 MIT)。 - 只在 Web 客户端挂载,需
dsh.client.platform = web;客户端文件必须包在window.__ModuleLoader__.load({...})里,顶层export会让渲染层报Unexpected token export并导致整个 web boot 判定失败。 - 回合结束判定依赖「流式按钮消失 + 5 秒静默窗口」。如果 DSH 改了按钮的无障碍标签,需要同步修改
busyUI()里的选择器。 - CNY 金额是估算值,余额是真实账号接口值,两者可能因分位而不一致。
版本与许可:README 附带的 package.json 显示版本 0.3.1,协议 MIT,Node 要求 >=18;作者为 知乎老哥。星标与客户端分类以社区目录页为准。
结尾¶
这个插件的价值在于把「回合是否结束」和「这一轮花了多少钱」从 DSH 后台和网页账单里,挪到了当前窗口的提示音与浮层上,成本是多一个常驻的铃铛和一份本地账本。
目录页:https://www.skillhub.cn/plugins/Buir5/_turn-sound
GitHub:https://github.com/Buir5/_turn-sound