dsh-bailian-coupon:在 DSH 側欄看阿里雲百鍊代金券餘額

前言

用 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 裏沒寫的能力這裏不加。

  1. 側欄底部徽標 券 ¥xxx.xx,約 10 分鐘自動刷新,點擊打開詳情面板。
  2. 詳情面板:剩餘總額、可用/全部張數、每張券的面值/餘額/到期時間/狀態、控制台鏈接。
  3. 設置頁:填 RAM AccessKey ID / Secret、刷新間隔,支持「保存並查詢」。
  4. 面板內直接配置:未配置時點開徽標,面板裏出現 AccessKey ID / AccessKey Secret 兩個輸入框,不必先繞進設置頁。
  5. 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 調大。

目錄頁與倉庫

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜