前言¶
用量大了以后,最常见的问题不是「花了多少」,而是「去哪看」:余额要去「我的权益」,账单要去「费用账单」,模型用量还得翻实例明细,几个页面来回切。DSH 的理念是「一切皆插件」,下面介绍的 dsh-aliyun-quota 就是把这个查询链路收回到侧边栏:在 DSH 界面里直接看可用余额、代金券、账单趋势和按模型的 token 明细。
这个插件由 GitHub 仓库 20132556/dsh-aliyun-quota 的所有者 20132556 维护,分类是联网工具,在 GitHub 上是 1 stars,许可证 MIT。它自身零运行时依赖,只调用阿里云官方 BSS OpenAPI,适合以 DSH 桌面端为主要工作界面、想顺手确认账户状态的人。
它能提供什么¶
一句话概括:阿里云账户的「额度」与「花费」两类数据,从 BSS 官方接口拉取后在侧边栏面板展示。
- 额度与券:账户可用余额(现金)、可用现金 / 信控额度、代金券面额与剩余、到期提醒。学生认证的 300 元券(云工开物那类)通常以代金券形式发放,会出现在明细里。
- 花费与模型:本月已花、今日花费、近 8 个月账单趋势、每月 token 用量、按模型 / 按计费项的明细。
- 面板有两个标签页:花费与模型 / 额度与券,每次按顺序刷新,默认每 90 秒自动刷新一次,也可以手动点「刷新」。
数据来源对应的接口如下,资料中已明确列出。
| 数据 | 来源接口 |
|---|---|
| 账户可用余额(现金) | QueryAccountBalance → AvailableAmount |
| 可用现金 / 信控额度 | QueryAccountBalance → AvailableCashAmount / CreditAmount |
| 代金券列表(面额、剩余、到期、状态、适用产品) | QueryCashCoupons |
| 近 N 个月账期汇总(消费、券抵、折扣) | QueryAccountBill(Granularity=MONTHLY) |
| 逐日花费 | DescribeInstanceBill(Granularity=DAILY,每天一次) |
| 按模型 / 计费项的 token 用量 | DescribeInstanceBill → InstanceID 第 3、4 段 |
其中「按模型」的口径来自百炼的 InstanceID 格式:第 3 段是模型名,第 4 段是计费项(输入 / 输出 / 缓存 × 高峰 / 闲时)。插件按这两段聚合,所以能给出某个模型花了多少钱、用掉多少 token。非百炼产品(ECS、OSS 等)没有这个格式,插件退回按产品名分组,这是正常行为,不是故障。
安装与启用¶
先看环境:package.json 里声明 engines.dsh 为 >=0.2.1-rc.3,engines.node 为 >=18。DSH 版本低于此值插件不会按预期加载。
官方给出的安装命令是(PowerShell):
dsh plugin --profile desktop add dsh-aliyun-quota
装完必须重启 DSH 桌面端,插件在启动时加载。
如果命令走不通,可以从本地源码安装:
git clone https://github.com/20132556/dsh-aliyun-quota.git
cd dsh-aliyun-quota
dsh plugin --profile desktop add link:<本目录绝对路径>
再不行就手动改 profile 的两处配置,然后重装依赖:
~/.dsh/profiles/desktop/package.json
- dependencies 里加 "dsh-aliyun-quota": "<版本或路径>"
- dsh.profile.bundles 里加 "dsh-aliyun-quota"
cd ~/.dsh/profiles/desktop
pnpm install
改完一样要重启 DSH。
配置 AccessKey¶
插件要用阿里云官方 BSS OpenAPI 查数据,需要一对 AccessKey。先说明一点:这个插件以当前 DSH 进程的权限运行,读写范围和 DSH 进程本身相同,所以装之前建议先过一遍源码与许可证(MIT)。
取 AK 的步骤,资料里建议这样走:
- 打开 RAM 访问控制 → AccessKey(
https://ram.console.aliyun.com/manage/ak)。 - 创建 RAM 用户,不要用主账号 AK——主账号 AK 权限过大,泄露风险高。
- 给这个 RAM 用户授予
AliyunBSSReadOnlyAccess,只读操作足够查余额、代金券和账单。 - 把 AccessKey ID 和 Secret 粘进插件面板,点「保存并验证」。
插件保存前会真的调一次接口验证,验证不过不落盘,避免存进一堆废密钥。用主账号 AK 的话,需要先确认账号没有被限制调用 BSS OpenAPI。
密钥的存放位置与格式:
%USERPROFILE%\.dsh\dsh-aliyun-quota\config.json
{
"accessKeyId": "LTAI5t...",
"accessKeySecret": "..."
}
这个文件是明文密钥。如果不想落盘,可以改用环境变量,插件会优先读环境变量,面板上会显示 source: env:
setx ALIYUN_ACCESS_KEY_ID "LTAI5t..."
setx ALIYUN_ACCESS_KEY_SECRET "..."
设完重启 DSH。面板上的「设置 → 清除密钥」会删掉那个 config 文件。
日常用法¶
启用后的操作是:
- 重启 DSH 桌面端。
- 左侧边栏点「阿里云额度」(圆形 ¥ 图标)。
- 第一次会看到设置表单,填入 AccessKey。
- 保存后立刻显示。
花费页能看的东西:本月已花(按账期汇总的消费金额,以及其中多少由代金券抵掉)、今日花费(当天 0 点到现在)、近 8 个月账单趋势柱状图(悬停看明细)、本月 token 构成(输入 / 缓存命中 / 输出三段占比,附缓存命中率)、按模型与计费项展开(输入·高峰、输入缓存·闲时、输出·高峰等)、按产品分别列出,以及本月逐日(每天花多少、多少 token、几条明细)。
另外插件注册了 aliyun_quota 和 aliyun_usage 两个工具,可以直接在对话里问额度和花费,不必每次点开面板。
服务端路由挂在 /api/dsh-aliyun-quota/*,只允许本机回环访问:
GET /api/dsh-aliyun-quota/status?refresh=1 额度总览
GET /api/dsh-aliyun-quota/usage?refresh=1 花费与模型用量(可加 &months=12)
GET /api/dsh-aliyun-quota/config 是否已配置(不返回密钥)
POST /api/dsh-aliyun-quota/config 保存并验证 AccessKey
POST /api/dsh-aliyun-quota/clear 清除密钥
GET /api/dsh-aliyun-quota/health 自检
实现要点与数据时效¶
资料里写明的实现方式:零依赖,只用 node:crypto 和 node:fs,手写阿里云 RPC 签名(HMAC-SHA1),没有装 SDK;服务端注册 5 个路由,客户端用侧边栏条目加主面板,通过 ctx.slots 挂载,无构建步骤。缓存方面,额度 45 秒,账单 5 分钟——账单一次要发 30 多个请求,不宜频刷;并发请求会合并,账单接口 6 路并发,近 8 个月加 30 天明细约 2 秒出结果。
时效上要注意:BSS 账单出账通常有 1–6 小时延迟,刚花的钱不一定立刻出现,控制台同理。每月 1 号刚过时,上个账期可能还在结算。想要本地验证逻辑,可以跑:
node test/routes.mjs
它会挂一个临时 HTTP 服务,用假 DSH 上下文跑 20 项断言,其中包括「假密钥必须被拒绝且不落盘」和 usage 路由的方法校验。
常见排错¶
| 现象 | 原因 | 处理 |
|---|---|---|
| 侧边栏没有图标 | 插件没加载 | 确认 package.json 的 dsh.profile.bundles 里有它,重启 DSH |
| 保存时报「密钥验证失败」 | AK 错 / 被禁用 / 权限不足 | 去 RAM 控制台检查权限 |
报 SignatureDoesNotMatch |
系统时钟偏差超过 15 分钟 | 校准系统时间 |
| 显示「没有查到代金券」 | 券未到账,或不是代金券类型 | 等一会儿;资源包/权益包走的是另外的接口 |
| 花费页一直空 | 账单还没出 / 权限不足 | 等 1–6 小时;确认有 AliyunBSSReadOnlyAccess |
| 模型显示成产品名 | 非百炼产品,InstanceID 没这个格式 |
正常行为 |
报 Throttling |
刷太快触发频控 | 等 1 分钟再点刷新 |
代金券查不到时,三种常见原因:券还没到账(学生认证通过后可能有几分钟到几小时延迟);权益本身是「资源包」或「权益包」,不在 QueryCashCoupons 里;RAM 权限不足,账单接口需要 bss:DescribeCoupons、bss:QueryBill、bss:DescribeInstanceBill,AliyunBSSReadOnlyAccess 已包含这些权限。
卸载¶
# 1. 从 profile 里去掉(两处都要改)
# ~/.dsh/profiles/desktop/package.json
# - dependencies 里删掉 "dsh-aliyun-quota"
# - dsh.profile.bundles 里删掉 "dsh-aliyun-quota"
# 2. 重装依赖
cd ~/.dsh/profiles/desktop
pnpm install
# 3. 重启 DSH
然后删掉 ~/.dsh/dsh-aliyun-quota/ 目录,里面有密钥。
收尾¶
它的价值在于把阿里云账户的额度与花费查询收敛到 DSH 侧边栏,少开几个控制台页面,并且给出按模型的 token 明细,这是控制台账单页本身不直接提供的口径。同样的接口数据,BSS 账单本身有 1–6 小时延迟,插件无法规避。
目录页:https://www.skillhub.cn/plugins/20132556/dsh-aliyun-quota
仓库:https://github.com/20132556/dsh-aliyun-quota