DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

tagayamajin /

tagayamajin/dsh-bailian-coupon

Verified

阿里云百炼(Model Studio)代金券余额:在 DSH 侧栏显示剩余金额,支持面板内直接填 RAM AccessKey,10 分钟缓存

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@7933ff3b

dsh-bailian-coupon

在 DeepSeek Harness(DSH)侧边栏常驻显示阿里云百炼优惠券(代金券)剩余余额的插件。

  • 侧边栏底部徽标:券 ¥xxx.xx,约 10 分钟自动刷新,点击打开详情面板。
  • 详情面板:剩余总额、可用/全部张数、每张券的面值/余额/到期时间/状态、控制台链接。
  • 设置页:填写 RAM AccessKey ID / Secret、刷新间隔,支持"保存并查询"。
  • 面板内也能直接填:未配置时点开徽标,面板里出现 AccessKey ID / AccessKey Secret 两个输入框。
  • DeepSeek 峰谷时段:徽标右侧圆点 + 详情面板顶部显示当前处于峰时还是谷时——峰时红色、谷时绿色,并提示「下次切换」倒计时。

插件市场分类:集成与连接 · English: Show Alibaba Cloud Bailian (Model Studio) cash-coupon balance in the DSH sidebar.

它是怎么工作的

模型 API Key(sk-... / sk-sp-...)没有查询余额的接口,控制台之外的唯一官方途径是 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; 不开也能正常看券余额。)

安装

方式一:从 npm / 插件市场安装(推荐)

# 已发布到 npm(0.1.1),一条命令安装
dsh plugin --profile web add dsh-bailian-coupon

也可以直接从 GitHub 仓库安装(要求本机装有 Git;没装 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(示例)。

方式二:从本地源码 link 安装(本地开发)

桌面版 profile 由桌面应用独占,命令行 dsh plugin --profile desktop add 会被拒绝, 必须从 GUI 安装。

  1. 打开 DSH → 设置 → 插件市场 → 本地安装 / 从路径安装,选择本仓库目录 (link 安装即可,改代码后重启生效)。
  2. 重启 DSH Desktop(宿主只在启动时扫描插件)。
  3. 同上:填 AK/SK → 保存并查询。

方式三:没有 Git 环境(下载 zip 后本地安装)

github: 安装方式依赖本机 git 命令;如果没装 Git,下载源码包再本地安装即可:

  1. 下载源码包:https://github.com/tagayamajin/dsh-bailian-coupon/archive/refs/heads/main.zip
  2. 解压到任意目录,例如 %USERPROFILE%\dsh-plugins\dsh-bailian-coupon
  3. 打开 DSH → 设置 → 插件市场 → 从路径安装,选择解压后的目录(link 安装)
  4. 重启 DSH Desktop,点侧栏 券 徽标填 AK/SK

PowerShell 一条命令搞定下载与解压:

$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

配置项

键 默认 说明
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 其余全部时间(夜间、午休、周末、法定节假日)
  • 面板会显示「下次切换」的准确时间(如「下一次切换 2026-11-05 09:00 周四 → 峰时(558 分钟后)」)。
  • 规则在客户端本地计算(北京时间固定 UTC+8,不依赖系统时区),不额外发请求、不走网络; 每 30 秒自动重算一次,跨越 09:00/12:00/14:00/18:00 时会自动变色。
  • 内置 2026 年法定节假日表(元旦/春节/清明/劳动节/端午/中秋/国庆)与调休安排;2027 年放假安排公布前, 可通过配置项 holidays 补充,未内置年份会按「仅周末」计算并提示 holidayDataAvailable: false。

HTTP 接口(本机回环,非回环返回 403)

方法 路径 作用
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} 清空凭据)

所有响应带 cache-control: no-store,不含 Secret。

为什么模型 Key 不行

百炼的模型 API Key 只用于推理调用,阿里云没有开放「按模型 Key 查余额/券」的接口; QueryCashCoupons 属于账号级 BSS 服务,必须用 RAM AK/SK 签名。插件不会读取 DSH 里保存的模型密钥。

测试

& "C:\Users\w\AppData\Local\Programs\DeepSeek Harness\resources\runtime\primary-runtime\dependencies\node\bin\node.exe" tests\bss.test.mjs
& "...\node.exe" tests\peak.test.mjs
& "...\node.exe" tests\routes.test.mjs
& "...\node.exe" tests\client.test.mjs
  • tests\bss.test.mjs:签名算法(含官方示例对拍)、券汇总逻辑。
  • tests\peak.test.mjs:峰谷判定(09:00/12:00/14:00/18:00 边界)、下次切换、2026 节假日、自定义节假日表。
  • tests\routes.test.mjs:stub 宿主上下文 + 本地 HTTP 端到端,覆盖无凭据/方法守卫/配置掩码与落盘/ stub BSS 的刷新与缓存/错误映射/峰谷路由。
  • tests\client.test.mjs:客户端 bundle 注册、插槽、面板渲染、本地峰谷算法。

故障排查

症状 处理
InvalidAccessKeyId AK ID 填错或已删除,重新生成(AK 管理)
SignatureDoesNotMatch Secret 填错,或本机时间偏差过大(签名有效期 31 分钟)
NotAuthorized/NoPermission RAM 用户缺 bss:DescribeCoupons,附加 AliyunBSSReadOnlyAccess
Throttling 被限流,调大 refreshMinutes
余额 ¥0.00 且列表为空 该券可能不是代金券(储值卡等不在此接口),去优惠券控制台筛选「代金券」确认
徽标一直是「未配置」 环境变量 / 设置页都没读到凭据;保存后点一次「保存并查询」

目录结构

package.json          # dsh.bundle.patch + dsh.client 声明
cordis.patch.yml      # 宿主侧插入点
lib/bss.js            # BSS 签名与查询(node:crypto + fetch,零依赖)
lib/peak.js           # DeepSeek 峰谷规则(北京时间、节假日表、下次切换)
lib/index.js          # 宿主插件:5 条 /api/dsh-bailian-coupon/* 路由 + 配置持久化
lib/client.js         # 客户端 bundle(手写 CJS,仅依赖 react / react-dom/client,含本地峰谷计算)
tests/*.test.mjs      # 离线测试

隐私与权限

  • 插件只做一件事:用你填的 RAM AccessKey 调阿里云 BSS QueryCashCoupons(可选附带 QueryAccountBalance)。
  • 凭据只保存在本机插件目录 .state/config.json(权限 0600,已 gitignore),不上传、不打印;HTTP 接口返回的 Secret 一律掩码。
  • 不读取 DSH 里保存的模型 API Key,不向任何第三方发送数据。
  • 建议单独建一个只读 RAM 用户(附加 AliyunBSSReadOnlyAccess)专供本插件使用。

许可证

MIT © 2026 dsh-bailian-coupon contributors。见 LICENSE。

—/ 5

No ratings yet

Verified DSH bundle

Commit 7933ff3bf700

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout