dsh-fuse(保险丝):为 DeepSeek Harness 挂上花费熔断

前言

在 DeepSeek Harness(DSH)里跑长会话、反复试错或挂机一整夜,账单往往事后才看清楚。不少插件会把「今天花了多少」算出来并显示在界面上,但通常不会在你越过心理预算时拦住下一发请求。下面介绍的 dsh-fuse(中文名「保险丝」)只做一件事:在快烧穿预算时把闸拉下来——默认顺序是先降档换便宜模型、可选再问你、最后才停止本轮请求,并且每次决策写入审计流水。

这是什么

dsh-fuse 是 maintainer luk-Henry 维护的 DSH 插件,归类上侧重管理与安全(社区目录 admin-security)。它不减少你能做的事,而是在单轮、近一小时、今日三个维度上设置花费或 token 上限;任意一道越线后,拦截的是下一发模型请求,而不是正在流式输出的那一发。

记账只依赖宿主在 assistant/message 里归一化好的 usage,按价目表或 token 闸折算,不读对话内容、不猜 token,且 permissions.network 为空,不联网、不上传数据。

三道闸与越线后的处理顺序

默认三道金额闸如下(可在面板或配置里修改):

闸 默认 作用
单轮 ¥5 同一回合里反复试错、长工具链
近一小时 ¥15 短时间多会话或频繁重试
今日 ¥50 长时间挂机

也可以改用 capsTokens(单位:万 token;0 表示关闭该道),与金额闸优先级相同,谁先超谁先拦。

越线后的默认策略(autoDegrade: true,askOnTrip: false)大致如下:

  1. 若当前线路上有更便宜的可用型号,下一步自动换模型继续跑,会话里会出现 [model changed: …];宿主不允许改已经发出去的那一发。
  2. 未指定降档目标时,插件会从你用过的型号里挑输入、输出都更便宜的;换之前会向宿主查询该线路提供的模型名单,不在名单上的不换(宁可放行),避免下一步直接失败。
  3. 第三方网关若不上报型号清单,则凡在该线路上真实跑过的型号才允许作为降档目标。
  4. 若找不到可换的便宜型号,整轮放行并记账,不把请求挂死。
  5. 若在面板打开「越线先问我一嘴」(askOnTrip: true),才会弹卡:可选降档继续、放行一次或停止本轮(停止时请求不发,输入回到输入框)。

插件刻意不掐正在跑的流式请求;不冒充官方账单,内置价目为参考,中转站可在「高级」里填供应商倍率或覆盖价目,也可完全用 token 闸而不依赖价目表。

界面与流水

安装并重启 DSH 后,右下角会出现药丸 UI,显示今日花费;日花费达到日上限的 warnRatio(默认 60%)时药丸变黄。点药丸可改总开关、三道闸、降档目标、价目表、是否越线询问等;「高级」中有供应商倍率、token 闸与数据目录。

流水默认写在 ~/.dsh/dsh-fuse/(可由 DSH_HOME 与面板路径决定),只增不改:

  • ledger-YYYY-MM-DD.jsonl:逐笔用量与金额
  • audit-YYYY-MM.jsonl:拦截、放行、降档、停止等决策

进程退出后账目仍在;重开 DSH 后今日花费继续累计。

安装与启用

宿主要求 DSH >=0.2.0-rc.2 <0.3.0、Node >=20。插件当前版本 0.1.0,许可证 MIT。从 GitHub 安装时仓库已带好 lib/client.js 构建产物,无需在本机再构建。

方式一:插件市场

在 DSH 中打开 Plugins → 插件市场,搜索「保险丝」或「dsh-fuse」,一键安装,然后重启一次 DSH(插件在启动时载入,重启前看不到药丸)。

方式二:命令行(本机已安装 dsh CLI;桌面端用 --profile desktop,dsh web 用 --profile web)

dsh plugin --profile desktop add github:你的用户名/dsh-fuse

将 你的用户名 换成仓库所有者;官方仓库为 luk-Henry/dsh-fuse 时即 github:luk-Henry/dsh-fuse。装完同样需重启 DSH。

方式三:本地目录(改代码调试时)

在 profile 目录(一般为 ~/.dsh/profiles/desktop)执行:

pnpm add file:D:/你的路径/dsh-fuse

再把 "dsh-fuse" 加入该目录 package.json 的 dsh.profile.bundles,并重启 DSH。

典型用法与自检

无图形界面时可用斜杠命令查看状态与配置:

  • /fuse status:今日、近一小时、本轮花费与上限
  • /fuse config:当前设置
  • /fuse audit:当前挂起的熔断相关记录

装完后建议自检三点:右下角药丸与今日数字;/fuse status 是否与预期一致;面板底部「最近的拦截」(未拦过为空属正常)。

面板内保存立即生效;直接编辑 ~/.dsh/dsh-fuse/config.json 需重启 DSH。常用字段示例如下(节选,完整说明见仓库 README):

{
  "enabled": true,
  "currency": "¥",
  "caps": { "turn": 5, "hour": 15, "day": 50 },
  "capsTokens": { "turn": 0, "hour": 0, "day": 0 },
  "autoDegrade": true,
  "askOnTrip": false,
  "degradeTo": { "provider": "", "model": "" },
  "warnRatio": 0.6,
  "pill": true,
  "providers": {},
  "prices": {}
}

临时只记账不拦截:面板关闭「启用熔断」或设 "enabled": false。只隐藏药丸:"pill": false,弹卡逻辑不变。

卸载:

dsh plugin remove dsh-fuse

配置与流水仍在 ~/.dsh/dsh-fuse/,卸载不会自动删除该目录。

适用场景与注意

适合在 DSH 里长时间用模型、又不想仅靠「看数字」自律的开发者:默认阈值针对「一觉醒来发现一夜花了几十块」这类情况,也可按自己通道改松或改严。

插件以当前 DSH 进程的权限运行,安装前建议浏览 GitHub 仓库 源码与 MIT 许可证,确认行为符合你的环境与合规要求。它不代理流量、不限流其他应用,只作用于 DSH 发出的模型请求。

社区插件目录 SkillHub 上的 dsh-fuse 页 与 GitHub 为独立托管信息源,与 DeepSeek / 幻方无官方从属关系;DSH 生态本身是「一切皆插件」,目录站是社区汇总,不是官方应用商店。

结尾

dsh-fuse 把「看见花费」推进到「越线时先降档、再问人、最后才停」,并用 JSONL 留审计痕迹。需要一键安装可看 SkillHub 目录页;细节、截图与 config.json 全字段说明见 https://github.com/luk-Henry/dsh-fuse。

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

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

小夜