dsh-subusage
在模型选择器左侧显示当前模型商(Z.ai / Kimi / Xiaomi)的订阅用量,设置页自动继承环境 Key、支持小米内嵌登录窗;拉取成功 🟢 失败 🔴。 适合需要直观监控Z.ai、Kimi等厂商订阅额度与限额状态的用户。
インストール
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:KouzakiUmi/dsh-subusageドキュメント
README 全文を読む ↗dsh-subusage —— DeepSeek Harness 订阅用量显示
在 DeepSeek Harness 的模型选择器旁以药丸显示当前模型商的订阅余量——档位色 + 图标一眼见状态(✓ 余 87% / ⚠ 7d 余 12% / ✕ 7d 已达限额);点开看详单(已用 % / Credits / 重置倒计时 / 套餐档位),设置页按厂商 tag 分页呈现完整面板。设计定稿见 docs/design-ux.md。
2026-09-30 首版(四家模型商 + 限额递归连坐 + Cookie 登录)
✨ 功能
- 四家模型商:Z.ai Coding(CN)/ Kimi Coding / Xiaomi MiMo / OpenCode Go,与 llm-pi-ai 的 provider 路由对齐。
- 一眼状态的小药丸:不带厂商名(右侧模型选择器即语境),最差窗优先——
[✓ 余 87%]/[⚠ 7d 余 12%]/[✕ 7d 已达限额](淡红底);多窗自动取最要紧的一窗,点开看完整详单。 - 设置页 tag 分页:每家独立面板——用量详情 + 凭据配置(Key / Cookie / 套餐类型),互不拥挤。
- 限额层级连坐(递归 🔴 判定):外层窗口(月 / 周 / 7 天)用尽时,内层窗口(5 小时 / 滚动)即便 0% 也标红并注明「受更长周期限额连累」。
- 小米 Cookie 登录:粘贴 Cookie 即可(内嵌登录窗暂不可用,见下方 Cookie 说明);粘贴内容自动归一化——
cookies.json/ 多行 name-value / 标准a=b; c=d三格式通吃。 - 凭据继承:Key 解析顺序 = 凭据服务 → 启动环境(与 llm-pi-ai 的
apiKeyEnv同名)→ 设置页手动填写兜底。
🎨 状态与色板(全界面统一)
| 已用 | 状态 | 颜色 | 徽标 | 药丸示例 |
|---|---|---|---|---|
| 0–70% | 可用 | 绿 | ✓ 可用 | ✓ 余 87% |
| 71–90% | 偏高 | 黄 | ⚠ 偏高 | ⚠ 7d 余 20% |
| 91–99% | 紧张 | 橙 | ⚠ 紧张 | ⚠ 5h 余 5% |
| ≥100% | 不可用 | 红 | ✕ 不可用 | ✕ 7d 已达限额 |
| 被连坐 | 不可用 | 红 | ✕ 受连累 | ✕ 5h 受连累 |
药丸答"还能用多少"(余),弹层/设置页答"用了多少"(已用 % + Credits + 重置倒计时)——两处均带限定词,无歧义。系统态:🟡 读取中 / ⚙ 需配置 / 🔴 拉取失败。
📥 安装
git clone https://github.com/KouzakiUmi/dsh-subusage.git
cd dsh-subusage
在 DeepSeek Harness 的 profile(~/.dsh/profiles/desktop)中以本地依赖挂载:
# "dsh-subusage": "file:D:/dsh-subusage"
# 并把 "dsh-subusage" 加入 dsh.profile.bundles 数组
随后在 profile 目录执行 dsh plugin install,完全重启 DeepSeek Harness。
⚠️ 本地插件建议在
node_modules里用 Junction 指向源码目录(改代码即生效,无需重装)。注意:junction 插件若 import@deepseek-ai/*核心包,必须在peerDependencies里声明它们——运行时解析器只对声明过的核心包做转发,否则模块加载静默失败、插件永不激活(详见 docs/development.md)。本仓库已声明。
🎮 使用
- 药丸:选中 Z.ai / Kimi / MiMo / OpenCode Go 模型时自动出现(不带厂商名,最差窗优先);点开看详单;缺 Key / Cookie 时药丸显示
⚙ 需配置并给指引而非报错。 - 设置页:设置 → 订阅用量——顶部总状态灯 + 厂商 tag(带状态点)+ 每家详情:进度条、
已用 x / 总计 y Credits、重置于、套餐/余额,下方是该家凭据配置。 - 小米(Cookie 登录):设置 → MiMo 面板 → 粘贴 Cookie → 点「保存设置」→「立即刷新」。获取与处理方法见下节。
🔑 环境变量
| 模型商 | 变量 | 说明 |
|---|---|---|
| Z.ai | ZAI_CODING_CN_API_KEY | 个人套餐免 org/project;团队套餐在设置页填组织/项目 ID |
| Kimi | KIMI_CODING_API_KEY | Kimi Code 控制台 key |
| MiMo | —(Cookie 会话) | 粘贴 Cookie(内嵌登录窗暂不可用,见下节) |
🍪 Cookie 获取与处理(MiMo)
内嵌登录窗(webview)在当前桌面壳版本下无法正常显示,现阶段只支持 Cookie 方式。步骤:
- 登录:Chrome 打开 并登录进控制台。
- 导出 Cookie(三选一,插件都能识别):
- DevTools 抄取:
F12→Application→Cookies→https://platform.xiaomimimo.com,把每条的Name和Value抄成name=value,用;连接; - 扩展导出
cookies.json(EditThisCookie 等):导出后整段 JSON 原文粘贴即可; - 「当前页面 Cookies」文本:扩展弹窗里的多行 name/value 清单,整段粘贴即可。
- DevTools 抄取:
- 粘贴:设置 → 订阅用量 → MiMo 面板 →
Cookie框粘贴(任意格式)→ 点开别处(失焦)会自动归一化为标准a=b; c=d串 → 点「保存设置」→「立即刷新」。
要点:
- 必须包含
api-platform_serviceToken(核心凭证,httpOnly)和userId;其余条目一并粘贴无妨。 - 导出时的引号会原样保留(部分 Cookie 值本身就是带引号的),无需手动处理。
- Cookie 保存在
~/.dsh/dsh-subusage.json,仅本机使用;过期后(接口报 401/登录已过期)重复上述步骤换新即可。 tokenPlan相关接口用 Cookie 鉴权,无需 API Key。 | OpenCode Go |OPENCODE_API_KEY| 与 dsh-opencode-go 的凭证引用同名 |
🧩 支持的数据
| 模型商 | 窗口 | 明细 | 其它 |
|---|---|---|---|
| Z.ai | 5 小时 / 每周 | Credits(已用/总计) | 套餐档(lite 等) |
| Kimi | 5 小时 / 7 天 | 百分比 | 套餐档(Allegro 等,取自 /me) |
| MiMo | 本周期(月度额度池) | Credits(已用/总计) | 重置于下月、套餐名、余额 |
| OpenCode Go | 滚动 / 每周 / 每月 | 百分比 | 各窗重置时间 |
📁 目录结构
dsh-subusage/
├── lib/
│ ├── index.js # Host:四家取数、归一化、限额连坐、subUsage remote
│ └── client.js # Client:药丸、设置页、小米 webview 桥、Cookie 归一化
├── locale/{zh,en}.json # 插件元数据文案
├── cordis.patch.yml # loader 条目(id: subusage)
├── tests/ # 单测 + 冒烟(node tests/run-all.mjs)
└── docs/ # 开发笔记、设计存档
🛠️ 技术细节
Host / Client 双平面
Host 经 subUsage remote(Typert 契约)向 Client 暴露 read / save;Client 只在 apply 里立即注册 slot,取数故障仅影响状态灯,不影响界面出现。
限额层级连坐
窗口层级:订阅池/月度 ⊃ 周/7 天 ⊃ 5 小时/滚动。外层 rate-limited(≥100% 或服务商标记)时逐级向下递归标记,反向不连坐。
Cookie 归一化
粘贴内容自动识别三种形态:cookies.json(EditThisCookie 导出)、多行 name/value 清单(跳过表头、剥离引号)、标准 a=b; c=d 串;失焦与保存时自动转换。
各家 API 契约
| 模型商 | 端点 | 备注 |
|---|---|---|
| Z.ai | open.bigmodel.cn/api/monitor/usage/quota/limit?type=1 | data.limits[]:unit 3=5h、unit 6=周,percentage 为 0–100 |
| Kimi | api.kimi.com/coding/v1/usages + /me | 响应双格式并存:usages.limit_5h/7d.used_ratio(0–1)与新版 usage/limits[] |
| MiMo | platform.xiaomimimo.com/api/v1/{balance,tokenPlan/detail,tokenPlan/usage} | percent 为 0–1 小数(需 ×100);currentPeriodEnd 即下月重置 |
| OpenCode Go | opencode.ai/zen/go/v1/usage | 三窗在 usage 外层里;percent 为 0–100 |
⚙️ 测试与发布(维护者)
node tests/run-all.mjs # 归一化/级连/Cookie/冒烟 全量回归
兼容性:严格匹配 DeepSeek Harness 核心 0.2.0-rc.2(peerDependencies 精确版本,含 @deepseek-ai/dsh 本体;不匹配的环境会拒绝加载)。升级核心后需同步修改版本声明。
改 Host 侧需完全重启 DeepSeek Harness 才生效;仅 Client 改动在窗口内 Ctrl+R 即可。发版前用真实 Key 跑一遍四家取数(Key 存于用户级环境变量)。
⚠️ 版权与许可
MIT License。与 DeepSeek Harness 及各模型商服务无官方关联;API 为公开接口的自助调用,请遵守各服务商的使用条款。
🎮 使用
- 药丸:选中 Z.ai / Kimi / MiMo / OpenCode Go 模型时自动出现(不带厂商名,最差窗优先);点开看详单;缺 Key / Cookie 时药丸显示
⚙ 需配置并给指引而非报错。 - 设置页:设置 → 订阅用量——顶部总状态灯 + 厂商 tag(带状态点)+ 每家详情:进度条、
已用 x / 总计 y Credits、重置于、套餐/余额,下方是该家凭据配置。 - 小米(Cookie 登录):设置 → MiMo 面板 → 粘贴 Cookie → 点「保存设置」→「立即刷新」。获取与处理方法见下节。
🔑 环境变量
| 模型商 | 变量 | 说明 |
|---|---|---|
| Z.ai | ZAI_CODING_CN_API_KEY | 个人套餐免 org/project;团队套餐在设置页填组织/项目 ID |
| Kimi | KIMI_CODING_API_KEY | Kimi Code 控制台 key |
| MiMo | —(Cookie 会话) | 粘贴 Cookie(内嵌登录窗暂不可用,见下节) |