dsh-usage:DeepSeek Harness Web GUI 的持久化余额与用量面板

前言

用 DeepSeek Harness(DSH)跑 dsh web 时,余额和 token 用量通常要切到别的页面或终端去查。多 provider、多通道(DSH 与 Claude Code)并行时,更难一眼看清「今天花了多少」「哪条通道占大头」。

dsh-usage 是社区维护的客户端插件,在 Web GUI 左下角挂一个持久化 dock,并提供一个可定制的余额 / 用量面板。数据在本地聚合,凭证由 Harness 服务端解析,不进入浏览器响应。

这是什么

dsh-usage(GitHub:Aisland-SJL/dsh-usage,SkillHub 目录:Aisland-SJL/dsh-usage)由 Aisland-SJL 维护,分类为客户端插件,MIT 许可。当前版本 0.2.0,GitHub 约 20 stars。

它面向已启用 web profile 的 DSH 用户,解决三件事:随时可见的余额与用量摘要、可拖拽排序的详情面板、以及 DSH 通道与 Claude Code 通道的用量对比。

核心功能

持久化 dock

关键数字常驻界面左下角。余额充足时显示为绿色,余额耗尽时变红;今日 / 本月 token、缓存命中率以紧凑行展示。角落有设置齿轮与一键刷新。侧边栏折叠时,dock 收成一个小型余额胶囊。

详情面板(七个组件)

两列卡片布局,每个组件可展开详情、折叠、隐藏、固定(pin),并支持拖拽排序:

组件 作用
Balance 左侧大数字,右侧展示可用 / 充值 / 赠送余额;可切换 provider
Today 今日 token 总量,含 input / output / cache-read 拆分
This month 本月 token 总量,拆分同上
Cache hit 今日与全时段缓存命中率
Channel share DSH 通道与 Claude Code 通道占比条
Usage log 近 14 天按日列表,点击可下钻到各模型明细
Activity heatmap 28 天 × 6 个四小时时段的点阵热力图

外观与布局定制

强调色(预设 + 取色器)、背景色、面板透明度可实时调整。组件的 pin / collapse / hide / drag-reorder 状态写入 localStorage,刷新后保留。

双通道用量对比

DSH 侧 token 来自 Harness 内置统计;Claude Code 侧通过增量解析 ~/.claude/projects 下的 JSONL 日志聚合,只保留数字,不读取消息正文。

本地优先与安全边界

插件暴露三个仅 loopback 可访问的 GET 端点。凭证从 ~/.dsh/.credentials.yaml 经 Harness credentials seam 在服务端解析,插件不读取、不缓存、不回显密钥。上游余额查询强制 HTTPS,DNS 预解析并拒绝私网 / 环回地址,连接绑定到已校验 IP(防 DNS rebinding),响应上限 1 MiB,超时 15 秒。用量缓存写在 ~/.dsh/storages/,仅存聚合数字与 fold 游标。

支持的余额 provider

Provider 上游端点 默认凭证引用
DeepSeek GET {origin}/user/balance DEEPSEEK_API_KEY
OpenRouter GET {origin}/api/v1/credits OPENROUTER_MANAGEMENT_KEY
Moonshot / Kimi GET {origin}/v1/users/me/balance pi-ai provider 的 apiKeyEnv(自动发现)
Z.ai / GLM GET {origin}/api/paas/v4/balance ZAI_API_KEY

没有公开余额接口的 provider 会显示明确状态,不会猜测数值。界面支持中英文。

安装与启用

前置条件:@deepseek-ai/dsh >= 0.1.0-rc.6,且使用 web profile。

下面命令来自插件 README 与 SkillHub 目录页:

dsh plugin --profile web add "github:Aisland-SJL/dsh-usage"

安装后重启 dsh web,在浏览器执行硬刷新,左下角应出现 dock。更新与卸载:

dsh plugin --profile web update dsh-usage
dsh plugin --profile web remove dsh-usage

典型用法

配置凭证

余额查询读取 ~/.dsh/.credentials.yaml 中的引用,按实际使用的 provider 填写:

DEEPSEEK_API_KEY: sk-your-key-here            # 官方 DeepSeek 线路
OPENROUTER_MANAGEMENT_KEY: sk-or-v1-...       # OpenRouter 账户(Management Key,非推理 key)
ZAI_API_KEY: your-zai-key                     # Z.ai 开放平台

Moonshot / Kimi 若在 llm-pi-ai 中已配置,会自动发现对应 apiKeyEnv

面板操作

  1. 点击 dock 角落齿轮打开详情面板。
  2. 在 Balance 组件切换 provider,查看分项余额。
  3. 点击 ↻ 或等待后台刷新(启动时刷新一次,之后每 5 分钟):余额、DSH token、Claude Code 聚合同步更新。
  4. 在 Usage log 点击某一天,下钻到 per-model 明细。
  5. 在定制器中调整强调色、背景、透明度,拖拽组件顺序并 pin 常用项。

HTTP API(仅供本机调试)

方法 路径 响应内容
GET /api/usage/providers provider 列表、余额 scheme、状态摘要
GET /api/usage/balance?provider=<id> 统一余额快照;refresh=1 强制上游查询
GET /api/usage/usage 按日 / 按模型 token 聚合、缓存命中率、24 小时桶(days[].hours)、Claude Code 通道(claude

GET 请求返回 405,非 loopback 调用返回 403。响应均为 JSON,Cache-Control: no-cache。请勿通过反向代理把这些端点暴露到局域网或公网。

适用场景与注意

适合人群:

  • 长期开着 dsh web,需要随时看余额和今日 / 本月用量;
  • 同时使用 DSH 与 Claude Code,想对比两条通道的 token 占比;
  • 在意隐私,希望用量在本地聚合、密钥不进入浏览器。

安装前注意:

  • 插件以当前 dsh 进程权限运行,安装前应自行检查源码与 MIT 许可证。
  • Claude Code 聚合依赖本机 ~/.claude/projects 日志;无日志时对应通道显示为空或零,属预期行为。
  • OpenRouter 余额需 Management Key,普通推理 key 无法查询 credits。
  • SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系;插件同样属于社区生态,遵循 DSH「一切皆插件」的扩展方式。

结尾

dsh-usage 把余额、token 用量、缓存命中、活动热力图和双通道对比收进 Web GUI 左下角,配置项与布局可本地持久化,凭证与上游查询留在服务端边界内。若你已在用 DSH web profile,可按上文命令安装,重启后硬刷新即可验证。

  • SkillHub 目录:https://www.skillhub.cn/plugins/Aisland-SJL/dsh-usage
  • GitHub 仓库:https://github.com/Aisland-SJL/dsh-usage
羽毛球分组比赛记分
小程序二维码

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

小夜