dsh-quota-panel

by brittanistrehlowll-oss

4 用量与计费github收录于 08-23

dsh web 界面的供应商配额/余额角标面板(DeepSeek Harness 插件):服务端凭证

Provider quota/balance corner panel for the dsh web surface (DeepSeek Harness plugin): server-side credential

安装

dsh plugin --profile web add github:brittanistrehlowll-oss/dsh-quota-panel

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

English | 中文

dsh-quota-panel 是 DeepSeek Harness(DSH)网页端的提供方额度/余额状态组件插件。

零依赖宿主端插件:为每个配置的提供方注册一条服务端代理路由 /api/quota/<id> —— API Key 通过凭据系统在服务端解析,绝不进入浏览器 —— 然后在页面注入右下角的 Harness 原生风格状态组件,支持两种尺寸:

  • 收起(默认) —— 极简胶囊:每个账户一个「独立状态点 + 数值」对 (如 ● ¥58.36 · ● 45%),互不干扰——哪个账户紧张只有它的点变色, 不用文字标签,一眼扫过即可;点击展开。
  • 展开 —— 完整卡片:「模型额度」标题栏(刷新/收起按钮)+ 每个提供方一行 结构化信息(状态点、名称、主数值、次级信息,用量型提供方还有进度条), 点收起按钮缩回胶囊。

两种尺寸都自动刷新(页面隐藏时暂停);刷新按钮旋转反馈,重复点击不会并发请求。

胶囊里的用量百分比按手机电量式三色着色:健康绿、紧张琥珀、告急红, 与状态点独立对应;余额数值仅在其状态告警时着色。

组件完全使用 Harness 设计 Token(--dsw-alias-*、--dsw-static-*、 --dsw-shadow-*、--dsw-font-*)驱动,token 缺失时有合理的 fallback, 因此自动跟随产品主题(浅色/深色),不携带自己的配色。

效果图

收起胶囊(浅色 / 深色):

胶囊(浅色) 胶囊(深色)

展开卡片(浅色 / 深色):

面板(浅色) 面板(深色)

完整页面(小胶囊状态,浅色 / 深色):

完整页面(浅色) 完整页面(深色)

安装

dsh plugin --profile web add "github:brittanistrehlowll-oss/dsh-quota-panel"
# 重启 `dsh web`(bundle 层在启动时生效)

包声明了 dsh.bundle.patch,因此 dsh plugin add 会把它自动激活为 profile 层。

配置

每个提供方是 providers 下的一项,内置两种渲染器:

format 接口返回形态 行显示
deepseek-balance { "balance_infos": [{ "currency", "total_balance", "granted_balance", "topped_up_balance" }] } ¥58.36 + 余额充足/正常/紧张/建议充值
opencode-usage { "usage": { "rolling"|"weekly"|"monthly": { "percent", "resetsAt" } } } 五 10% · 周 45% · 月 22% + 进度条 + 当前最高占用

在 profile 的 cordis.patch.yml 中覆盖默认配置:

- id: quota-panel
  config:
    refreshMs: 30000
    providers:
      - id: deepseek
        label: DeepSeek
        credential: DEEPSEEK_API_KEY
        endpoint: https://api.deepseek.com/user/balance
        format: deepseek-balance
        balanceTiers: { critical: 10, warn: 20, healthy: 50 }
      - id: opencode-go
        label: OpenCode Go
        credential: OPENCODE_GO_API_KEY
        endpoint: https://opencode.ai/zen/go/v1/usage
        format: opencode-usage
        windowLabels: { rolling: 五, weekly: 周, monthly: 月 }
        warnPercent: 70
        errorPercent: 90

字段说明:

字段 含义 默认值
id 路由 id(/api/quota/<id>),^[a-z0-9-]+$ 必填
label 卡片上的提供方名称 必填
credential 凭据引用($DSH_HOME/.credentials.yaml 或环境变量) 必填
endpoint 额度 JSON 接口,GET + Authorization: Bearer <key> 必填
format 行渲染器 deepseek-balance
balanceTiers (deepseek-balance){critical, warn, healthy} 分级阈值 {10, 20, 50}
lowBalance 旧版别名,等价于 balanceTiers.warn —
windowLabels (opencode-usage)三个窗口的标签 {滚, 周, 月}
warnPercent / errorPercent (opencode-usage)阈值 70 / 90
refreshMs 自动刷新间隔 60000

DeepSeek 余额分级

默认 balanceTiers {critical: 10, warn: 20, healthy: 50}:

余额 状态 次级信息
<= 10 error(红点 + 红数值) 建议充值
10 < x <= 20 warn(琥珀色) 余额紧张
20 < x <= 50 ok 余额正常
> 50 ok 余额充足

OpenCode 用量状态

high = max(滚动, 每周, 每月):

用量 状态
< warnPercent ok(绿点,DeepSeek 蓝进度条)
>= warnPercent warn(琥珀点 + 进度条)
>= errorPercent error(红点 + 进度条)

更新日志

  • v0.3.0 — 双尺寸:收起为极简胶囊(每账户独立状态点 + 电量式三色数值),点击展开完整卡片。
  • v0.2.0 — Harness 原生卡片:设计 Token 驱动、余额分级阈值、用量进度条。
  • v0.1.0 — 初版悬浮面板:服务端额度代理 + 页面角标。

安全

  • API Key 仅由服务端通过 ctx.credentials 解析,只用于服务端到提供方的请求; 浏览器只访问 /api/quota/<id>。
  • 注入的卡片只使用 createElement/textContent 构建 DOM,API 返回值绝不经过 innerHTML;技术错误(401、超时、凭据缺失)只写入 title 悬停提示,不进卡片 正文。

本地开发

# 重新生成演示页 docs/demo.html + docs/demo-dark.html
node scripts/gen-demo.mjs
# 通过 Chrome DevTools Protocol 无头截图
node scripts/shoot.mjs both
# 验证演示页渲染出的 DOM
node scripts/verify.mjs [dark]
# 注入脚本的语法与内容检查
node scripts/test-page-script.mjs

License

MIT

原始 README: https://github.com/brittanistrehlowll-oss/dsh-quota-panel/blob/master/README.zh.md ↗