dsh-multi-router 0.6.0 → 0.6.1
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/CHANGELOG.md +10 -0
- package/README.md +21 -6
- package/THIRD_PARTY_NOTICES.md +4 -0
- package/cordis.patch.yml +2 -2
- package/lib/accounts.js +2 -2
- package/lib/api-service.js +3 -3
- package/lib/{chunk-NSKCFVHP.js → chunk-2LH6TD2U.js} +15 -7
- package/lib/chunk-2LH6TD2U.js.map +7 -0
- package/lib/{chunk-SNEZMYNU.js → chunk-625KMEYS.js} +3 -3
- package/lib/{chunk-LLDJVBTQ.js → chunk-BSAI3SW5.js} +3 -3
- package/lib/{chunk-ROZINFTV.js → chunk-DZ4ZUAYH.js} +49 -6
- package/lib/chunk-DZ4ZUAYH.js.map +7 -0
- package/lib/{chunk-WVNY4LSL.js → chunk-NGVWVIBM.js} +20 -6
- package/lib/chunk-NGVWVIBM.js.map +7 -0
- package/lib/{chunk-JUOESKAK.js → chunk-VZPXRK7Q.js} +2 -2
- package/lib/{chunk-OCMOMSB4.js → chunk-ZQZSXCVR.js} +125 -41
- package/lib/chunk-ZQZSXCVR.js.map +7 -0
- package/lib/cli.js +4 -4
- package/lib/client.js +125 -40
- package/lib/client.js.map +2 -2
- package/lib/clients.js +6 -3
- package/lib/{host-v0.6.0.js → host-v0.6.1.js} +8 -7
- package/lib/host.js +8 -7
- package/lib/index.js +8 -7
- package/lib/index.js.map +2 -2
- package/lib/manager.js +6 -6
- package/lib/router.js +2 -2
- package/lib/shim.js +3 -3
- package/package.json +1 -1
- package/lib/chunk-NSKCFVHP.js.map +0 -7
- package/lib/chunk-OCMOMSB4.js.map +0 -7
- package/lib/chunk-ROZINFTV.js.map +0 -7
- package/lib/chunk-WVNY4LSL.js.map +0 -7
- /package/lib/{chunk-SNEZMYNU.js.map → chunk-625KMEYS.js.map} +0 -0
- /package/lib/{chunk-LLDJVBTQ.js.map → chunk-BSAI3SW5.js.map} +0 -0
- /package/lib/{chunk-JUOESKAK.js.map → chunk-VZPXRK7Q.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。版本号从 `0.1` 起以功能迭代为主,接口在 `1.0` 前可能变化。
|
|
4
4
|
|
|
5
|
+
## 0.6.1
|
|
6
|
+
|
|
7
|
+
- 保留三家模型的默认 / 最大上下文和可选档位,原始模型、预制路由及动态免费模型默认最大,不再统一限制 200K;旧隐式默认自动迁移,显式自定义预算保留。
|
|
8
|
+
- 模型设置集中管理名称、上下文预算、图片开关和默认推理档位;免费模型逐项选择预算。原始模型与路由独立设置,随配置导入导出。
|
|
9
|
+
- 路由跳过容量不足的账号,不截断会话或静默降低容量;Qoder 每次请求使用能容纳预算的真实档位,并发选择不污染共享目录。
|
|
10
|
+
- 增加 Qwen3.8-Max、Qwen3.8-Flash 预配置,使用已核对的 Trae / Qoder 模型 ID;补齐预配置不覆盖已有路由。
|
|
11
|
+
- 增加 Hy4 Preview 预配置,精确绑定 WorkBuddy 的 `hy4-preview`;容量与推理模式跟随该渠道目录,支持多个 WorkBuddy 账号切换。
|
|
12
|
+
- 增加手动短请求连通性测试,有超时、间隔与错误流检查,不自动发送容量探测。显示最大输出与完整推理模式,只有声明支持的模型提供图片与关闭思考选项。
|
|
13
|
+
- 对比 dingminhua 的 WorkBuddy / Trae 插件并记录设计取舍,更新模型设置的合成数据截图。
|
|
14
|
+
|
|
5
15
|
## 0.6.0
|
|
6
16
|
|
|
7
17
|
- 新增左侧底部 Token 用量概览,展示今日与累计 Token,点击直达插件详情;默认显示,可在版本号旁关闭并保存到配置。仅读取本机缓存统计,每分钟更新,隐藏窗口暂停,不额外查询供应商。
|
package/README.md
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
一个插件内置 WorkBuddy、Trae、Qoder 的认证、模型发现和聊天传输,提供三家的多账号池及集中路由。运行不依赖原来三个 DSH 插件;三家代码随安装包一起打包。基于 MIT 上游,固定版本见 `upstream-lock.json`,许可见 `THIRD_PARTY_NOTICES.md`。
|
|
8
8
|
|
|
9
|
-
版本:0.6.
|
|
9
|
+
版本:0.6.1。适配 DSH Desktop / Web 0.2.0-rc.2,Node.js ^22.19.0 或 >=24。
|
|
10
10
|
|
|
11
11
|
## 在 DSH 里管理
|
|
12
12
|
|
|
13
|
-
打开 **插件 → dsh-multi-router
|
|
13
|
+
打开 **插件 → dsh-multi-router 的配置页**。默认进入总览,九个页签:
|
|
14
14
|
|
|
15
15
|
- **总览与用量**:今日/累计请求与 Token、近 7 日趋势、最近请求、三家平台余额与刷新时间。平台余额后台每 5 分钟查询,面板每分钟读取本机缓存,隐藏页面暂停轮询,可关闭自动刷新;手动刷新平台用量会立即查询。
|
|
16
16
|
- **Token 明细**:每次上游调用的时间、渠道、账号、路由、实际模型、输入/输出/总 Token 和结果;支持今日、近 3 日、近 7 日、近 30 日及自定义日期范围(北京时间自然日),并按账号、路由、结果筛选,每页 50 条。缓存输入和推理输出在平台返回时展示,不重复计入总量。默认滚动保留最近 30 × 24 小时,可设置 1–365 天,并随配置迁移。同时展示模型用时、工具调用用时、首 Token 平均(TTFT)和输出速度(TPS),可展开单次性能。DSH 步骤采用会话统计相同口径;TPS 按有效输出 Token / 解码秒数加权计算。性能汇总只包含成功调用,随当前筛选变化;旧记录缺少的分项显示「—」。
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
- **积分签到**:按账号设置每日启动签到或定时签到(北京时间),保留每日执行记录、领取意图与设备限制,避免重复请求。
|
|
19
19
|
- **API 服务**:默认关闭,按需提供 OpenAI 兼容的模型列表和聊天接口,支持流式 / 普通 JSON、工具调用与推理参数;复用现有账号池及路由,Key 独立管理,API 用量可在 Token 明细按来源筛选。
|
|
20
20
|
- **插件更新**:仅检查用户安装的 GitHub / npm 插件,包含停用插件;每 24 小时自动检查,在 DSH 任意页面弹窗提醒新版本。同一更新点击关闭或「稍后处理」后不重复提醒,更高版本 / 新提交再次提醒。可在弹窗查看并手动更新;不自动安装。检查失败不冒充发现新版本,内置组件不检查、不展示。
|
|
21
|
-
-
|
|
22
|
-
- **路由规则**:Free
|
|
21
|
+
- **模型管理**:原始模型默认隐藏,只展示统一路由;提供所有渠道「全部展示」「全部隐藏(仅路由)」,作用于现有和以后发现的模型。可搜索、获取真实模型目录,修改显示名与单模型展示开关,每家独立保存。显示实际上下文、最大上下文、输出上限和完整推理档位;「设置」可调整上下文预算、图片输入及默认推理等级,「测试」手动发送短请求检查连通性(正常计费,不代表满上下文测试)。
|
|
22
|
+
- **路由规则**:Free 免费路由排在首位,显示各账号当前免费模型与目录检查时间,支持立即检查。列表显示路由名称、切换策略和目标;新建/编辑打开二级弹窗。「添加模型预配置」可逐个添加或补齐全部预配置(Qwen3.8-Max / Flash 连接已核对的 Trae、Qoder 渠道),不覆盖已有同 ID 路由。模型可从下拉列表选择,上下文默认采用目标渠道已发现的最大容量,支持手动设置较小预算;候选 ID 放在高级选项中。
|
|
23
23
|
|
|
24
24
|
- **配置迁移**:导入 / 导出设置,或使用密码加密迁移账号登录凭证。
|
|
25
25
|
|
|
@@ -31,8 +31,20 @@
|
|
|
31
31
|
|
|
32
32
|
隐藏只影响模型选择器,已有会话及路由仍可使用隐藏模型;停用账号会将其从新请求的候选池中排除。移出账号池保留独立凭证文件,且禁止移除仍被路由明确绑定的账号。
|
|
33
33
|
|
|
34
|
+
### 上下文设置
|
|
35
|
+
|
|
36
|
+
原始模型、预制路由及动态免费模型默认采用各渠道已声明的最大上下文,保留手动调低预算的选择。原始模型在「模型管理 → 设置」调整;普通路由在「编辑路由 → 上下文容量」调整;免费模型在「管理免费模型」逐项调整。旧版隐式 200K 默认会迁移为最大容量,显式自定义预算保留。
|
|
37
|
+
|
|
38
|
+
路由只切换到能够容纳当前预算的渠道,不截断历史、不静默降低容量。Qoder 请求同步选择真实的上下文档位,且不同并发路由互不影响。最大窗口来自渠道目录,账号额度、限流或请求体限制仍可能影响实际可用长度;短请求测试不验证满窗口。
|
|
39
|
+
|
|
40
|
+
原始模型设置和路由预算独立保存。上下文、图片、默认推理及免费模型设置均随配置迁移。
|
|
41
|
+
|
|
42
|
+
两个参考插件的源码对比与本次处理方式见 [参考对比](docs/reference-comparison.md)。
|
|
43
|
+
|
|
34
44
|
### 界面预览
|
|
35
45
|
|
|
46
|
+

|
|
47
|
+
|
|
36
48
|
以下主要页面已更新为 **v0.5.9 实际面板 + 合成演示数据**。账号名称已替换,不包含真实手机号、邮箱、身份 ID、设备标识、登录凭证或会话内容;余额、用量和性能均为演示数值。
|
|
37
49
|
|
|
38
50
|
| 总览与用量 | Token 明细与调用性能 |
|
|
@@ -300,9 +312,9 @@ node lib/cli.js remove --id wb1
|
|
|
300
312
|
|
|
301
313
|
`modelVisibility` 按供应商保存新发现模型的展示默认值,省略时为 false。单模型 `visible` 优先;批量操作同时更新渠道默认值和已有单模型覆盖项,保留模型名称和路由配置。完整配置导入 / 导出也保留该默认值。
|
|
302
314
|
|
|
303
|
-
##
|
|
315
|
+
## 模型预配置
|
|
304
316
|
|
|
305
|
-
|
|
317
|
+
Free 自动免费路由排在首位,以下普通预配置按表中渠道顺序切换,使用该渠道全部启用账号,默认临期优先、目录声明的最大上下文 / 32K 最大输出。Flash 仍采用用户已允许的三家 Flash 兼容切换;其他预配置精确绑定对应版本,不混用 GLM FlashX 等变体。空白渠道不参与该路由。目录或账号权限变化可能使目标暂不可用,预配置弹窗显示当前已发现可用渠道数。
|
|
306
318
|
|
|
307
319
|
| 路由调用 ID | WorkBuddy 目标 ID | Trae 目标 ID | Qoder 目标 ID |
|
|
308
320
|
| --- | --- | --- | --- |
|
|
@@ -313,6 +325,9 @@ node lib/cli.js remove --id wb1
|
|
|
313
325
|
| kimi-k3 | kimi-k3-1 | kimi-k3 | kmodel_latest |
|
|
314
326
|
| kimi-k2.8-preview | kimi-k2.8-preview | kimi-k2.8-preview | kmodel |
|
|
315
327
|
| minimax-m2.7 | minimax-m2.7 | minimax-m2.7 | mmodel |
|
|
328
|
+
| qwen3.8-max | — | qwen3.8-max | qmodel_38max |
|
|
329
|
+
| qwen3.8-flash | — | qwen3.8-flash | qfmodel |
|
|
330
|
+
| hy4-preview | hy4-preview | — | — |
|
|
316
331
|
|
|
317
332
|
路由内部 ID 是 DSH 查找路由所需的标识,由插件维护;用户在面板只配置路由名称。目标模型 ID 决定实际调用哪个模型。上表为预配置的稳定内部标识,新建路由自动生成独立标识。GLM-5.2 已移出预配置,原始渠道模型不受影响。
|
|
318
333
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
- 使用或再分发本项目时,你必须**同时**遵守本项目 [`LICENSE`](./LICENSE) 与下列三个上游项目的 MIT 许可要求。
|
|
12
12
|
- 上游项目的维护、更新与可用性不由本项目负责。
|
|
13
13
|
|
|
14
|
+
## 设计参考(未包含代码)
|
|
15
|
+
|
|
16
|
+
模型管理交互参考 [dingminhua/dsh-connect-workbuddy](https://github.com/dingminhua/dsh-connect-workbuddy) 与 [dingminhua/dsh-connect-trae](https://github.com/dingminhua/dsh-connect-trae) 的上下文预算、能力展示和测试反馈设计。本次管理界面与上下文路由逻辑由本项目独立实现,未复制这两个参考项目的新源码;核对的 commit 和差异见 [参考对比](docs/reference-comparison.md)。内置的 Trae 固定版本及其许可仍按下文履行。
|
|
17
|
+
|
|
14
18
|
## 本地集成改动 / Local Integration Changes
|
|
15
19
|
|
|
16
20
|
- WorkBuddy 的共享适配器额外透传集成后 provider 目录中**显式声明**的 Minimal 推理模式;WorkBuddy 原有的模型发现逻辑与 provider 专有的档位词表未作改动。
|
package/cordis.patch.yml
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
- insert:
|
|
2
|
-
- id: llm-multi-router-v2-0.6.
|
|
3
|
-
name: ./lib/host-v0.6.
|
|
2
|
+
- id: llm-multi-router-v2-0.6.1
|
|
3
|
+
name: ./lib/host-v0.6.1.js
|
package/lib/accounts.js
CHANGED
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
localAccountKey,
|
|
5
5
|
normalizeLocalAccountKey,
|
|
6
6
|
readPortableCredential
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-VZPXRK7Q.js";
|
|
8
8
|
import "./chunk-OK2T2UAZ.js";
|
|
9
9
|
import "./chunk-TEZ2FMEO.js";
|
|
10
10
|
import "./chunk-S5KMFAQM.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-NGVWVIBM.js";
|
|
12
12
|
export {
|
|
13
13
|
discoverLocalAccounts,
|
|
14
14
|
importAccount,
|
package/lib/api-service.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ApiService
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-625KMEYS.js";
|
|
4
4
|
import "./chunk-4V52V5GO.js";
|
|
5
5
|
import "./chunk-DNQPZMPF.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-DZ4ZUAYH.js";
|
|
7
|
+
import "./chunk-NGVWVIBM.js";
|
|
8
8
|
export {
|
|
9
9
|
ApiService
|
|
10
10
|
};
|
|
@@ -20,12 +20,13 @@ import {
|
|
|
20
20
|
} from "./chunk-4V52V5GO.js";
|
|
21
21
|
import {
|
|
22
22
|
RouteError,
|
|
23
|
-
abortable
|
|
24
|
-
|
|
23
|
+
abortable,
|
|
24
|
+
qoderContextModel
|
|
25
|
+
} from "./chunk-DZ4ZUAYH.js";
|
|
25
26
|
import {
|
|
26
27
|
beijingDay,
|
|
27
28
|
writePrivateJson
|
|
28
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-NGVWVIBM.js";
|
|
29
30
|
|
|
30
31
|
// src/clients.mjs
|
|
31
32
|
import { readFile as readFile2 } from "node:fs/promises";
|
|
@@ -5221,14 +5222,21 @@ async function createAccountClient(account, config, attachments) {
|
|
|
5221
5222
|
};
|
|
5222
5223
|
};
|
|
5223
5224
|
discover = (signal) => client.fetchModels(signal);
|
|
5224
|
-
chat = (input, signal) =>
|
|
5225
|
+
chat = (input, signal, options) => new QoderUpstreamClient({
|
|
5226
|
+
region,
|
|
5227
|
+
providerId: account.provider,
|
|
5228
|
+
getPat,
|
|
5229
|
+
transport,
|
|
5230
|
+
...attachments ? { attachments } : {},
|
|
5231
|
+
catalogProvider: (id) => qoderContextModel(client.catalogModelFor(id), options?.contextWindow)
|
|
5232
|
+
}).chatStream(JSON.stringify(input), signal);
|
|
5225
5233
|
}
|
|
5226
5234
|
return {
|
|
5227
5235
|
models: cachedModels(discover, config.catalogTtlMs),
|
|
5228
5236
|
accountInfo,
|
|
5229
5237
|
checkin,
|
|
5230
|
-
async chat(input, signal) {
|
|
5231
|
-
const result = await chat(input, signal);
|
|
5238
|
+
async chat(input, signal, options) {
|
|
5239
|
+
const result = await chat(input, signal, options);
|
|
5232
5240
|
return result.ok ? preflightStream(result.response, signal) : result;
|
|
5233
5241
|
}
|
|
5234
5242
|
};
|
|
@@ -5410,4 +5418,4 @@ export {
|
|
|
5410
5418
|
refreshWorkBuddyCheckinCredential,
|
|
5411
5419
|
createWorkBuddyCheckin
|
|
5412
5420
|
};
|
|
5413
|
-
//# sourceMappingURL=chunk-
|
|
5421
|
+
//# sourceMappingURL=chunk-2LH6TD2U.js.map
|