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