dsh-quota-meter:在 DSH 输入框下显示余额、套餐用量与会话花费估算

前言

在 DeepSeek Harness(DSH)里长时间对话时,官方状态药丸会告诉你本轮的 token 与缓存命中,但不会直接回答三件事:钱包还剩多少、订阅套餐(例如 5 小时 / 周 / 月窗口)用到哪了、当前会话大概花了多少钱。很多人只能切到网页控制台或另开终端查 API,打断编写流程。

插件 dsh-quota-meter(维护者 atlasmarkz,分类:客户端)把这三类信息收成 composer 下方的一行环境条,挂在 conversation.composer.dock 插槽里,随会话切换而切换,不打断输入。下文介绍它的能力、安装方式与配置要点。

这是什么

dsh-quota-meter 面向 DSH web 配置:DeepSeek 钱包余额、OpenCode Go 等订阅配额、以及基于会话 tokenUsage 与单价表算出的 本次会话花费估算,显示在 composer 原生 pills(例如 1 turns · 15.9K tok)正下方。

示例一行(README 示意):

余额 ¥42.50 · OpenCode Go 5h 32% · 周 62% · 月 100% 已达上限 · 本次 ≈¥0.46

实现为纯 JavaScript,无构建步骤、无运行时依赖;包名 @mark_future_ai/dsh-quota-meter,当前版本 0.1.0,许可证 MIT。源码与说明见 GitHub 仓库,社区目录页为 SkillHub 条目。SkillHub 为独立插件目录站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

界面位置与行为

  • 占用 composer dock 一行,切换会话时该行随会话变化。
  • 某个数据源未配置(无密钥)时,对应 pill 不渲染;请求失败时 保留上一次成功值,整行不会变空,也不会挡住输入框。

内置数据来源

显示内容 来源类型 说明
余额 ¥… deepseek-balance GET https://api.deepseek.com/user/balance,按币种展示
5h / 周 / 月 等 opencode-go GET https://opencode.ai/zen/go/v1/usage;rate-limited 窗口显示「已达上限」
本次 ≈¥… 会话 token 用量 × pricing 单价表 估算值,不是账单

默认已内置 DeepSeek 余额、OpenCode Go 套餐与 DeepSeek 列表价,裸装即可尝试显示(有对应密钥时)。

扩展与其它套餐

任意返回 JSON 的配额接口可通过通用源 http-json 接入,用点路径映射 meter / balance,无需改插件代码。未配置的 provider 不显示;失败不整块清空。

密钥与浏览器侧安全

密钥只在 宿主进程 中解析与使用,浏览器端通过同源路由轮询,只看到余额、百分比与重置时间等聚合结果,不接触 secret。解析顺序为:

  1. 源配置里的 apiKey(不推荐,会进 patch 文件)
  2. apiKeyEnv 指向的环境变量(如 DEEPSEEK_API_KEY、OPENCODE_GO_API_KEY)
  3. ~/.local/share/opencode/auth.json(OpenCode Desktop 已有存储,供 OPENCODE_* 引用)
  4. DSH 设置中的凭据服务

同源 API:GET /usage-meter/api/state[?force=1],由 harness 会话 cookie 保护,不对公网暴露。

安装与启用

在 DSH 中执行官方 README 给出的命令(也可在 DSH 内置插件市场安装):

dsh plugin --profile web add @mark_future_ai/dsh-quota-meter

首次安装后 重启一次 DSH:加载器在启动时组装插件树,新开一行不会热插入。

环境要求(package.json):Node >= 20;peer 依赖含 @deepseek-ai/cordis ^4、react ^18.2.0(均为 optional meta)。

典型配置

默认无需改配置即可工作。若要调整刷新间隔、单价或数据源,在 profile 的 cordis.patch.yml 中按插件 id 覆盖(README 示例 id 为 usage-meter):

- id: usage-meter
  config:
    refreshMs: 30000
    pricing: { currency: CNY, input: 2, output: 3, cacheRead: 0.2, cacheWrite: 2 }
    sources:
      - { id: deepseek, kind: deepseek-balance, label: DeepSeek, apiKeyEnv: DEEPSEEK_API_KEY }
      - { id: opencode-go, kind: opencode-go, label: OpenCode Go, apiKeyEnv: OPENCODE_GO_API_KEY }

常用配置项:

键 默认 含义
refreshMs 60000 客户端轮询间隔;宿主按源缓存并合并进行中的请求
timeoutMs 8000 单次请求超时
pricing.currency CNY CNY 显示 ¥,USD 显示 $
pricing.input / output 2 / 3 每 百万 token 单价
pricing.cacheRead / cacheWrite 0.2 / 2 每百万 token

默认单价跟随 DeepSeek API 列表价;若实际用的模型价不同,应在 pricing 中改表,否则「本次 ≈」仅作参考。

自定义 HTTP 源示例(密钥用环境变量引用,避免写入 patch):

- id: my-plan
  kind: http-json
  label: My Plan
  url: https://example.com/api/usage
  headers:
    authorization: "$ENV:MY_PLAN_TOKEN"
  meters:
    rolling: { percent: quota.fiveHour.used_pct, limited: quota.fiveHour.blocked, resetsAt: quota.fiveHour.reset, label: 5h }
    weekly: quota.week.used_pct
  balances:
    USD: credits.usd
  link: account.billingUrl

未显式配置 limited 路径的 meter,在 percent >= 100 时视为已达上限。

适用场景与注意

适合谁:日常在 DSH web 里写 agent、多会话并行,且同时使用 DeepSeek 付费余额和/或 OpenCode Go 等订阅窗口的用户;希望在 composer 内一眼看到配额与会话成本趋势,减少切屏查账。

使用前注意:

  • 插件以当前 DSH 宿主进程权限 运行,会代你调用配置的 HTTP API;安装前建议阅读源码与 MIT 许可证,确认数据源 URL 与密钥策略可接受。
  • 「本次 ≈」由 token 投影 × 你配置的 pricing 计算,不是 官方账单;多模型混用时务必校准单价表。
  • 仅需 DeepSeek 余额时可只配置 DEEPSEEK_API_KEY;OpenCode 相关 pill 在无密钥时不显示,不影响其它项。

结尾

经过上面的步骤,你可以在输入框下方得到一条跟会话走的用量环境条:官方余额、订阅窗口百分比,以及可配置的会话花费估算。需要细节配置、http-json 字段说明或本地冒烟测试命令时,以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/atlasmarkz/dsh-quota-meter
  • GitHub:https://github.com/atlasmarkz/dsh-quota-meter
羽毛球分组比赛记分
小程序二维码

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

Xiaoye