中文EN

dsh-token-plan-quota

usage已测通过npmMIT

跟随当前模型供应商的额度徽标:DeepSeek、千问 Token Plan、阿里云费用中心取官方真值,Moonshot / OpenRouter 已接官方端点但字段未用真 Key 核对;其余只报本实例实测。

下载量 / Downloads
1,678
依赖体积 / node_modules
2.43 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

安装

dsh plugin --profile web add dsh-token-plan-quota

沙箱测试结果

阶段结果
1 安装✓
2 列装✓
3 挂载✓
4 启动—

四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。

README

dsh-token-plan-quota

[中文](README.md) | [English](README.en.md)

在 DeepSeek Harness 的输入框工具行里,显示「你正在用的那家还剩多少额度」。

做它的起因很具体:阿里云 / 千问 Token Plan 有额度,却没有公开的额度接口——只能走控制台数据网关

(Cookie 会话),所以生态里的同类插件普遍不碰它。本插件把那套契约内置了,顺手也把有官方接口的几家

(DeepSeek、Moonshot、OpenRouter、阿里云费用中心)按真值接上。

三条口径,一眼看完:

口径 · 表现

有官方接口 → 真值 · 有分母就画余量条、报百分比;没分母就只报数——DeepSeek 余额没有"总量"这个分母,所以不画条

没有官方接口 → 标「实测」 · 只报经过本实例的 token / 次数。不折算 Credits、不按历史推算剩余、永不画条、永不报百分比

零配置 · 装完按你实际在用的供应商路由决定开哪些源;不用写 sources,也不用手填 providers

输入框工具行里的徽标是个小胶囊,跟随当前模型的供应商切换(名字/速度/天数都在 tooltip 里):

  ▓▓ 75%                  官方给了分母 → 画条、报百分比
  123.5万 tok  实测        没有官方分母 → 只报用了多少,绝不画条、绝不报百分比

① 徽标跟随当前模型的供应商切换——这一家官方接口给真值,切到没有官方额度接口的那家就退回「实测」:

② 明细面板:官方余量卡(有官方分母才画条、才给百分比)+ 一张卡里的多窗口计量条:

③ 面板可以拖成悬浮小窗(拖标题栏,双击复位):

④ Cookie 掉线时退回「实测」卡:官方卡变成一张写清原因的错误卡、不带任何数字,兜底的实测卡留在徽标上——

没有官方分母就不画条、不报百分比:

⑤ 按钱计费的模型也认得:DeepSeek 的余额是官方真值,但它没有"总量"这个分母 ⇒ 不画条、不报百分比,

只把「还剩多少钱、充过多少、赠过多少」原样报出来:

⑥ 用过的模型会显示额度:官方接口真给了分母的,才画余量条、才报百分比和周期重置日:

⑦ 切到本实例没用过的模型时不会显示额度:这一家没有官方额度接口,而实测账目里还没有它的调用记录

—— 于是徽标写「无官方额度数据」,面板只说清为什么没有,不会顺手编一个数:

上面七张图里的余额、token 数、日期全部是合成示例,不是任何真实账号的额度(本插件不会把真实数字放进公开仓库)。
英文套只有六张:⑦ 那句解释文案宿主目前只有中文(见 ROADMAP),与其给它编一句英文,不如少一张图。
想自己复现或换图:scripts/shots/README.md。

它不做什么

这是本插件的立场,比功能列表更重要:

  • 不折算 Credits,不做抵扣率,不"按历史推算剩余";
  • 没有"我自己填一个额度上限"的窗口:分母只能来自官方接口,手填的上限就是编数,所以本插件没有任何

表达"周期 + 上限"的键。token-plan-window 不是自建窗口预设,它是千问 Token Plan 的本地实测账本

(不打网络,只记经过本实例的调用);

  • 没有官方分母就不派生百分比:used/total、100−已用% 这类算出来的比例一律不出;实测卡永不画余量条、

永不显示百分比,只报「窗口内用了多少 token / 多少次」。但上游直接返回的比例属官方真值——千问控制台

的 usage.per1MonthPercentage 就是它给的数,所以档位额度那一路偶发取不到时(实测会超时),徽标仍显示

「96% + 条」(条画的就是那个官方比例,不是第二个事实),只是不报绝对剩余量(算不出来的东西不显示),并留 extra.denominatorFailed 诊断;

  • 档位配置不等于你的额度:一个窗口只有在这个套餐真回了读数时才存在(上游 quota-config 里躺着的

five_hour 上限不代表这个账号有 5 小时窗口);

  • 认不准就不开:自动检测宁可少一张卡,也不会把别家的余额数字顶在你正在用的模型上;
  • 不做会产生计费的探活;只用只读端点;
  • 不读别的 CLI 的登录态(见[明确不做的三类](#明确不做的三类))。

安装

dsh plugin --profile web add dsh-token-plan-quota          # npm 包名
dsh plugin --profile web add github:xinghe-1018/dsh-token-plan-quota
dsh plugin --profile web add ./dsh-token-plan-quota        # 本地目录

dsh plugin 是 pnpm 直传到 profile 目录;本插件零第三方依赖、无构建步骤,所以不会撞上 pnpm ≥10 的

prepare 脚本白名单。装完重启一次 dsh web(bundle 与客户端入口在启动时组装)。

运行时唯一的外部资源是三枚 CDN 字体 link,加载失败自动落系统字体栈,不影响功能。

支持哪些厂家

厂家 · 额度来源 · 徽标上看到什么 · 验证到什么程度

DeepSeek · ✅ 官方 /user/balance(Bearer) · 余额 + 充值 + 赠款(真值) · 真实 Key 实测

千问 Token Plan · ⚠️ 控制台数据网关(Cookie 会话,非公开 API) · 已用 % + 进度条(与订阅页同源);Cookie 没配/过期 → 退回实测卡 · 真账号实测

Moonshot / Kimi 开放平台 · ✅ 官方 /v1/users/me/balance(Bearer,.cn CNY / .ai USD 两区) · 余额 + 充值 + 赠款(真值) · 端点存在性实测;字段名未用真 Key 核对

OpenRouter · ✅ 官方 /api/v1/credits(Bearer) · 余额(USD)=累计充值 − 累计花费 · 端点存在性实测;字段名未用真 Key 核对

阿里云费用中心 · ✅ BssOpenApi(AK/SK 签名) · 账户余额 / 资源包余量(真值) · 逐字段对过官方 OpenAPI 元数据

MiniMax、普通 Key 的 OpenAI / Gemini 等 · ❌ 官方无 Key 化额度端点 · 实测卡(只报 token/次数) · 常见路径实测过,均无端点

逐条端点、信封字段、单位与百分比方向陷阱见 [docs/upstream-contracts.md](docs/upstream-contracts.md)。

只看 API host,不看控制台域名:platform.kimi.com、platform.moonshot.cn、

bailian.console.aliyun.com 这类网页控制台域名一律不参与识别——插件查的是余额接口,落在路由

baseURL 指向的 API host(api.moonshot.cn / api.moonshot.ai)上。Kimi 开放平台的 Key 与 Moonshot

开放平台是同一套账号与余额体系,所以 Key 配好后要走 api.moonshot.*;若你的 baseURL 写成别的域名,

检测认不出,会退回实测卡。想强制开官方卡,别只写源名——要把它绑到你真正的路由 id 上,否则默认

panelScope: "current" 下这张卡查得到却不露面(预设自带的 providers 是 moonshot 这类通用名,不含你的路由名):

{ "sources": [{ "id": "moonshot-balance", "providers": ["kimi-open-cn"] }] }

(下表最后一列请注意:这一家的字段名还没用真 Key 核对过,强制开出来若数字不对,用 probe 对字段名。

providers 落空时宿主日志会直接提醒,不至于一边是空白面板、一边让人瞎猜。)

与相邻插件的区别

生态里已有做同类事的插件,主要是成本统计 / 费用估算方向(例如 dsh-cost-meter、dsh-token-monitor)。

本插件不抢那块,它的口径是只报真值或明确标注的实测,不折算、不估算,徽标跟随当前模型的供应商切换,

并且内置了阿里云 / 千问 Token Plan 的控制台余量契约——那一家有额度却没有公开接口,正是本插件当初被做

出来的原因。要费用报表请选前者;要"我正在用的这家还剩多少",选这个。

结构总览

一张图看完半边怎么分工:浏览器半边(lib/client.js)在输入框工具行渲染跟随当前模型的徽标,

点开是明细面板;宿主半边(lib/index.js)挂 llm/stream 记本实例账本、注册只读路由与

token_plan_quota 工具、按零配置检测出的在用路由去查上游;上游按有没有官方接口分两类——

有官方接口的报真值(DeepSeek / Moonshot / OpenRouter / 阿里云费用中心),千问 Token Plan 走控制台

数据网关(Cookie 会话)。凭据只进不出:Bearer / AK-SK / Cookie 只在宿主进程内解析,

只读路由与模型工具永不回传。

这张图不是手绘的:源规格在仓库的 diagrams/ 里,再生成方式与前置条件见

diagrams/README.md

(该目录不随 npm 包发布)。

零配置自动检测

宿主在用的供应商路由就是唯一事实来源,所以你不用写 sources,也不用手填 providers——历史上正是这两个

字段各写各的,导致"卡查得到却永远看不见"。识别按可信度排序,命中即停:

依据 · 说明

baseURL 的 host · 最可信:路由实际打到哪。api.moonshot.cn → Moonshot 大陆区,openrouter.ai → OpenRouter,Token Plan 网关 → 千问

路由 id / 名称关键词 · 只在拿不到 host 时降级使用(出厂的 deepseek-official 就靠这条)

Key 前缀 · 最后的线索(sk-or- → OpenRouter)

都没命中 · 给每条认不出的路由各挂一张 window:<provider> 实测源:徽标不空,只报本地 token/次数

本文里 provider、路由 id、providers 数组里的字符串是同一个东西:宿主 llm.listProviders() 返回的

id(比较时忽略大小写,. _ / 一律当 -)。所以 window:minimax-cn 的实测卡只在路由 id 为

minimax-cn 的模型下出现,检测自动挂的兜底卡也叫这个名字(window:minimax-cn)——两个写法指同一张卡。

两条不变量:

  • 你写过的永远赢,但它是一层叠加,不是替换。autoDetect: true(默认)时,你写的 sources 先落地,

检测再补齐你没管的部分——不会因为多

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:9,最后更新 2026-11-02

链接

GitHub · Homepage · npm

同类插件