@fonlan/dsh-model-router 0.3.1 → 0.3.3
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 +12 -5
- package/lib/client.js +655 -130
- package/lib/client.js.map +1 -1
- package/lib/index.js +237 -26
- package/lib/types/server/adapter.d.ts +27 -1
- package/lib/types/server/service.d.ts +28 -2
- package/lib/types/shared/config.d.ts +54 -2
- package/package.json +31 -29
- package/src/client/api.ts +11 -1
- package/src/client/index.tsx +4 -4
- package/src/client/locales.ts +56 -12
- package/src/client/model-seat.css +289 -0
- package/src/client/model-seat.tsx +623 -0
- package/src/client/settings-card.css +141 -0
- package/src/client/settings-card.tsx +109 -1
- package/src/server/adapter.ts +62 -13
- package/src/server/rpc.ts +16 -0
- package/src/server/service.ts +112 -21
- package/src/shared/config.ts +142 -8
- package/src/client/route-switcher.css +0 -136
- package/src/client/route-switcher.tsx +0 -277
package/README.md
CHANGED
|
@@ -5,15 +5,16 @@
|
|
|
5
5
|
## 功能
|
|
6
6
|
|
|
7
7
|
- **虚拟提供商 `model-router`**:出现在输入框下方的模型选择器(含默认模型设置等所有选择入口)中,列出全部已配置提供商的所有模型,模型条目副文本标注当前激活的提供商(如 `via OpenCode Go`)。
|
|
8
|
-
-
|
|
8
|
+
- **快速路由切换(并入模型选择菜单)**:当当前会话选择的是 `model-router` 模型时,点击输入栏的模型选择器会打开包含「模型 / 提供商 / 推理等级」三栏的菜单——提供商一栏列出该模型当前激活的提供商,可直接切换激活 provider。切换对所有会话的后续请求生效,完整排序和全量管理仍在设置 → 插件 → 插件配置 → 模型路由中完成。可在设置 → 插件 → 插件配置 → 模型路由中通过「在模型选择菜单中显示提供商切换」开关控制该入口是否显示。当 router 全局只有一个提供商、或当前模型仅由一个提供商服务时,提供商栏自动隐藏(无可切换对象)。
|
|
9
9
|
- **严格按 model id 归并**:同一模型出现在多个提供商时归并为一条;展示名、上下文窗口、推理档位等参数跟随当前激活的提供商。
|
|
10
10
|
- **忽略模型 ID 前缀**(默认开启):`deepseek/deepseek-v4-flash` 与 `deepseek-v4-flash` 视为同一模型,统一显示不带前缀的模型 id;请求时传入带前缀的 id 也能命中同一路由。每个提供商条目保留自己的原始 id,委派时按原始 id 发给真实提供商。可在设置 → 插件 → 插件配置 → 模型路由中通过「匹配时忽略模型 ID 前缀」开关控制。
|
|
11
11
|
- **请求时实时路由**:会话中始终保存 `provider=model-router`,每次请求发出时进程内解析当前激活提供商并委派给真实 adapter(凭据解析、重试、流式、计量全部走原管线),主 agent、子代理、工具 LLM 调用一视同仁。
|
|
12
12
|
- **设置卡片**(设置 → 插件 → 插件配置 → 模型路由,可展开式卡片):每个模型下列出其全部提供商——点击切换当前使用;拖拽调整优先级顺序(供后续自动切换策略使用);未配置 API 密钥的提供商标灰不可选。
|
|
13
|
-
-
|
|
13
|
+
- **模型显示顺序可配置**:设置卡片中可切换 model-router 分组在模型选择列表中的排列方式——自定义(手动拖拽模型顺序)、按名称(数字感知)、最近使用(最近请求过的模型排最前,未用过的排最后)。切换与拖拽全局即时生效。
|
|
14
|
+
- **自动配置维护**:新增/删除提供商或模型后配置自动同步(消失的提供商从排序中清理、激活自动回落到剩余第一位、新提供商追加到排序末尾、消失的模型从自定义顺序中清理、新模型追加到自定义顺序末尾);未配置过的模型自动选择排序第一位。
|
|
14
15
|
- **失败即报错**:当前提供商请求失败直接返回错误(自动切换为后续规划功能)。
|
|
15
16
|
- **双语**:设置卡片文案中英双语,跟随界面语言。
|
|
16
|
-
- **通用运行时**:核心路由逻辑与 UI 解耦——web profile
|
|
17
|
+
- **通用运行时**:核心路由逻辑与 UI 解耦——web profile 提供设置卡片与模型选择菜单内的提供商切换;CLI / headless profile 装上同样按配置路由(可直接手改 `settings.yaml` 的 `model-router:` 段)。
|
|
17
18
|
|
|
18
19
|
## 配置
|
|
19
20
|
|
|
@@ -21,8 +22,14 @@
|
|
|
21
22
|
|
|
22
23
|
```yaml
|
|
23
24
|
model-router:
|
|
24
|
-
showQuickSwitch: true #
|
|
25
|
+
showQuickSwitch: true # 是否在模型选择菜单中显示提供商切换入口(默认 true)
|
|
25
26
|
ignoreModelIdPrefix: true # 匹配时忽略模型 ID 前缀(默认 true)
|
|
27
|
+
modelSort: custom # 模型显示顺序:custom | name | recent(默认 custom)
|
|
28
|
+
modelOrder: # custom 模式下的模型显示顺序(自动维护,无需手写)
|
|
29
|
+
- deepseek-v4-flash
|
|
30
|
+
- qwen3.7-max
|
|
31
|
+
recentlyUsed: # recent 模式使用:模型 id → 最后使用时间戳(自动维护)
|
|
32
|
+
deepseek-v4-flash: 1787036509332
|
|
26
33
|
models:
|
|
27
34
|
deepseek-v4-flash:
|
|
28
35
|
order: # 优先级顺序(供后续自动切换使用)
|
|
@@ -31,7 +38,7 @@ model-router:
|
|
|
31
38
|
active: opencode-go # 当前实际使用的提供商
|
|
32
39
|
```
|
|
33
40
|
|
|
34
|
-
`order` 与 `active` 分开维护:点击切换只改 `active`,拖拽排序只改 `order
|
|
41
|
+
`order` 与 `active` 分开维护:点击切换只改 `active`,拖拽排序只改 `order`。`modelOrder` 与 `recentlyUsed` 由插件自动维护(`modelSort: recent` 时每次模型请求都会更新对应时间戳,防抖写入)。
|
|
35
42
|
|
|
36
43
|
## 安装
|
|
37
44
|
|