dsh-token-plan-quota
跟随当前模型供应商的额度徽标:DeepSeek、千问 Token Plan、阿里云费用中心取官方真值,Moonshot / OpenRouter 已接官方端点但字段未用真 Key 核对;其余只报本实例实测。
安装
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/ 里,再生成方式与前置条件见
(该目录不随 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