前言¶
用 DSH 調阿里雲百鍊(Model Studio)的模型時,代金券還剩多少、哪張券最先到期,通常要切到瀏覽器打開控制台才能看到。更麻煩的是,百鍊的模型 API Key(sk-... / sk-sp-...)沒有查詢餘額的接口,想從命令側拿數據沒有直接通道。
下面介紹的這個插件把這件事塞進了 DSH 側欄:底部常駐一枚徽標顯示剩餘金額,約 10 分鐘自動刷新,點開是明細麪板。它還順手附帶了 DeepSeek 峯谷時段的本地判定。
這是什麼¶
插件 dsh-bailian-coupon,倉庫 tagayamajin/dsh-bailian-coupon,維護者 tagayamajin。它做的事只有一件:用 RAM AccessKey 調阿里雲 BSS 的 QueryCashCoupons,把代金券餘額顯示在 DSH 側邊欄。
打包形態是客戶端 bundle(platform: web),插件市場分類爲「集成與連接」。許可證 MIT,npm 版本 0.1.1,要求 Node >=20、宿主 @deepseek-ai/dsh >=0.2.1-rc.3。
核心功能¶
先列出已覈實的能力,README 裏沒寫的能力這裏不加。
- 側欄底部徽標
券 ¥xxx.xx,約 10 分鐘自動刷新,點擊打開詳情面板。 - 詳情面板:剩餘總額、可用/全部張數、每張券的面值/餘額/到期時間/狀態、控制台鏈接。
- 設置頁:填 RAM AccessKey ID / Secret、刷新間隔,支持「保存並查詢」。
- 面板內直接配置:未配置時點開徽標,面板裏出現
AccessKey ID/AccessKey Secret兩個輸入框,不必先繞進設置頁。 - DeepSeek 峯谷時段:徽標右側圓點 + 詳情面板頂部顯示當前處於峯時還是谷時,峯時紅色、谷時綠色,並給出「下次切換」倒計時。
它是怎麼取到數據的¶
模型 API Key 查不了餘額,控制台之外唯一被 README 記錄的官方途徑是 BSS OpenAPI 的 QueryCashCoupons,Version 2017-12-14,RPC 風格,HMAC-SHA1 簽名,請求形如:
GET https://business.aliyuncs.com/?Action=QueryCashCoupons&Version=2017-12-14&...
返回的 Data.CashCoupon[] 中,Balance 是該券剩餘金額,NominalValue 是面值。插件只統計 Status === "Available" 的券爲「剩餘可用」,並按 nearestExpiry 找出最近到期時間。因爲 BSS 需要 RAM AccessKey 而不是模型 Key,所以首次使用要填一把只讀的 RAM 用戶 AK/SK。
憑據也可以用環境變量提供,優先級高於設置頁:
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "LTAI..."
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "..."
最小權限¶
給該 RAM 用戶附加只讀策略 AliyunBSSReadOnlyAccess,或用自定義策略:
{
"Version": "1",
"Statement": [
{ "Effect": "Allow", "Action": ["bss:DescribeCoupons"], "Resource": "*" }
]
}
設置頁裏的「包含現金餘額」開關會額外調用 QueryAccountBalance,需要 bss:DescribeAcccount;不開也能正常看券餘額。README 建議單獨建一個只讀 RAM 用戶專供本插件使用。
安裝¶
推薦從 npm / 插件市場安裝,包名 dsh-bailian-coupon,版本 0.1.1:
dsh plugin --profile web add dsh-bailian-coupon
也可以直接從 GitHub 倉庫安裝,要求本機裝有 Git:
dsh plugin --profile web add github:tagayamajin/dsh-bailian-coupon
github:規格由包管理器用git ls-remote解析,需要本機有git。沒裝 Git 或 github.com 直連不穩定時用下面的本地安裝。
裝好後要重啓 DSH,宿主只在啓動時掃描插件。重啓後側欄 Settings 上方出現 券 未配置 徽標,點開徽標,在面板裏填 RAM AccessKey ID / Secret,點「保存並查詢」;也可以在「設置 → 插件 → 百鍊優惠券」裏填。首次查詢成功後徽標變成 券 ¥300.00(README 裏的示例值)。
桌面版 profile 由桌面應用獨佔,命令行 dsh plugin --profile desktop add 會被拒絕,必須從 GUI 安裝,路徑是「設置 → 插件市場 → 本地安裝 / 從路徑安裝」,選中本倉庫目錄。link 安裝即可,改代碼後重啓生效。
沒裝 Git 時,下載源碼包解壓再本地安裝:
$zip = "$env:TEMP\dsh-bailian-coupon.zip"
Invoke-WebRequest -Uri "https://github.com/tagayamajin/dsh-bailian-coupon/archive/refs/heads/main.zip" -OutFile $zip
Expand-Archive -Path $zip -DestinationPath "$env:USERPROFILE\dsh-plugins" -Force
# 解壓目錄:$env:USERPROFILE\dsh-plugins\dsh-bailian-coupon-main
接着是「設置 → 插件市場 → 從路徑安裝」選解壓後的目錄,然後重啓 DSH Desktop。
配置項¶
| 鍵 | 默認 | 說明 |
|---|---|---|
accessKeyId |
— | RAM AccessKey ID,形如 LTAI... |
accessKeySecret |
— | RAM AccessKey Secret,保存後只顯示掩碼;留空保存表示不修改 |
refreshMinutes |
10 |
自動刷新間隔,1–1440 分鐘 |
includeCashNote |
false |
是否附帶查詢現金餘額 QueryAccountBalance,僅作附註 |
endpoint |
business.aliyuncs.com |
BSS 端點,一般不用改 |
holidays |
內置 2026 年表 | 追加節假日 ["YYYY-MM-DD", ...],用於 2027 年等未內置年份 |
replaceHolidays |
false |
爲 true 時用 holidays 完全替換內置節假日表 |
憑據保存在插件目錄的 .state/config.json,權限 0600,不提交、不打印。環境變量存在時以環境變量爲準,設置頁會顯示 envLocked 提示。
DeepSeek 峯谷時段¶
DeepSeek API 計費分峯谷,高峯時段單價爲谷時的 2 倍,谷時是峯價的一半。插件在徽標與詳情面板顯示當前時段,規則如下(北京時間):
| 時段 | 顏色 | 規則 |
|---|---|---|
| 峯時 | 紅色 #dc2626 |
週一至週五 09:00–12:00、14:00–18:00,法定節假日除外 |
| 谷時 | 綠色 #15803d |
其餘全部時間(夜間、午休、週末、法定節假日) |
規則在客戶端本地計算,北京時間固定 UTC+8,不依賴系統時區,也不額外發請求;每 30 秒自動重算一次,跨過 09:00/12:00/14:00/18:00 時會自動變色。面板會給出「下次切換」的準確時間,例如「下一次切換 2026-11-05 09:00 週四 → 峯時(558 分鐘後)」。內置 2026 年法定節假日表與調休安排;2027 年放假安排公佈前可用 holidays 補充,未內置年份按「僅週末」計算並提示 holidayDataAvailable: false。
本機 HTTP 接口¶
插件在迴環地址上提供幾個接口,非迴環請求返回 403,所有響應帶 cache-control: no-store,不含 Secret。
| 方法 | 路徑 | 作用 |
|---|---|---|
GET/HEAD |
/api/dsh-bailian-coupon/overview |
當前餘額,TTL 緩存,正常 10 分鐘內不重複請求 |
POST |
/api/dsh-bailian-coupon/refresh |
強制刷新 |
GET/HEAD |
/api/dsh-bailian-coupon/peak |
DeepSeek 峯谷時段狀態,本地規則計算,不請求阿里雲 |
GET/HEAD |
/api/dsh-bailian-coupon/config |
配置狀態,AK 已掩碼 |
POST |
/api/dsh-bailian-coupon/config |
保存配置,{accessKeyId, accessKeySecret, refreshMinutes, includeCashNote, endpoint},{clear:true} 清空憑據 |
適用場景與注意¶
適合已經在用 DSH 調百鍊、且代金券消費較快、需要頻繁確認餘額的場景。想把它接到 CI 或腳本里做額度檢查時,可以直接用上面的 /overview 接口。
要留意幾件事:
- 插件以當前 DSH 進程的權限運行,會用你填的 RAM AccessKey 訪問 BSS。安裝前應讀一遍源碼,確認
cordis.patch.yml的插入點和lib/下的實現,並覈對許可證(MIT)。 - 它只調用
QueryCashCoupons,可選附帶QueryAccountBalance;不讀取 DSH 裏保存的模型 API Key,也不向第三方發數據。 - 餘額顯示
¥0.00且列表爲空時,可能該券不是代金券(儲值卡等不在此接口),需要去優惠券控制台篩選「代金券」確認。 - 常見報錯的排查方向:
InvalidAccessKeyId多爲 AK ID 填錯或已刪除;SignatureDoesNotMatch多爲 Secret 填錯或本機時間偏差過大(簽名有效期 31 分鐘);NotAuthorized/NoPermission說明 RAM 用戶缺bss:DescribeCoupons;Throttling時把refreshMinutes調大。