Skip to content

Releases: JeffTsuiCUG/dsh-connect-minimaxcode

0.5.0 — 设备码自登录 + 每日签到

Choose a tag to compare

@JeffTsuiCUG JeffTsuiCUG released this 20 Oct 03:30

0.5.0(2026-10-20)

两个此前做不到的事:不用装桌面 App 也能登录,以及把每日签到做进插件。

一、自己登录(OAuth 设备码流)

桌面端只有一种登录方式:OAuth 2.0 设备码流(RFC 8628)。插件现在跑同一套流程:

  1. 插件向 account.minimax.cn/oauth2/device/code 申请设备码 → 拿到 8 位用户码与授权页
  2. 你在浏览器里用自己的 MiniMax 账号登录并确认
  3. 插件轮询 oauth2/token → 拿到 mmoat_ 令牌与 refresh token

实测契约(此前是未知的,这次全部核实):

POST /oauth2/device/code   → { device_code(43), expires_in: 300, interval: 3,
                               user_code: "XW6G-QEGA",
                               verification_uri: "https://account.minimax.cn/oauth-authorize" }
grant_type = urn:ietf:params:oauth:grant-type:device_code
  • 插件不接触密码、也不接触验证码 —— 唯一人工环节发生在你自己的浏览器、账号官方页面上
  • 用了 PKCE(S256) —— 设备码泄露也换不成令牌,verifier 不出进程
  • 不写客户端的文件 —— 凭据存在插件自己的 ~/.dsh/.minimaxcode-auth.json(0600、原子写)。客户端那两个文件的 generation 必须同步递增,写进去会被当成「在别处登录过」而要求重登
  • refresh token 会轮转,插件把新的一对写回自己的文件

二、每日签到

免费积分是每天签到送的,客户端有卡片但不会自动领 —— 得你自己点。插件现在能代劳:

GET  /minimax-cloud/api/v1/signin/status?timezone_id=Asia/Shanghai
POST /minimax-cloud/api/v1/signin/claim?timezone_id=Asia/Shanghai

实测结论:

  • 时区必须是 IANA 名字(Asia/Shanghai)。传偏移量或不传 → invalid timezone_id
  • 一轮七天:400 / 400 / 400 / 1000 / 400 / 400 / 1000 = 4000 积分
  • 签到积分 30 天有效(expire_at_ms 正好是领取日 +30 天的北京时间零点)
  • 按天幂等:当天重复领返回 claim_result: 2(今日已领),不重复发放

插件页面里能看到当天是第几天、值多少、还剩哪些天,并提供:

  • 「签到」按钮 —— 你点一下,插件领当天的额度
  • 「每天自动签到」开关(默认关) —— 只在上游明确说「当天可领」时才发请求、每天至多一次、不并发重试、不绕过验证,出错就显示原因

三、一处实测更正

mmoat_ 令牌既能打模型网关、也能打账户接口 —— 此前文档写「OAuth 打网关会 401」,是错的。实测两枚令牌读目录结果完全一致(MiniMax-M3、MiniMax-M3.1-Flash)。所以一次登录即可覆盖模型、积分与签到。

四、其它

  • 插件现在挂两条路由:状态路由(读)+ POST 动作路由(签到 / 登录 / 开关设置),仅限 loopback
  • 状态文档新增 signin 与 login 两节;状态里永远不出现令牌(有测试钉住)
  • 新增 36 个测试(签到解析与请求形状、设备码流各状态、凭据与状态落盘、状态文档两节),共 143 个测试全绿
  • 中英文 README 新增「自己登录,不装桌面 App」与「每日签到」两节,并补齐已知限制

升级后需重启一次 DSH,浏览器侧(胶囊与插件页卡片)才会加载新代码。

0.4.2 — 可发现性改进(npm 元数据双语化 + 关键词补齐)

Choose a tag to compare

@JeffTsuiCUG JeffTsuiCUG released this 19 Oct 15:13

0.4.2(2026-10-19)

可发现性改进(功能与行为不变)。

npm 的元数据随版本发布、发布后不可改,所以关键词与描述是「发版内容」的一部分:

  • 描述改为中英双语,一句话说清:零配置、Anthropic Messages 兼容、动态模型目录、积分余额与到期提示
  • 关键词补齐:dsh、credits、usage(现在确实提供积分与用量读数),此前只有 5 个
  • 仓库描述(GitHub 侧)也同步更新

同时按同族插件的惯例,仓库内保留了一份市场收录草稿与操作说明:awesome-dsh-plugin-submission/

顺带记一笔:界面胶囊放在输入框下方的 dock而不是输入框工具栏。工具栏是共享插槽,外壳自己的控件和其它插件都注册在那里,无法保证每个占用者都可见 —— 同族插件就因为这个原因丢过一次读数。

0.4.1 — 修正台账翻页参数与到期规则表述

Choose a tag to compare

@JeffTsuiCUG JeffTsuiCUG released this 19 Oct 14:01

0.4.1(2026-10-19)

修正 0.4.0 的两个问题。

1. 翻页参数用错了(真 bug)

台账接口会接受 page 参数然后忽略它 —— 每一次请求都会返回相同的前 N 条。真正生效的是 page_number。批次超过 100 笔的账号,会把同一页反复收集。

✗ ?page=1&page_size=100
✓ ?page_number=1&page_size=100

本机账号只有 23 笔,恰好落在一页内,所以 0.4.0 的表现看不出问题;已在测试里钉住这个参数,并加了「翻到没有新数据就停」的保护。

2. 到期规则表述更正

0.4.0 写「发放后 29 天到期」—— 那是拿 UTC 发放时刻去对 UTC 到期时刻的混算假象。真实规则是:

发放日 + 30 个自然日,按账户所在时区当日 00:00 失效

(北京时间即 16:00:00Z;用 08-31 → 09-30 这个月末样本排除了「+1 个日历月」的解释。)

另外存在 +365 天制式的批次,所以到期日一律读 expire_at_ms,不写死天数 —— 插件本来就是这么做的,文档此前不准确。

顺带更正两处 README 表述:

  • 过期不清零批次的 remaining_amount(实测有 -0.31 / -0.12 的负值残留),而是把过期批次排除在余额之外;所以总额以余额接口为准
  • 台账合计与余额在静止期逐位相等;两次采样之间看到的差额,是账户在这段时间被真实消耗的量,不是分页/精度/口径问题

未变的部分

7 天窗口的取值是合适的:积分消耗近似先进先出,快到期的批次基本都已被用完,所以「7 天内到期的金额」常常是 0 —— 真正有意义的信号是最早到期时间,界面两者都给。

0.4.0 — 积分即将过期提示

Choose a tag to compare

@JeffTsuiCUG JeffTsuiCUG released this 19 Oct 13:50

0.4.0(2026-10-19)

积分是会过期的。 这不是一池子积分,而是按笔发放、每批独立到期的批次 —— 客户端每天发一批,每批在发放日 + 30 个自然日到期(按账户所在时区当日 00:00 失效),于是形成一条逐日错开的 30 天阶梯。

⚠️ 本说明中的「29 天」是笔误,已在 0.4.1 更正为「+30 个自然日」。

GET https://agent.minimax.cn/minimax-cloud/api/v1/credit/details?page_number=1&page_size=100
→ details[] { granted_amount, remaining_amount, consumed_amount, granted_at_ms, expire_at_ms, credit_type }

实测本机 23 笔:09-20 发的在 10-20 到期、09-21 发的在 10-21 到期……另有一笔 08-25 发的在 2027-08-25 到期(一年期批次,credit_type 1=购买 / 2=签到)。到期日一律读 expire_at_ms。

新增

  • 插件页面卡片(设置 → 插件 → DSH Connect MiniMax Code):余额、赠送/购买拆分、7 天内到期、30 天内到期、最近一笔到期日、到期批次清单、本机 token 消耗与等效金额
  • 胶囊详情里同步加一行「即将过期」
  • 插件列表里显示一行摘要

两条口径

  1. 只统计仍有余额的批次 —— 已发放但用光的批次到期时没有东西可损失,算进去会让每个账号都看起来「快过期了」。
  2. 总额以余额接口为准,台账只用来回答「什么时候过期」:台账 remaining_amount 合计与余额 total_remaining_amount 在静止期逐位相等,两次采样之间的差额是期间真实消耗。

升级后需重启一次 DSH,插件页面卡片才会出现。

0.3.0 — 积分余额显示(对话框底下的胶囊)

Choose a tag to compare

@JeffTsuiCUG JeffTsuiCUG released this 19 Oct 13:36

0.3.0(2026-10-19)

新增:对话框输入框下方的胶囊显示 MiniMax Code 的剩余积分。 点开可看赠送/购买拆分、两次读取之间的消耗、本机累计 token 与按官方价目表折算的等效金额。

这推翻了 0.2.x 的「无法显示额度」

当时的调查按 credits / quota / summary 这类英文语义猜路径,真实接口却用的是 commerce / membership 这套计费域词汇,因此 14 个候选全部落空。后来从桌面 App 自己的运行日志(%APPDATA%\MiniMax\logs\api-*.log)里读出它每天真实调用的 URL,才定位到:

POST https://agent.minimax.cn/matrix/api/v1/commerce/get_membership_info
Authorization: Bearer <桌面 App 的 mmoat_ OAuth 令牌>
→ op_credit_summary { total_remaining_amount, purchased_remaining_amount, free_remaining_amount }

实现要点

  • 两套凭证:模型网关用 JWT(local-runtime.auth.json),账户接口用桌面 App 的 OAuth 令牌(auth/prod/<region>/mcode-public/auth.json),二者互不通用
  • 续期:OAuth 令牌约 1 小时过期,插件仅在过期时用 App 已存的 refresh token 续期,并把轮换后的新令牌按客户端原格式原子写回,generation 保持不变,桌面 App 登录态不受影响
  • 消耗是两路的:余额差值 = 真实积分消耗(账户级,含其它客户端并发);本机消耗 = 每次响应自带的 usage 累计,可按官方价目表折算等效金额
  • 不混三套单位:Code 积分 ≠ 已购积分池 ≠ 开放平台钱包(¥);只显示第一套
  • 取对字段:同一响应里的 total_remains_credit / opcredit_balance 是旧账,恒为 0

首次带浏览器侧插件

新增 lib/client.js(classic script,React 来自宿主的浏览器模块表),只注册一枚 composer dock 胶囊。升级后需重启一次 DSH 才会出现。

客户端 bundle 必须是 classic script:产出 ESM 会让 Web 启动直接失败(Cannot use import statement outside a module),这正是本插件历史上踩过的坑。

安装:

dsh plugin --profile desktop add dsh-connect-minimaxcode

0.2.3 — 同步上游模型变动(M3.1-Flash 正式发布)

Choose a tag to compare

@JeffTsuiCUG JeffTsuiCUG released this 19 Oct 12:32

0.2.3(2026-10-19)

同步 MiniMax Code 上游模型变动:

  • 下架:MiniMax-M2.7、MiniMax-M2.7-highspeed
  • 正式发布:此前以匿名形式灰度的测试模型(代号 "space bunny" / 太空兔)现为 MiniMax-M3.1-Flash
  • 当前上游实时目录为 MiniMax-M3、MiniMax-M3.1-Flash(上下文 512K、输出 128K、工具调用 / 推理 / 多模态均可)

插件侧同步:

  • 内置兜底模型列表更新为 M3、M3.1-Flash,测试与文档同步
  • package.json 声明 engines.dsh,便于插件市场显示兼容性

已登录用户的模型列表来自上游实时目录,无需更新插件即可看到模型变动;本次发布只是让未登录兜底与文档保持一致。

安装:

dsh plugin add dsh-connect-minimaxcode

v0.2.2

Choose a tag to compare

@JeffTsuiCUG JeffTsuiCUG released this 09 Oct 09:39

First release published automatically through GitHub Actions.

安装

dsh plugin --profile desktop add dsh-connect-minimaxcode

或从源码安装:

dsh plugin --profile desktop add github:JeffTsuiCUG/dsh-connect-minimaxcode

本版内容

自 0.2.1 以来无代码改动,差异仅在版本号、README 徽章、CI 工作流与依赖清理。构建产物与 0.2.1 逐字节相同。

新增

  • 自动发布:通过 npm Trusted Publishing(OIDC)发布,仓库中不存放任何长期有效令牌。npm 页面会显示该版本由此仓库构建(provenance)。

修复

  • lib/ 纳入版本管理。git 源安装拿到的是仓库原样内容,此前不含构建产物,导致 pnpm 判定需要构建并被 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 拦下。现在 git 源安装无需构建步骤。
  • 移除 react 依赖。客户端组件移除后已无任何引用,却仍留在 peerDependencies 中,会让使用者多装一个完全用不到的前端框架。
  • 同步锁文件。移除依赖后 pnpm-lock.yaml 未更新,任何 --frozen-lockfile 安装都会失败(包括本仓库的 CI)。
  • pnpm-workspace.yaml 填入有效值。allowBuilds 此前是工具生成的占位符文本而非布尔值。

文档

  • 新增「为什么没有额度显示」:记录额度接口的实测结论,避免重复调查。
  • 新增「同类插件」:推荐 dsh-connect-trae、dsh-qoder-connect、dsh-workbuddy-connect。
  • 安装章节说明 allowBuilds 拦截时的解法。

已验证

  • 71 项测试通过,tsc 零错误,构建成功
  • 从 npm 官方源实际安装,内容与构建产物一致
  • 在运行中的 DSH 中加载正常,模型调用端到端可用