前言¶
用量大了以後,最常見的問題不是「花了多少」,而是「去哪看」:餘額要去「我的權益」,賬單要去「費用賬單」,模型用量還得翻實例明細,幾個頁面來回切。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