@9Epuuuu/dsh-api-balance
English | 中文
DSH Web 输入框上侧的 DeepSeek 账户余额常驻显示:始终可见地显示账户余额与本次会话用量:
余额 ¥128.50 · 本次会话用量 ¥3.25余额来自 DeepSeek 官方 GET /user/balance 接口,由宿主侧代查(规避浏览器 CORS)。本次会话用量采用「余额差值法」:某会话首次读到余额时记为该会话的起始余额,用量 = 起始余额 − 当前余额,负数归零。
功能
- 宿主侧:注册
GET /api/balance(仅限本机回环),经 DSH 的ctx.credentials服务解析 API key,按配置间隔拉取并缓存 DeepSeek 余额,并注册api-balance设置命名空间。 - 客户端:在
conversation.composer.dock(输入框上方的内置状态行)挂载一行,并在 Web UI 插件分组挂载设置卡。
安装
推荐直接安装全家桶聚合包 @linxin666/dsh-web-ui-all(一个包装齐全部功能插件与皮肤),或单独安装本插件:
# 推荐:直接从 npm 安装
dsh plugin --profile web add @9Epuuuu/dsh-api-balance
# 或从仓库安装(开发调试)
git clone https://github.com/9Epuuuu/dsh-api-balance.git
cd dsh-api-balance
pnpm install && pnpm build
dsh plugin --profile web add link:$(pwd)
安装后重启 dsh web,在插件设置中填写 API key 凭证引用名,输入框上方即出现余额行。
配置
| 键 | 类型 | 默认值 | 含义 |
|---|---|---|---|
apiKeyEnv | string | '' | 用于解析 DeepSeek API key 的 DSH 凭证引用名,如 DEEPSEEK_API_KEY |
refreshIntervalSec | number | 60 | 余额拉取的最小间隔(也是浏览器端轮询节奏) |
enabled | boolean | true | 插件总开关(浏览器侧 + 宿主路由) |
本次会话用量如何计算
账户余额是全局的;本次会话用量按 sessionId 各自派生:
1. 某会话首次成功读到余额时,把该余额持久化(存 localStorage,按会话 id 区分)为该会话的起始余额。 2. 之后每次轮询,用量 = max(0, 起始余额 − 当前余额)。 3. 刷新页面沿用该起点;切换会话则重新起算。
导出形态
函数/命名空间插件:inject / Config / apply,无默认导出。DeepSeek 适配器(./deepseek-balance)为纯「拉取 + 归一化」辅助函数。
模型体验
提示与工具面
#### 模型看到什么
什么也看不到。插件不注入提示段落、不注册工具、也不自行发出 session 事件。
#### Token 影响
每个请求为零。
#### KV 缓存影响
无系统提示贡献,因此对缓存稳定性无影响。
已知限制与待办
- 账户级快照:余额是 provider 侧快照,存在分钟级延迟,不是逐条消息的计费精度。
- 用量漂移:余额差值法的用量会包含其他并发消耗(其他会话、工具),充值期间归零。
- 仅 DeepSeek:余额接口为 DeepSeek 专用;其他 provider 需要各自的适配器。