@duke-dsh-plugins/dsh-token-stats

中文文档
1.10.0发布于 2026/11/04MITES Module构建来源已验证近 30 天下载 2933

Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu/mimo/opencode-go; mimo uses the dashboard cookie since MiMo e

原始使用文档
文档目录9 节
  1. DeepSeek Harness Token 用量统计插件
  2. 功能
  3. 安装
  4. 标准安装(推荐)
  5. 使用
  6. 工作原理
  7. 目录结构
  8. 开发
  9. License

DeepSeek Harness Token 用量统计插件

DSH plugin MIT License Web UI

中文


为 DeepSeek Harness(DSH) Web UI 打造的 Token 消耗统计插件:在设置面板里一目了然每个模型每天、每个统计区间的 token 用量。

功能

功能说明
📊 两个 Tab近 7 天 / 近 30 天,两个区间都包含今天
📈 堆叠柱状图统计区间内每个模型每天的消耗(悬停查看具体数字)
🥧 饼图统计区间内每个模型的总消耗占比 + 图例(精确值 + 百分比)
🔥 GitHub 风格热力图「近一年」每日活跃;天数随容器宽度自适应,最多显示 365 天(一年)
🗂 汇总卡片区间总 Tokens / 输入(含缓存) / 输出
💾 本地持久化聚合结果落盘 <DSH_HOME>/data/dsh-token-stats/stats.json,冷启动只扫描新会话、秒开;删除该文件可强制全量重扫
⏱ 自动刷新页面打开期间每 30s 刷新;历史回填期间每 2s 轮询进度
💰 套餐余额输入框工具行(model 选择器左侧)内联显示当前 provider 的余额/套餐用量,跟随当前模型自动切换;支持 minimax / deepseek / kimi / openrouter / zhipu / mimo(小米)/ opencode-go;60s 轮询,点击立即刷新
🌗 主题适配全部使用 DSH 设计 token,明暗主题自动跟随

套餐余额功能参考自 dsh-musage(MIT),API Key 直接复用 DSH 模型设置里已配置的凭据(credentials 服务),无需重复配置。

安装

标准安装(推荐)

本插件是标准 DSH bundle:package.json 声明 dsh.bundle.patch,包内自带 cordis.patch.yml,用官方 dsh plugin 命令安装:

# 本地开发:pnpm 软链到本仓库,改代码即生效(无需重新复制)
dsh plugin --profile web add /path/to/dsh-token-stats

# 正式发布:从 GitHub Release tarball 安装
dsh plugin --profile web add https://github.com/MoonlitDropOfBlood/dsh-token-stats/releases/download/v1.10.0/duke-dsh-plugins-dsh-token-stats-1.10.0.tgz

重启 DSH 后,打开 DSH Web UI 的设置(侧栏底部),左侧导航会出现 Token 统计 页。

dsh plugin add 把插件装成 profile 的 npm 依赖并追加到 dsh.profile.bundles,启动时 DSH 自动应用包内的 cordis.patch.yml 挂载插件。卸载:dsh plugin --profile web remove dsh-token-stats。

使用

  1. 打开 设置 → Token 统计。
  2. 在 近 7 天 / 近 30 天 两个 Tab 间切换:
    • 柱状图展示区间内每天、每个模型的消耗(堆叠)。
    • 饼图展示区间内每个模型的总消耗占比。
    • 顶部卡片给出区间总 Tokens / 输入 / 输出。
  3. 下方 每日活跃 热力图展示更长时间范围:格子越多 = 容器越宽,最多覆盖近一年。
  4. 会话输入框工具行(model 选择器左侧)内联显示当前 provider 的套餐余额:
    • DeepSeek / OpenRouter 显示余额(如 ¥43.97 / $12.50);
    • MiniMax / Kimi / 智谱 显示 5h X% | 7d Y%(5 小时 / 7 天窗口已用百分比,悬停查看重置时间);
    • 小米 MiMo 与其他 provider 同规则:未配置时显示 ⚠;配置 dashboard 登录 Cookie(环境变量 XIAOMI_MIMO_COOKIE,见下)后显示官方 剩余 X% + 周重置倒计时;Cookie 失效时自动退回本地用量统计 今日 X · 7d Y,不报错;
    • OpenCode Go 显示 5h X% | 7d Y% | 30d Z%(三个窗口的已用百分比,来自官方 opencode.ai/zen/go/v1/usage 接口);
    • 切换模型时自动切换 provider;每 60s 自动刷新,点击读数立即强制刷新;
    • 未配置对应 API Key 或拉取失败时显示 ⚠(悬停查看原因);当前 provider 不在支持列表时不占位。

MiMo(小米)配置:MiMo 与其他 provider 同规则——不配置就没有读数(composer ⚠、设置页无卡片)。它没有 API Key 配额接口(token-plan-* 与 api. 主机只有 OpenAI 兼容的 /v1 推理 API,实测所有 Bearer 配额路径均 404;key 还与区域强绑定,CN key 在 SGP/AMS 主机一律 401),唯一配额数据源是 dashboard 账号会话 Cookie。

想要官方剩余用量百分比:打开 platform.xiaomimimo.com 登录后,F12 → Network 任一 /api/v1/* 请求 → 复制完整 Cookie 请求头(含 api-platform_serviceToken 与 userId)→ 设置环境变量 XIAOMI_MIMO_COOKIE(写入 DSH 进程环境后重启生效;凭据库里已存过该 ref 的话直接可用)。插件内置最小 cookie jar:服务端若在响应里 Set-Cookie 续发会话会被自动吸收并写回凭据库(跨轮询、跨重启生效);Cookie 彻底失效时自动静默退回本地用量统计(今日 / 近 7 天消耗),不会报错。composer 读数按 route id 匹配(xiaomi-mimo / xiaomimimo / xiaomi-token-plan-cn / 名字含 xiaomi 或 mimo 均可)。

OpenCode Go 配置:与其他 provider 同规则——不配置就没有读数(composer ⚠、设置页无卡片)。在 DSH 模型设置里给 opencode-go 这个 provider 填好 API Key 即可(插件读 OPENCODE_GO_API_KEY,同时也认 OPENCODE_API_KEY / OPENCODE_GO_KEY / OPENCODE_ZERO_API_KEY 这几个同义变量名)。数据来自 OpenCode 官方 JSON 接口 GET https://opencode.ai/zen/go/v1/usage(Authorization: Bearer <key>),返回 rolling / weekly / monthly 三个窗口的已用百分比(5 小时滚动 / 7 天 / 30 天)与重置时间。⚠️ 这个接口只给百分比、不给金额(社区插件显示的美元金额是按硬编码额度自己算的),所以插件只渲染百分比。

工作原理

DSH 会话日志(唯一权威数据源)
  ├─ LIVE   : session/event  → assistant/message(usage)   [插件启动后实时累计]
  ├─ HISTORY: sessionQuery.readSession() → 回填历史        [仅扫描从未回填过的会话]
  ├─ DEDUP  : 按 session+seq 水位线去重,绝不重复计数
  └─ PERSIST: 聚合 + 水位线落盘 stats.json(防抖写盘 + 停止时 flush)
        │
        ▼
TokenStatsService.getStats()   ← ctx.remote.tokenStats.getStats()(Client 调用)
TokenStatsService.getQuota()   ← ctx.remote.tokenStats.getQuota(provider, force)
        │
        ├─ getStats → 设置面板「Token 统计」页(柱状图 / 饼图 / 热力图)
        └─ getQuota → composer 工具行内联读数(conversation.input.right,
                      紧贴 model select 左侧;跟随当前会话模型自动切 provider)
  • 数据按本地日历天 × 模型(provider::model)聚合;total = input + output + cacheRead + cacheWrite。
  • 历史回填只统计插件启动前发生的调用,实时监听只统计启动后的,两者通过每个会话的事件序号水位线合并,不会重复。
  • 模型/模型来自 assistant/message 的 message.source(kind = 'model'),无需自行解析请求头。
  • 套餐余额:Host 半经 credentials 服务解析用户在模型设置里已配置的 API Key(引用命名遵循 <ROUTE>_API_KEY 约定;凭据库未命中时回退同名环境变量),GET provider 官方端点(宿主全局 fetch 优先,无 fetch 时回退 subprocess curl);30s 缓存 + 失败指数退避(5s→30min),不落盘。小米 MiMo 没有 API Key 配额接口:配了 dashboard Cookie(XIAOMI_MIMO_COOKIE)走官方剩余用量 %,Cookie 失效时静默退回本地用量统计;未配置则与其他 provider 一样视为未配置。OpenCode Go 走官方 JSON 接口 opencode.ai/zen/go/v1/usage,给出 5h / 7d / 30d 三个窗口的已用百分比。

目录结构

dsh-token-stats/
├── index.js            # Host 半:TokenStatsService(Remote 服务,采集 + 回填)
├── client.js           # Client 半:设置页「Token 统计」UI bundle
├── typert.host.js      # Typert Host manifest(tokenStats/getStats 描述)
├── cordis.patch.yml    # dsh bundle patch(挂载行)
├── .github/workflows/  # GitHub Actions 发布
├── AGENTS.md           # 面向 AI agent 的开发指南(含踩坑)
└── LICENSE             # MIT

开发

npm run check           # node --check index.js client.js typert.host.js
dsh plugin --profile web add /path/to/dsh-token-stats   # 安装/重装到本机 DSH profile

详见 AGENTS.md——记录了 DSH 正式插件(Host/Client/Typert 三件套)的完整机制和踩坑。

License

本项目遵循 MIT License。

本项目是基于 DeepSeek Harness 构建的社区插件,并非 DeepSeek 官方产品。

版本与发布记录

@duke-dsh-plugins/dsh-token-stats 共发布 21 个版本,首次发布于 2026/08/23;过去 12 个月发布了 21 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.10.0latest2026/11/048 天前
1.9.02026/11/049 天前
1.8.02026/10/2717 天前
1.7.42026/10/2024 天前
1.7.32026/10/1925 天前
1.7.22026/10/011 个月前

关于 @duke-dsh-plugins/dsh-token-stats 的常见问题

@duke-dsh-plugins/dsh-token-stats 是什么?

Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu/mimo/opencode-go; mimo uses the dashboard cookie since MiMo e

如何安装 @duke-dsh-plugins/dsh-token-stats?

在项目目录运行 npm install @duke-dsh-plugins/dsh-token-stats,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@deepseek-ai/dsh(>=0.1.4-rc.2 <0.3.0 || ^0.2.1-rc.0)、@deepseek-ai/cordis(^4.0.1)、@deepseek-ai/dsh-typert-protocol(^0.1.0-rc.7 || ^0.2.0-rc.1 || ^0.2.1-rc.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@duke-dsh-plugins/dsh-token-stats 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/duke-dsh-plugins__dsh-token-stats 是否存在。

@duke-dsh-plugins/dsh-token-stats 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@duke-dsh-plugins/dsh-token-stats 可以商用吗?

@duke-dsh-plugins/dsh-token-stats 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@duke-dsh-plugins/dsh-token-stats 的下载量有多少?

根据 npm 官方下载统计,@duke-dsh-plugins/dsh-token-stats 在 2026/10/13 – 2026/11/11 这 30 天内被下载 2,933 次,日均约 98 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@duke-dsh-plugins/dsh-token-stats 还在维护吗?

最新版本 1.10.0 发布于 2026/11/04(8 天前);至今共发布 21 个版本,其中过去 12 个月发布了 21 个;首次发布于 2026/08/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。