dsh-router-core 0.2.0 → 0.3.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 +22 -1
- package/lib/client-registry.js +744 -99
- package/lib/client.js +744 -99
- package/lib/index.js +1066 -50
- package/lib/types/llm/adapter.d.ts +2 -0
- package/lib/types/router/index.d.ts +34 -5
- package/lib/types/router/usage-store.d.ts +93 -0
- package/lib/types/router/usage-tokens.d.ts +118 -0
- package/lib/types/shared.d.ts +69 -0
- package/lib/types/supplier-config.d.ts +15 -1
- package/package.json +1 -1
- package/src/client/CombosTab.tsx +28 -18
- package/src/client/RouterView.tsx +15 -2
- package/src/client/StatsTab.tsx +521 -0
- package/src/client/router.css +397 -0
- package/src/client/workspace-mount.tsx +2 -9
- package/src/index.ts +51 -3
- package/src/llm/adapter.test.ts +108 -0
- package/src/llm/adapter.ts +18 -6
- package/src/router/index.ts +461 -49
- package/src/router/models-cache.test.ts +269 -0
- package/src/router/precise-dispatch.test.ts +198 -0
- package/src/router/usage-store.ts +499 -0
- package/src/router/usage-tokens.ts +327 -0
- package/src/router/usage.test.ts +558 -0
- package/src/shared.ts +77 -0
- package/src/supplier-config.ts +30 -2
- package/src/suppliers/loader.ts +2 -1
- package/src/suppliers/nvidia/plugin.ts +2 -3
- package/src/suppliers/opencode/plugin.ts +2 -3
- package/src/suppliers/openrouter/plugin.ts +2 -3
- package/src/suppliers/registry.ts +7 -2
package/README.md
CHANGED
|
@@ -32,6 +32,21 @@ OpenAI 兼容端点,把请求路由到内部供应商。装好即用,不用多
|
|
|
32
32
|
左侧边栏「记忆系统」上方有 **路由系统** 入口,点击打开中心栏面板:
|
|
33
33
|
|
|
34
34
|
- **返回会话** — 左侧按钮,关闭面板回到聊天;
|
|
35
|
+
- **概览** — 用量看板(默认页):
|
|
36
|
+
- 周期切换 **今日 / 24 小时 / 7 天 / 30 天**;
|
|
37
|
+
- 汇总卡:总请求(含成功率)、输入 Tokens、输出 Tokens、缓存 Tokens、平均耗时(含首字节);
|
|
38
|
+
- Token 趋势折线图:鼠标悬停 / 触摸点选 / 键盘 `←` `→`(`Home` `End` 到两端,`Esc` 取消)
|
|
39
|
+
看每个时段;读数和峰值用 K/M 缩写,精确值在悬停提示里;
|
|
40
|
+
- Top 榜:按供应商 / 按模型(请求数带失败计数);
|
|
41
|
+
- 最近请求:时间 / 模型 / 供应商 / in↑ out↓ / 耗时,显示最近 10 条;
|
|
42
|
+
- **清空** — 清掉全部用量统计(不影响供应商、账号、组合配置);
|
|
43
|
+
- 数据落盘 `data/usage.json`(按天聚合 + 最近 500 条明细 + 累计计数)。
|
|
44
|
+
token 口径:上游返回 `usage` 就用真值(分散在多帧时按字段取最大值合并);
|
|
45
|
+
上游不发时按 ~4 字符/token 估算,面板上标 `~`。**失败请求不估算**——
|
|
46
|
+
它没到上游,编造输入 token 只会把总量灌水;
|
|
47
|
+
缓存口径:OpenAI 系 `prompt_tokens` **含**缓存,Claude 系不含(单报
|
|
48
|
+
`cache_read_input_tokens`),归一时统一折成「prompt 含缓存」,
|
|
49
|
+
所以「缓存 Tokens」是「输入 Tokens」的**子集**,不是并列的第三种;
|
|
35
50
|
- **供应商** — 供应商卡片(内置 / 插件分组),点击进入详情:
|
|
36
51
|
- **链接池** — 账号列表(冷却/禁用/健康数/积分),支持删除;
|
|
37
52
|
- **加链接** — 按供应商能力弹出不同流程:URL 登录(生成链接 → 浏览器登录 → 回调)、
|
|
@@ -84,6 +99,9 @@ curl -X POST http://localhost:3080/v1/chat/completions \
|
|
|
84
99
|
| `/keys/toggle` | POST | `{id, isActive}` |
|
|
85
100
|
| `/keys/delete` | POST | `{id}` |
|
|
86
101
|
| `/settings` | GET/PATCH | `{requireApiKey}` |
|
|
102
|
+
| `/stats` | GET | 用量统计 `?period=today\|24h\|7d\|30d`(汇总 + Top 榜 + 最近请求 20 条) |
|
|
103
|
+
| `/stats/chart` | GET | 趋势图数据 `?period=…`(today/24h = 24 小时桶,7d/30d = 天桶) |
|
|
104
|
+
| `/stats/clear` | POST | 清空全部用量统计 |
|
|
87
105
|
| `/suppliers/:id/login` | POST | 生成登录链接 |
|
|
88
106
|
| `/suppliers/:id/login/callback` | POST | `{callbackUrl}` → 加账号 |
|
|
89
107
|
| `/suppliers/:id/models` | GET | 模型 + 启用状态 |
|
|
@@ -94,12 +112,15 @@ curl -X POST http://localhost:3080/v1/chat/completions \
|
|
|
94
112
|
```
|
|
95
113
|
浏览器(client 半)
|
|
96
114
|
└─ 侧边栏「路由系统」+ 中心栏面板(RouterView, 含返回会话按钮)
|
|
97
|
-
├─
|
|
115
|
+
├─ StatsTab 概览:用量看板(周期切换 + 汇总卡 + 折线趋势 + Top 榜 + 最近请求)
|
|
116
|
+
├─ RouterView tab: 概览 / 供应商 / 组合 / 端点与密钥
|
|
98
117
|
├─ SupplierDetail 供应商详情:链接池 + 加链接 + 可用模型
|
|
99
118
|
├─ EndpointTab 端点 URL + requireApiKey + 密钥管理
|
|
100
119
|
└─ fetch /router/api/* (同源,无 CORS)
|
|
101
120
|
└─ host 半(src/index.ts)
|
|
102
121
|
├─ /v1/models + /v1/chat/completions (OpenAI 兼容, KeysStore 鉴权)
|
|
122
|
+
│ └─ RouterAdapter(src/llm/adapter.ts) OpenAI SSE → DSH StreamChunk
|
|
123
|
+
│ (usage 经 toTokenUsage 转 DSH 契约,见 docs/suppliers.md)
|
|
103
124
|
├─ KeysStore(src/keys.ts) 密钥库 + requireApiKey
|
|
104
125
|
└─ Router(路由器) → suppliers[]
|
|
105
126
|
├─ OpenCodeSupplier(lib/suppliers/opencode.js) 无账号免费直连
|