前言¶
如果你在 DSH 里同时接了多家 LLM 提供商——比如 DeepSeek 官方、OpenRouter、SiliconFlow——查余额就是一件琐事:要么逐个登录各家控制台,要么自己 curl 各家的余额端点。余额什么时候耗尽,往往要等到一次调用报错才知道。
dsh-llm-balance 把这件事搬进聊天界面:在聊天输入框下方直接显示已配置提供商的 API 余额,点击余额即可打开对应的充值页。下面介绍这个插件的功能、安装和配置方式。
这是什么¶
dsh-llm-balance 是一个 DSH 插件,由 JonyChan8394 维护,采用 MIT 许可证,当前版本 0.5.0。DSH 的理念是「一切皆插件」,这个插件解决的就是一个具体问题:让余额出现在你本来就在看的地方——输入框下面。
它不是聚合面板,显示的正是你在 dsh 中注册的提供商路由:在 dsh 里新增一个提供商,下一次刷新它就出现在余额条里;移除后随之消失,无需重启、无需改插件配置。
核心功能¶
- 输入框下方的紧凑读数:余额显示在 composer 底部带(输入卡片下方、统计行所在的位置),默认每 60 秒自动刷新,并提供手动刷新链接。
- 点击即充值:点击任一提供商的余额(或「未开放查询API」标签),会在新浏览器标签页打开该提供商的充值页;每个预设自带 rechargeUrl。
- 跟随 dsh 配置:余额条显示的就是 dsh 中注册的提供商路由,新增或移除提供商无需重启或修改配置。
- 内置已知余额端点:DeepSeek(deepseek、deepseek-official)、OpenRouter、SiliconFlow、Moonshot/Kimi(moonshotai-cn、moonshotai)、MiniMax、StepFun、Zhipu/GLM(zhipu)。
- 无公开余额 API 的提供商(如 Qwen/DashScope、OpenAI、Anthropic)配置了 key 时,显示「未开放查询API / no balance API」,而不是直接隐藏。
- 密钥不出宿主:API 密钥在宿主侧从 DSH credentials(或环境变量)解析,浏览器只会看到抓取到的余额。
实现方式¶
插件分宿主和浏览器两部分。宿主侧(lib/index.js)在每次请求时读取 ctx.llm.listProviders()——也就是 dsh 中配置的那组 LLM 路由;对每个有已知余额端点的提供商,它通过 ctx.credentials 解析密钥并调用余额端点,结果以 GET /llm-balance 的 JSON 形式通过 webserver 路由注册表提供。浏览器侧(lib/client.js)注册一个 conversation.composer.dock 条目(order 10),轮询 /llm-balance 并把读数渲染到输入卡片下方。
依赖方面,插件声明了三个 peerDependencies:@deepseek-ai/cordis ^4.0.1、@deepseek-ai/schemastery ^4.0.1、@deepseek-ai/dsh-credentials ^0.1.0-rc.6;client 端由 @deepseek-ai/dsh-client-runtime 与 @deepseek-ai/dsh-client-locale 注入(见 package.json 的 dsh.client 配置)。
安装与启用¶
先执行安装命令,再重启 dsh web 即可:
dsh plugin --profile web add github:JonyChan8394/dsh-llm-balance
重启后,只要至少一个已配置的提供商有 key,输入框下方就会出现余额读数。除此之外无需任何配置——插件跟随你在 dsh 中已经设置好的提供商。
两种边界状态(来自 README):
- 未配置 key 的提供商不会出现在余额条中;
- 余额请求失败的提供商显示「获取失败 / fetch failed」。
自定义余额端点¶
经过上面的安装步骤,插件已经可以工作。如果列表外的提供商也有自己的余额端点(例如自建的聚合路由),可以在 profile 的 cordis.patch.yml 中覆盖插件配置:
- id: llm-balance
config:
refreshMs: 30000
endpoints:
- id: myprovider
name: MyProvider
apiKeyEnv: MYPROVIDER_API_KEY
url: https://api.example.com/v1/balance
balancePath: data.remaining
currencyPath: data.currency
rechargeUrl: https://console.example.com/recharge
各字段含义:
refreshMs:刷新间隔(毫秒),示例中的 30000 即每 30 秒刷新一次;id/name:提供商标识与显示名;apiKeyEnv:宿主侧解析密钥所用的环境变量名;url:余额端点地址;balancePath/currencyPath:从响应中取余额和币种的路径;rechargeUrl:点击余额时打开的充值页。
适用场景与注意事项¶
适合的场景:在 dsh 中同时使用多家有余额端点的提供商,希望不离开聊天界面就能掌握余额,避免任务中途因欠费中断。
使用前有两点要注意:
1、插件以当前 dsh 进程的权限运行,宿主侧会读取你的 DSH credentials 并以你的 key 调用各家的余额端点。安装前请先检查源码与许可证。
2、内置端点只覆盖 README 列出的那些路由;其余提供商(包括 OpenAI、Anthropic 这类没有公开余额 API 的)只能显示「未开放查询API」,点击后会跳转其充值页。
小结¶
dsh-llm-balance 做的事情不大,但位置选得准:把「查余额」从另开控制台变成低头看一眼输入框下方,且完全跟随你已有的 dsh 配置,装完即用。
- 社区目录页:https://www.skillhub.cn/plugins/JonyChan8394/dsh-llm-balance (社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系)
- GitHub 仓库:https://github.com/JonyChan8394/dsh-llm-balance