@duke-dsh-plugins/dsh-token-stats 1.3.4 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -3
- package/client.js +561 -18
- package/index.js +808 -13
- package/package.json +9 -3
- package/typert.host.js +183 -0
package/README.md
CHANGED
|
@@ -27,8 +27,11 @@
|
|
|
27
27
|
| 🗂 汇总卡片 | 区间总 Tokens / 输入(含缓存) / 输出 |
|
|
28
28
|
| 💾 本地持久化 | 聚合结果落盘 `<DSH_HOME>/data/dsh-token-stats/stats.json`,冷启动只扫描新会话、秒开;删除该文件可强制全量重扫 |
|
|
29
29
|
| ⏱ 自动刷新 | 页面打开期间每 30s 刷新;历史回填期间每 2s 轮询进度 |
|
|
30
|
+
| 💰 套餐余额 | 输入框工具行(model 选择器左侧)内联显示当前 provider 的**余额/套餐用量**,跟随当前模型自动切换;支持 minimax / deepseek / kimi / openrouter / zhipu / mimo(小米);60s 轮询,点击立即刷新 |
|
|
30
31
|
| 🌗 主题适配 | 全部使用 DSH 设计 token,明暗主题自动跟随 |
|
|
31
32
|
|
|
33
|
+
> 套餐余额功能参考自 [dsh-musage](https://github.com/Thedeergod666/dsh-musage)(MIT),API Key 直接复用 DSH 模型设置里已配置的凭据(`credentials` 服务),无需重复配置。
|
|
34
|
+
|
|
32
35
|
## 安装
|
|
33
36
|
|
|
34
37
|
### 标准安装(推荐)
|
|
@@ -40,7 +43,7 @@
|
|
|
40
43
|
dsh plugin --profile web add /path/to/dsh-token-stats
|
|
41
44
|
|
|
42
45
|
# 正式发布:从 GitHub Release tarball 安装
|
|
43
|
-
dsh plugin --profile web add https://github.com/MoonlitDropOfBlood/dsh-token-stats/releases/download/v1.
|
|
46
|
+
dsh plugin --profile web add https://github.com/MoonlitDropOfBlood/dsh-token-stats/releases/download/v1.4.0/duke-dsh-plugins-dsh-token-stats-1.4.0.tgz
|
|
44
47
|
```
|
|
45
48
|
|
|
46
49
|
重启 DSH 后,打开 DSH Web UI 的设置(侧栏底部),左侧导航会出现 **Token 统计** 页。
|
|
@@ -55,6 +58,14 @@ dsh plugin --profile web add https://github.com/MoonlitDropOfBlood/dsh-token-sta
|
|
|
55
58
|
- 饼图展示区间内每个模型的总消耗占比。
|
|
56
59
|
- 顶部卡片给出区间总 Tokens / 输入 / 输出。
|
|
57
60
|
3. 下方 **每日活跃** 热力图展示更长时间范围:格子越多 = 容器越宽,最多覆盖近一年。
|
|
61
|
+
4. **会话输入框工具行**(model 选择器左侧)内联显示当前 provider 的套餐余额:
|
|
62
|
+
- DeepSeek / OpenRouter 显示余额(如 `¥43.97` / `$12.50`);
|
|
63
|
+
- MiniMax / Kimi / 智谱 显示 `5h X% | 7d Y%`(5 小时 / 7 天窗口已用百分比,悬停查看重置时间);
|
|
64
|
+
- 小米 MiMo 显示 `套餐 X% | 本月 Y%`(Token Plan 已用百分比,悬停查看重置时间;需在凭据里配 platform.xiaomimimo.com 的登录 Cookie,见下);
|
|
65
|
+
- 切换模型时自动切换 provider;每 60s 自动刷新,**点击读数立即强制刷新**;
|
|
66
|
+
- 未配置对应 API Key 或拉取失败时显示 `⚠`(悬停查看原因);当前 provider 不在支持列表时不占位。
|
|
67
|
+
|
|
68
|
+
> **MiMo(小米)配置**:MiMo 的用量走 dashboard admin API(非公开 endpoint),纯 API Key(Bearer)实测会被 401 拒绝,可靠凭证是浏览器登录 Cookie。打开 platform.xiaomimimo.com → 订阅管理,F12 → Network 任一 `/api/v1/tokenPlan/*` 请求 → 复制完整 `Cookie` 请求头值,粘到 DSH 凭据的 `XIAOMI_MIMO_COOKIE`(或把 API Key 配到 `XIAOMI_MIMO_API_KEY`,插件会先 Bearer 后 Cookie 自动重试)。
|
|
58
69
|
|
|
59
70
|
## 工作原理
|
|
60
71
|
|
|
@@ -67,14 +78,17 @@ DSH 会话日志(唯一权威数据源)
|
|
|
67
78
|
│
|
|
68
79
|
▼
|
|
69
80
|
TokenStatsService.getStats() ← ctx.remote.tokenStats.getStats()(Client 调用)
|
|
81
|
+
TokenStatsService.getQuota() ← ctx.remote.tokenStats.getQuota(provider, force)
|
|
70
82
|
│
|
|
71
|
-
|
|
72
|
-
|
|
83
|
+
├─ getStats → 设置面板「Token 统计」页(柱状图 / 饼图 / 热力图)
|
|
84
|
+
└─ getQuota → composer 工具行内联读数(conversation.input.right,
|
|
85
|
+
紧贴 model select 左侧;跟随当前会话模型自动切 provider)
|
|
73
86
|
```
|
|
74
87
|
|
|
75
88
|
- 数据按**本地日历天** × **模型**(`provider::model`)聚合;`total = input + output + cacheRead + cacheWrite`。
|
|
76
89
|
- 历史回填只统计插件启动前发生的调用,实时监听只统计启动后的,两者通过每个会话的事件序号水位线合并,不会重复。
|
|
77
90
|
- 模型/模型来自 `assistant/message` 的 `message.source`(kind = 'model'),无需自行解析请求头。
|
|
91
|
+
- 套餐余额:Host 半经 `credentials` 服务解析用户在模型设置里已配置的 API Key(引用命名遵循 `<ROUTE>_API_KEY` 约定),GET provider 官方端点(宿主全局 fetch 优先,无 fetch 时回退 `subprocess` curl);30s 缓存 + 失败指数退避(5s→30min),不落盘。
|
|
78
92
|
|
|
79
93
|
## 目录结构
|
|
80
94
|
|