dsh-balance:在 DSH 里查询并展示 DeepSeek 账户余额

前言

做智能体开发时,DeepSeek 账户余额是个绕不开的问题:余额耗尽,调用直接失败。常见的做法是离开当前工作环境,去平台后台看一眼,或者自己手动调一次 API。dsh-balance 把这件事做成了 DSH 插件:注册一个可被代理调用的工具,同时在 Web UI 的会话输入区常驻显示余额,查询不再打断工作流。

下面介绍这个插件的定位、功能、安装配置和注意事项。

这是什么

dsh-balance 由 qiuyongjin 维护,当前版本 0.2.0,采用 MIT 许可证。它调用 DeepSeek 的 /user/balance API 查询账户余额,同时覆盖工具和界面两侧:headless 环境下作为工具供代理调用,Web 环境下在会话输入区常驻显示。

实现上是 TypeScript 双面开发(node half + client half),运行期零依赖——@deepseek-ai/* 依赖在构建时内联,唯一的 peerDependencies 是 react ^18.2.0

核心功能

dsh_balance 工具

节点侧注册名为 dsh_balance 的工具,调用 DeepSeek GET /user/balance,返回账户可用状态与各币种余额明细——每个币种下分总余额、赠送余额、充值余额三项。headless 和 web 两种组合下都可用。

Web UI 余额入口

Web 环境下,插件填充官方 conversation.input.right slot:一个按钮常驻在会话输入区,直接显示当前总余额;点击展开明细卡片,内容包含可用状态、各币种明细和更新时间,支持手动刷新。

余额端点

节点侧经可选的 webServer 后端(通过 ctx.inject 等待就绪)暴露一个 JSON 端点,供浏览器拉取:

GET /plugins/dsh-balance/balance

浏览器只做同源 fetch,headless 组合下该端点不挂载。

凭据解析

API key 经 DSH 凭据服务解析,默认引用 DEEPSEEK_API_KEY,可以在 Web 的 Models 设置页直接写入;凭据服务缺席时回退到启动环境变量。每次调用实时解析,改 key 不需要重启,取值方式与官方 dsh-llm-deepseek 一致。

值得注意的设计:API key 只存在于节点侧,浏览器不接触凭据。

取消语义

工具执行时合并超时与调用方取消(AbortSignal.any),符合 dsh-tools 的协作取消契约。

安装与启用

先安装插件:

dsh plugin --profile web add ./dsh-balance

bundle 层栈变更需要重启才能生效:

dsh --profile web

启动日志出现下面这行即挂载成功:

[dsh-balance] plugin loadedAPI key 引用:DEEPSEEK_API_KEY,基地址:https://api.deepseek.com

重启后,会话输入区工具行右侧(发送按钮前)会出现 🔋 余额入口。

配置

默认配置开箱即用。如需覆盖,在 profile 的 cordis.patch.yml 按行 id 覆盖。注意 patch 会整替换 config,覆盖时需要重述全部键:

- id: dsh-balance
  config:
    apiKeyEnv: DEEPSEEK_API_KEY
    baseURL: https://api.deepseek.com
    timeoutMs: 10000

三个键的含义:

默认值 说明
apiKeyEnv DEEPSEEK_API_KEY 读取 API key 的凭据引用(POSIX 环境变量名)
baseURL https://api.deepseek.com DeepSeek API 基地址
timeoutMs 10000 请求超时(毫秒)

典型用法

安装并重启后,有两种用法:

  1. 看界面:余额按钮直接显示当前总余额,点击展开明细卡片,需要最新数据时手动刷新。
  2. 问代理:在会话中向代理提问「查询 DeepSeek 余额」,代理会调用 dsh_balance 工具返回结果。

验证插件是否正常工作:

  1. 类型层面运行 pnpm run typecheck
  2. 在会话中提问「查询我的 DeepSeek 余额」,确认返回账户可用状态与余额明细。

开发与构建

如果需要二次开发,常用脚本如下:

pnpm install
pnpm run build       # tsc 产出 lib/types + tsdown 产出 lib/index.js / lib/client.js
pnpm run typecheck   # 严格类型检查,单一 tsconfig 覆盖 node + client 两侧
pnpm run watch       # tsdown 增量重建 client half

lib/ 是构建产物,不要手改;改完源码后需要重新构建。

适用场景与注意

适合长期使用 DeepSeek、想随时掌握账户余额的开发者,尤其是已经在用 DSH 插件机制组织工作流的人。几点注意:

  1. 插件以当前 dsh 进程的权限运行,安装前建议自行检查源码与许可证(本项目为 MIT)。
  2. 改 API key 不用重启(凭据每次调用实时解析),但安装、卸载这类 bundle 层栈变更需要重启 dsh --profile web 才生效。
  3. headless 组合下没有 webServer,余额端点和 Web UI 入口不可用,只能通过工具查询。

结尾

dsh-balance 解决的问题很小但很具体:让余额查询变成常驻信息,不再打断工作流。工具和界面两侧都能用,凭据留在节点侧,装一次即可。

  • GitHub:https://github.com/qiuyongjin/dsh-balance
  • 社区目录:https://www.skillhub.cn/plugins/qiuyongjin/dsh-balance

社区目录为独立站点,与 DeepSeek、幻方无官方从属关系。

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

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

小夜