dsh-minimax-usage

by Floating-Dreaming

用量与计费github 检测到 manifest package.json#dsh收录于 08-17

Adds a "用量" section to the DSH Settings page that shows your MiniMax Token Plan usage (5h and weekly windows with reset countdowns), per-model breakdown, and video bonus credits; fetches `/v1/token_plan/remains` via a trusted plugin that holds the API key, auto-hides when no key is configured. MIT.

安装

dsh plugin --profile web add github:Floating-Dreaming/dsh-minimax-usage#path:/trusted-plugin

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

DSH (DeepSeek Harness) trusted plugin that exposes the user's MiniMax Token Plan usage data via the minimaxUsage service.

What it does

Runs in the DSH main Node process and provides:

ctx.minimaxUsage.getUsage({ force?: boolean })  // Promise<{ ok, models, ... }>
ctx.minimaxUsage.hasApiKey()                    // boolean

Backed by https://www.minimaxi.com/v1/token_plan/remains. Features:

  • 60s in-memory cache + 10s rate limit
  • 2-attempt retry on transient errors (timeout / 5xx / 429)
  • API key resolved from MINIMAX_API_KEY env var or ~/.dsh/.credentials.yaml
  • Normalized response shape with plan-level remainingPercent* fields

Installation

This is a DSH trusted plugin, not a regular npm dependency. DSH loads it via pnpm workspace + cordis composition patch. See the parent repo dsh-minimax-usage for the install.ps1 / install.sh scripts that wire it into DSH.

If you want to publish to your own npm registry:

# from this directory
npm login
npm publish --access public

Then in the DSH profile's package.json:

{
  "dependencies": {
    "@floatingdeaming/minimax-usage": "^1.0.0"
  }
}

…and run pnpm install in the profile root.

API key

Set MINIMAX_API_KEY to a Token Plan / Subscription key (not the metered-billing key). Sources checked in order:

  1. process.env.MINIMAX_API_KEY
  2. ~/.dsh/.credentials.yaml — MINIMAX_API_KEY: '<value>'

Changes take effect after restarting DSH.

Response shape

{
  ok: true,
  statusCode: 0,
  summary: '查询成功',
  models: [
    {
      modelName: 'general',
      total5h: 0,
      remaining5h: 0,
      used5h: 0,
      usedPercent5h: 17,
      remainingPercent5h: 83,    // ← from current_interval_remaining_percent
      status5h: 1,
      windowStart: '2026-08-15T12:00:00.000Z',
      windowEnd:   '2026-08-15T16:00:00.000Z',
      resetIn5hMs: 9758306,
      resetIn5hLabel: '2:42:39',
      // same shape for totalWeek/remainingWeek/usedWeek/usedPercentWeek/remainingPercentWeek
    },
    // ...
  ],
  fetchedAt: '2026-08-15T13:17:21.569Z',
  cached: false
}

On error:

{
  ok: false,
  statusCode: 1004,           // or 401, 503, null
  summary: '请检查 MINIMAX_API_KEY(需要 MiniMax Token Plan/Subscription Key,不是按量计费 API Key)',
  models: [],
  errorCode: 'auth_error',    // missing_key | auth_error | rate_limited | http_error | network_error | timeout | api_error
  fetchedAt: '2026-08-15T13:17:21.569Z'
}

Why a trusted plugin?

DSH sandboxes dynamic plugin code — they cannot make network calls or read env vars directly. To bridge to MiniMax's API we need a plugin that runs in the DSH main process, which DSH calls "trusted". The dynamic client-side plugin (cordis_define

  • cordis_run in a session) calls ctx.minimaxUsage.getUsage() via Host RPC.

License

MIT

原始 README: https://github.com/Floating-Dreaming/dsh-minimax-usage/blob/main/trusted-plugin/README.md ↗