_turn-sound:回合结束提示音 + 额度浮层

前言

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 的顺序:

  1. 点铃铛打开面板;
  2. 勾「启用」、选声音、调音量 / 浮层透明度;
  3. 「试听」确认音量,「测浮层」看额度样式;
  4. 「保存」写进 ~/.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

羽毛球分组比赛记分
小程序二维码

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

小夜