Bundle
dsh-plugin-ds-api-usage
DeepSeek Harness plugin: real-time DeepSeek API balance and usage dashboard — balance-delta costing, persistent daily totals, and a responsive sidebar widget.
- Source
- chenzhexii
- stars
- 2 stars
- License
- MIT
- Updated
- Updated 12 days ago
Readme
# dsh-api-usage
DeepSeek Harness (DSH) 插件:实时 DeepSeek API 余额与用量面板。
在 DSH Web 界面的**侧边栏底部(设置按钮上方)**提供一个常驻小部件:当前余额、今日消费(余额实测)、今日 Tokens、请求数、24h 消费柱状图,点击展开/收起,一键直达 DeepSeek 充值页。
## 特色
- **余额差值计费**:每 60 秒查询一次 `/user/balance`,相邻两次余额之差即真实消费(不再依赖价格表估算),精度 ¥0.01
- **刷新即同步**:点「↻」强制刷新余额的同时,立即结算差值更新今日消费(无需等下一个轮询周期)
- **持久化**:今日消费 / Tokens / 请求数 / 余额基准全部落盘(`$DSH_HOME/.ds-api-usage-state.json`),跨进程重启与插件重挂载都不清零;仅本地 0 点按"今日"语义归零
- **响应式小部件**:侧边栏宽/折叠(rail)两态自适应;窄窗口(<768px)自动精简
- **失败兜底**:余额查询失败时显示最近一次余额(缓存标记),10 秒内自动重试,不显示吓人的报错
- **充值直达**:蓝色实心「充值」按钮,直接调用 `window.open` 打开 DeepSeek 充值页(绕过侧边栏的链接拦截)
- **路由保护**:`/ds-api-usage/snapshot` 仅限环回地址访问
## 安装
```sh
dsh plugin --profile web add github:chenzhexii/dsh-api-usage
```
重启 `dsh web` 后,刷新页面即可在侧边栏底部看到小部件。
## 功能
- 💰 **余额** — 总余额 + 可用状态徽标,每 60 秒自动刷新,来源:官方 `GET /user/balance`
- 📊 **今日消费** — 本地 0 点起,按余额差值实测(误差 ≤ ¥0.01),非估算
- 🔢 **今日 Tokens / 请求** — 来自每次模型调用的 `usage` 上报(输入/输出分项)
- 📈 **24h 柱状图** — 按小时汇总的真实消费(悬停看精确值)
- 🎨 **响应式** — 折叠成 56px 窄栏时只显示余额;窄屏隐藏"今日"文字
- 🔄 **手动刷新** — 同步更新余额与今日消费
- 💳 **充值** — 蓝色实心按钮直达 `https://platform.deepseek.com/top_up`
## 工作原理
```
Host (Node.js) Browser
llm/stream 瀑布监听 → 小时/天 token 桶 ─┐
每 60s 轮询 /user/balance │ fetch('/ds-api-usage/snapshot')
相邻余额差 → 今日消费 + 按小时归集 ────┤→ 侧边栏小部件渲染
状态落盘(token 桶 + 消费 + 基准)──────┘ (每 60s 自动轮询 + 手动刷新)
```
- Token 计数:来自 provider 上报的 `usage` chunk(输入/输出/缓存命中/缓存未命中已是互斥分项)
- 消费金额:**余额实测**(`上次余额 − 当前余额` 累加),价格表估算保留为 `estimatedCny` 参考
- 数据保留:小时桶 48h、天桶 14 天,自动滚动淘汰
## 配置
无需配置,开箱即用(复用部署已有的 `DEEPSEEK_API_KEY` 凭据)。可选调整:
- 轮询间隔:改 `src/index.js` 中 `ctx.interval(..., 60000)`
- 状态文件位置:`$DSH_HOME/.ds-api-usage-state.json`
## 环境要求
- DeepSeek Harness Web profile(`dsh web`),`dsh plugin` 可用 pnpm
- Node ≥ 20(宿主侧)
- 已配置 `DEEPSEEK_API_KEY` 凭据
- Host 上可用 `curl`(用于余额接口,经 subprocess seam 调用)
## 开发
```sh
npm run check # 语法检查宿主与客户端两端
```
## 许可证
[MIT](LICENSE)
Install
dsh plugin --profile web add github:chenzhexii/dsh-api-usage#a5255570ee3d19895f3f2eba4940bef2d1e131ab
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-plugin-ds-api-usage from the hub