dsh-multi-router 0.6.6 → 0.6.7
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 +6 -0
- package/README.md +3 -1
- package/cordis.patch.yml +2 -2
- package/lib/accounts.js +2 -2
- package/lib/api-service.js +3 -3
- package/lib/{chunk-GQEKAQXE.js → chunk-54LJVER5.js} +3 -3
- package/lib/{chunk-XAND4QBY.js → chunk-BVMFV35D.js} +3 -3
- package/lib/{chunk-6GEU5EGE.js → chunk-JLHLWJAW.js} +3 -3
- package/lib/{chunk-VDDKRMZK.js → chunk-OMSCFSME.js} +7 -7
- package/lib/{chunk-VDDKRMZK.js.map → chunk-OMSCFSME.js.map} +1 -1
- package/lib/{chunk-PNFQDYBK.js → chunk-XD52ZGZ5.js} +10 -2
- package/lib/chunk-XD52ZGZ5.js.map +7 -0
- package/lib/{chunk-JJE6NRHN.js → chunk-XFN5U3RY.js} +36 -2
- package/lib/chunk-XFN5U3RY.js.map +7 -0
- package/lib/{chunk-PI3XU3SB.js → chunk-YZIARLWT.js} +2 -2
- package/lib/cli.js +4 -4
- package/lib/client.js +12 -1
- package/lib/client.js.map +2 -2
- package/lib/clients.js +3 -3
- package/lib/{host-v0.6.6.js → host-v0.6.7.js} +7 -7
- package/lib/host.js +7 -7
- package/lib/index.js +7 -7
- 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-JJE6NRHN.js.map +0 -7
- package/lib/chunk-PNFQDYBK.js.map +0 -7
- /package/lib/{chunk-GQEKAQXE.js.map → chunk-54LJVER5.js.map} +0 -0
- /package/lib/{chunk-XAND4QBY.js.map → chunk-BVMFV35D.js.map} +0 -0
- /package/lib/{chunk-6GEU5EGE.js.map → chunk-JLHLWJAW.js.map} +0 -0
- /package/lib/{chunk-PI3XU3SB.js.map → chunk-YZIARLWT.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。版本号从 `0.1` 起以功能迭代为主,接口在 `1.0` 前可能变化。
|
|
4
4
|
|
|
5
|
+
## 0.6.7
|
|
6
|
+
|
|
7
|
+
- 路由新增「积分使用均衡」开关,默认开启,阈值默认 1000 积分且可自行设定。某个账号本轮消耗达到阈值后,下一次请求优先换到其他仍有余额的账号;所有账号都达到阈值时继续使用现有账号,不会因此失败。与原有「账号切换规则」并行生效,不改变故障切换、权重、Token 与积分额度策略的既有语义。
|
|
8
|
+
- 消耗仍由平台余额快照下降推算,因此可能多出一次请求的用量;余额查询失败期间不参与切换判断。余额被重置或补充时按新基线计,不会因负数差值持续降权。
|
|
9
|
+
- Free 自动免费模型路由不展示该开关,也不参与积分均衡切换;已有配置自动采用新默认值,显式写入 `balanceCredits: false` 可关闭。
|
|
10
|
+
|
|
5
11
|
## 0.6.6
|
|
6
12
|
|
|
7
13
|
- 修复 WorkBuddy 国际版(`workbuddy-ai` / `www.workbuddy.ai`)聊天请求固定返回 HTTP 400 空响应:网关要求请求携带 `X-Conversation-ID`、`X-Conversation-Request-ID`、`X-Conversation-Message-ID` 三件套,每个请求使用新的 UUID。国内版实测同样接受该三件套,因此两个区域统一发送,避免两条路径漂移。感谢 @YGtemple 提供的诊断与实测数据(#2)。
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
一个插件内置 WorkBuddy、Trae、Qoder 的认证、模型发现和聊天传输,提供三家的多账号池及集中路由。运行不依赖原来三个 DSH 插件;三家代码随安装包一起打包。基于 MIT 上游,固定版本见 `upstream-lock.json`,许可见 `THIRD_PARTY_NOTICES.md`。
|
|
8
8
|
|
|
9
|
-
版本:0.6.
|
|
9
|
+
版本:0.6.7。适配 DSH Desktop / Web 0.2.1-rc.2(同时兼容 0.2.0-rc.2),Node.js ^22.19.0 或 >=24。
|
|
10
10
|
|
|
11
11
|
## 在 DSH 里管理
|
|
12
12
|
|
|
@@ -111,6 +111,8 @@ Qoder 的 `dfmodel` 在真实目录里显示为 DeepSeek-Flash,未声明具体
|
|
|
111
111
|
|
|
112
112
|
`preferExpiringCredits: true` 开启「优先使用临期积分」,`expiringWithinDays` 默认开启,临期范围默认 7 天,可在弹窗调整。只优先仍有余额、平台返回有效期且在窗口内到期的积分包,越早到期越优先;高于普通顺序和权重,仍遵守额度、禁用和冷却。无有效期/过期用量/查询失败时不猜测临期。Qoder 若只提供整个套餐有效期,则按其整体期限显示。WorkBuddy 日期时区沿用原客户端的本机解析。
|
|
113
113
|
|
|
114
|
+
`balanceCredits: true` 开启「积分使用均衡」(默认开启,阈值由 `creditBalanceThreshold` 设定,默认 1000)。它只调整尝试顺序,不改变上面任何一种切换规则:某个账号本轮观察到的积分消耗达到阈值后,会被排到仍有余量的账号之后;若所有账号都已达到阈值,则继续按原顺序使用,不会因此返回耗尽。消耗同样来自平台余额下降,可能多出一次请求的用量;余额重置或补充后按新基线重新计算,负数差值不会持续降权。Free 自动免费模型路由不参与该逻辑,面板也不展示此开关。
|
|
115
|
+
|
|
114
116
|
额度只决定下一次请求选哪个账号,不中断正在生成的回答;并发请求、最后一次请求可能使阈值超过,积分结算延迟也可能造成超额。这是轮换阈值,不是上游消费硬上限。
|
|
115
117
|
|
|
116
118
|
统计保存于配置旁的 `usage.json`,0600 权限。仅保存账号/路由元数据、计数、平台额度和保留期限内的逐次调用明细,不保存提示词、回答或认证凭证;明细默认保留最近 30 天(滚动 720 小时),由 `usageRetentionDays` 设置 1–365 天,不再限定 80 条;缩短期限立即删除超期明细,延长不会恢复已删除记录。累计用量、额度轮换基线、临期冷却不清零,日趋势独立保留最近 31 天。Token 从本版本启用后开始计量,不回填历史会话。三家积分单位分别展示,不汇总为通用余额;平台余额下降可包含其他应用消费、积分包到期或延迟结算,不宣称是精确的单请求扣费。平台查询失败保留最后数据与错误、时间;没有可用积分数据的账号不参加积分阈值轮换。
|
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.7
|
|
3
|
+
name: ./lib/host-v0.6.7.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-YZIARLWT.js";
|
|
8
8
|
import "./chunk-FLL3DUVP.js";
|
|
9
9
|
import "./chunk-KWXLQJS5.js";
|
|
10
10
|
import "./chunk-S5KMFAQM.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-XD52ZGZ5.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-54LJVER5.js";
|
|
4
4
|
import "./chunk-4V52V5GO.js";
|
|
5
5
|
import "./chunk-DNQPZMPF.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-XFN5U3RY.js";
|
|
7
|
+
import "./chunk-XD52ZGZ5.js";
|
|
8
8
|
export {
|
|
9
9
|
ApiService
|
|
10
10
|
};
|
|
@@ -7,12 +7,12 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
RouteError,
|
|
9
9
|
abortable
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-XFN5U3RY.js";
|
|
11
11
|
import {
|
|
12
12
|
REASONING_EFFORTS,
|
|
13
13
|
beijingDay,
|
|
14
14
|
writePrivateJson
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-XD52ZGZ5.js";
|
|
16
16
|
|
|
17
17
|
// src/api-service.mjs
|
|
18
18
|
import { createServer } from "node:http";
|
|
@@ -329,4 +329,4 @@ async function collectCompletion(frames, model) {
|
|
|
329
329
|
export {
|
|
330
330
|
ApiService
|
|
331
331
|
};
|
|
332
|
-
//# sourceMappingURL=chunk-
|
|
332
|
+
//# sourceMappingURL=chunk-54LJVER5.js.map
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
} from "./chunk-DNQPZMPF.js";
|
|
5
5
|
import {
|
|
6
6
|
RouteError
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-XFN5U3RY.js";
|
|
8
8
|
import {
|
|
9
9
|
REASONING_EFFORTS
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-XD52ZGZ5.js";
|
|
11
11
|
|
|
12
12
|
// src/shim.mjs
|
|
13
13
|
import { createServer } from "node:http";
|
|
@@ -117,4 +117,4 @@ function createShim(router, { modelPrefix = "" } = {}) {
|
|
|
117
117
|
export {
|
|
118
118
|
createShim
|
|
119
119
|
};
|
|
120
|
-
//# sourceMappingURL=chunk-
|
|
120
|
+
//# sourceMappingURL=chunk-BVMFV35D.js.map
|
|
@@ -22,11 +22,11 @@ import {
|
|
|
22
22
|
RouteError,
|
|
23
23
|
abortable,
|
|
24
24
|
qoderContextModel
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-XFN5U3RY.js";
|
|
26
26
|
import {
|
|
27
27
|
beijingDay,
|
|
28
28
|
writePrivateJson
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-XD52ZGZ5.js";
|
|
30
30
|
|
|
31
31
|
// src/clients.mjs
|
|
32
32
|
import { readFile as readFile2 } from "node:fs/promises";
|
|
@@ -5418,4 +5418,4 @@ export {
|
|
|
5418
5418
|
refreshWorkBuddyCheckinCredential,
|
|
5419
5419
|
createWorkBuddyCheckin
|
|
5420
5420
|
};
|
|
5421
|
-
//# sourceMappingURL=chunk-
|
|
5421
|
+
//# sourceMappingURL=chunk-JLHLWJAW.js.map
|
|
@@ -6,20 +6,20 @@ import {
|
|
|
6
6
|
refreshWorkBuddyCheckinCredential,
|
|
7
7
|
supportsCheckin,
|
|
8
8
|
workbuddyToken
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-JLHLWJAW.js";
|
|
10
10
|
import {
|
|
11
11
|
discoverLocalAccounts,
|
|
12
12
|
importAccount,
|
|
13
13
|
localAccountKey,
|
|
14
14
|
normalizeLocalAccountKey,
|
|
15
15
|
readPortableCredential
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-YZIARLWT.js";
|
|
17
17
|
import {
|
|
18
18
|
modelWithCurrentPromotion
|
|
19
19
|
} from "./chunk-KWXLQJS5.js";
|
|
20
20
|
import {
|
|
21
21
|
ApiService
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-54LJVER5.js";
|
|
23
23
|
import {
|
|
24
24
|
hostIsLoopback
|
|
25
25
|
} from "./chunk-DNQPZMPF.js";
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
contextInfo,
|
|
29
29
|
matchModel,
|
|
30
30
|
resolveContext
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-XFN5U3RY.js";
|
|
32
32
|
import {
|
|
33
33
|
PROVIDERS,
|
|
34
34
|
PROVIDER_NAMES,
|
|
@@ -38,13 +38,13 @@ import {
|
|
|
38
38
|
routeReasoning,
|
|
39
39
|
validateConfig,
|
|
40
40
|
writePrivateJson
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-XD52ZGZ5.js";
|
|
42
42
|
|
|
43
43
|
// src/manager.mjs
|
|
44
44
|
import { createHash, randomBytes as randomBytes3, timingSafeEqual } from "node:crypto";
|
|
45
45
|
|
|
46
46
|
// package.json
|
|
47
|
-
var version = "0.6.
|
|
47
|
+
var version = "0.6.7";
|
|
48
48
|
|
|
49
49
|
// src/manager.mjs
|
|
50
50
|
import { readFile as readFile4, mkdir as mkdir2, mkdtemp as mkdtemp2, rm as rm3 } from "node:fs/promises";
|
|
@@ -2048,4 +2048,4 @@ export {
|
|
|
2048
2048
|
Manager,
|
|
2049
2049
|
managementHandler
|
|
2050
2050
|
};
|
|
2051
|
-
//# sourceMappingURL=chunk-
|
|
2051
|
+
//# sourceMappingURL=chunk-OMSCFSME.js.map
|