@nimoxie/dsh-model-organizer 0.5.12 → 0.5.19
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/DEVELOPMENT.md +401 -339
- package/LICENSE +21 -21
- package/README.md +98 -97
- package/cordis.patch.yml +5 -5
- package/lib/client.js +4842 -4536
- package/lib/index.js +9 -9
- package/package.json +1 -1
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 NimoXie
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 NimoXie
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,97 +1,98 @@
|
|
|
1
|
-
# dsh-model-organizer
|
|
2
|
-
|
|
3
|
-
给 DSH(DeepSeek Harness)换个更好用的模型选择器:**按供应商分组、可折叠、可拖拽排序**。
|
|
4
|
-
|
|
5
|
-
## 它解决什么问题
|
|
6
|
-
|
|
7
|
-
官方那个模型下拉是一个扁平长列表——供应商只是粘性小标题,模型多的时候要滚很久,也没法按自己的习惯排序。这个插件把它改成两级:**根层先选「模型」或「推理等级」,模型层里按供应商分组**,供应商和模型的顺序都能直接拖。
|
|
8
|
-
|
|
9
|
-
## 功能
|
|
10
|
-
|
|
11
|
-
### 聊天框的模型菜单
|
|
12
|
-
- 根层与官方一致:「模型」「推理等级」两个入口(「推理等级」常驻,模型未声明等级时置灰)
|
|
13
|
-
- 「模型」按供应商分组、可折叠,顺序与设置页浮窗一致;当前模型加粗
|
|
14
|
-
- 模型多于 4 个时出现官方同款的「搜索模型」框
|
|
15
|
-
- 外观完全沿用官方菜单(同一表面、同一套图标、同一毛玻璃背景)
|
|
16
|
-
|
|
17
|
-
### 设置页「模型」:本插件接管
|
|
18
|
-
- 设置里**始终只有「模型」一行**,点开就是本插件的页;每次打开设置都默认回到本页
|
|
19
|
-
- 交还官方页:本页标题右侧的「官方模型页」= 这一次打开期间交还;官方页右下角浮窗里的「模型管理页」= 再接管回来
|
|
20
|
-
- 左栏:置顶只读的「官方(内置)」路由(点击切回官方页)+ 自建供应商(分「官方目录 /
|
|
21
|
-
- 右栏:API 地址、API 格式(三种协议)改动即时保存;密钥写入凭据库(读不回明文,可清除)
|
|
22
|
-
- 模型列表一行一个:**整行可拖动排序**,**单击打开「模型详情」**——ID、显示名、上下文窗口、最大输出、输入模态、推理等级、启用/删除;保存立即写回 DSH 配置
|
|
23
|
-
- 「获取可用模型」:调官方发现接口(目录里已有的供应商不联网,自己加的网关才问 `GET {baseURL}/models`),弹窗可搜索、全选,**勾选后点「添加所选」才写回**
|
|
24
|
-
- 左栏末尾虚线框「**+
|
|
25
|
-
- 删除供应商:详情右上角垃圾桶,先确认;删配置并清理本页派生的密钥引用(别处配置的密钥不动),官方路由没有这个按钮
|
|
26
|
-
- 每行的**绿点就是启用开关**:亮=出现在本插件菜单,暗=从本插件菜单移除;**DSH 配置原样保留**,状态存本机
|
|
27
|
-
|
|
28
|
-
### 排序、按钮与细节
|
|
29
|
-
- 设置页右下角浮窗:**直接拖动**供应商行/模型行排序;模型顺序写进 DSH 配置(同一份配置的所有设备共用),供应商顺序与浮窗位置只记在当前浏览器
|
|
30
|
-
- 页面上所有按钮(含所有弹窗)都有**悬停反馈**:普通按钮提亮、主要操作保持强调色、危险操作泛红、开关用光环(不改开/关底色,避免被误读为状态变化)
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
dsh plugin --profile <profile> add
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
>
|
|
65
|
-
>
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
1
|
+
# dsh-model-organizer
|
|
2
|
+
|
|
3
|
+
给 DSH(DeepSeek Harness)换个更好用的模型选择器:**按供应商分组、可折叠、可拖拽排序**。
|
|
4
|
+
|
|
5
|
+
## 它解决什么问题
|
|
6
|
+
|
|
7
|
+
官方那个模型下拉是一个扁平长列表——供应商只是粘性小标题,模型多的时候要滚很久,也没法按自己的习惯排序。这个插件把它改成两级:**根层先选「模型」或「推理等级」,模型层里按供应商分组**,供应商和模型的顺序都能直接拖。
|
|
8
|
+
|
|
9
|
+
## 功能
|
|
10
|
+
|
|
11
|
+
### 聊天框的模型菜单
|
|
12
|
+
- 根层与官方一致:「模型」「推理等级」两个入口(「推理等级」常驻,模型未声明等级时置灰)
|
|
13
|
+
- 「模型」按供应商分组、可折叠,顺序与设置页浮窗一致;当前模型加粗
|
|
14
|
+
- 模型多于 4 个时出现官方同款的「搜索模型」框
|
|
15
|
+
- 外观完全沿用官方菜单(同一表面、同一套图标、同一毛玻璃背景)
|
|
16
|
+
|
|
17
|
+
### 设置页「模型」:本插件接管
|
|
18
|
+
- 设置里**始终只有「模型」一行**,点开就是本插件的页;每次打开设置都默认回到本页
|
|
19
|
+
- 交还官方页:本页标题右侧的「官方模型页」= 这一次打开期间交还;官方页右下角浮窗里的「模型管理页」= 再接管回来
|
|
20
|
+
- 左栏:置顶只读的「官方(内置)」路由(点击切回官方页)+ 自建供应商(分「官方目录 / 自定义供应商」,可拖动排序,顺序只记本机)。内置目录里的供应商**没有在配置里列模型**,它们的模型由目录提供,所以在这一页是**只读展示**(可测试连接,不能编辑)
|
|
21
|
+
- 右栏:API 地址、API 格式(三种协议)改动即时保存;密钥写入凭据库(读不回明文,可清除)
|
|
22
|
+
- 模型列表一行一个:**整行可拖动排序**,**单击打开「模型详情」**——ID、显示名、上下文窗口、最大输出、输入模态、推理等级、启用/删除;保存立即写回 DSH 配置
|
|
23
|
+
- 「获取可用模型」:调官方发现接口(目录里已有的供应商不联网,自己加的网关才问 `GET {baseURL}/models`),弹窗可搜索、全选,**勾选后点「添加所选」才写回**
|
|
24
|
+
- 左栏末尾虚线框「**+ 添加模型提供商**」(同一个弹窗里切换内容):顶部「**添加方式**」两种 —— **第三方模型提供商**(从 DSH 内置目录里挑一个,只填密钥就够,地址/协议/模型都由目录提供;如果目录里的供应商都已经添加过,这格会置灰并说明)或 **自定义模型 API**(路由 ID、显示名、地址、格式、密钥,再选出一份模型清单);路由 ID 校验非空/字符集/重名,配置与密钥引用一次写入
|
|
25
|
+
- 删除供应商:详情右上角垃圾桶,先确认;删配置并清理本页派生的密钥引用(别处配置的密钥不动),官方路由没有这个按钮
|
|
26
|
+
- 每行的**绿点就是启用开关**:亮=出现在本插件菜单,暗=从本插件菜单移除;**DSH 配置原样保留**,状态存本机
|
|
27
|
+
|
|
28
|
+
### 排序、按钮与细节
|
|
29
|
+
- 设置页右下角浮窗:**直接拖动**供应商行/模型行排序;模型顺序写进 DSH 配置(同一份配置的所有设备共用),供应商顺序与浮窗位置只记在当前浏览器
|
|
30
|
+
- 页面上所有按钮(含所有弹窗)都有**悬停反馈**:普通按钮提亮、主要操作保持强调色、危险操作泛红、开关用光环(不改开/关底色,避免被误读为状态变化)
|
|
31
|
+
- 所有弹窗(选模型、添加提供商、模型详情、删除确认)都能**按住标题栏拖动**;**点弹窗外的空白不会关闭**,关闭方式是右上角 ✕、底部「取消」或 `Esc`(避免误点把填了一半的表单扔掉)
|
|
32
|
+
- 模型行两颗**带边框的图标键**:链接图标 = **测试连接**(问网关该模型在不在它的列表里,结论把图标换成 ✓/⚠/✗ 并变色,悬停看原因;点击同帧开始转圈)、垃圾桶 = **删除**(图标常红);两者同一尺寸,转圈与尺寸都不随结论变化
|
|
33
|
+
- 悬停文案只说明「这个按钮做什么 / 现在什么状态」,不写实现细节
|
|
34
|
+
|
|
35
|
+
## 安装
|
|
36
|
+
|
|
37
|
+
装到哪个环境,就用对应的方法:
|
|
38
|
+
|
|
39
|
+
**浏览器版(`web`,CLI 管理)**
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
dsh plugin --profile web add @nimoxie/dsh-model-organizer
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
装完重启服务(关掉再 `dsh web`)。`--profile` 后面是目标 profile 名:浏览器版是 `web`,你自己另外创建的 profile 填对应的名字。
|
|
46
|
+
|
|
47
|
+
**桌面客户端**
|
|
48
|
+
|
|
49
|
+
桌面 profile 由客户端独占管理,**不要用上面的 CLI 命令**。请在客户端的「插件管理」页添加本包(包名 `@nimoxie/dsh-model-organizer`)。
|
|
50
|
+
|
|
51
|
+
卸载(CLI 环境):
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
dsh plugin --profile <profile> remove @nimoxie/dsh-model-organizer
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
开发用:从 GitHub 或本地目录装
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
dsh plugin --profile <profile> add github:NimoXie15/dsh-model-organizer
|
|
61
|
+
dsh plugin --profile <profile> add link:/absolute/path/to/dsh-model-organizer
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
> **兼容性**:已在 DSH `0.1.7`、`0.2.0-rc.1`(web)、`0.2.0-rc.2`、`0.2.1-rc.2`(桌面端)上核验,`0.1.5` 起都可用。
|
|
65
|
+
>
|
|
66
|
+
> 升级插件后如果界面没变化,按 **Ctrl+Shift+R** 强刷一次(浏览器可能还在用缓存的旧版本)。
|
|
67
|
+
|
|
68
|
+
## 想让「推理等级」可用,需要模型自己声明
|
|
69
|
+
|
|
70
|
+
「推理等级」入口常驻菜单根层;只有模型声明了等级,它才可点、才会在按钮上显示当前等级。
|
|
71
|
+
|
|
72
|
+
0.5.0 起在「模型详情」弹窗里直接设置:推理等级选「继承」(沿用该模型已有的声明)、「不支持」,或「自定义」——自定义时逐行添加等级,**键 = 菜单里显示的等级,值 = 选中时发给模型的 API 参数**(只有 `off` 可以留空)。
|
|
73
|
+
|
|
74
|
+
也可以直接在 profile 配置里给这个模型声明(0.2.x 在 `cordis.patch.yml`,0.1.x 在 `settings.yaml`):
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
# 该供应商的 models[] 条目(0.2.x 在 profile 的 cordis.patch.yml;0.1.x 在 settings.yaml)
|
|
78
|
+
- id: <你的模型 ID>
|
|
79
|
+
reasoningEfforts: # 键=菜单里显示的等级,值=选中时发给模型的 API 参数;只有 off 可以留空
|
|
80
|
+
off:
|
|
81
|
+
high: high
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## 已知限制
|
|
85
|
+
|
|
86
|
+
- 「测试连接」验证的是**地址 / 密钥 / 网关可达性,以及这个模型 ID 是否在网关返回的列表里** —— 它不会真的发一条消息给模型(DSH 的远程接口没有这个能力,客户端也读不回密钥)。所以「✓」只代表这条路由和这个 ID 是通的,不等于这个模型一定能补全
|
|
87
|
+
- 设置页右下角的排序浮窗**只列你自己添加的供应商**(写进配置的那些),官方路由**根本不进这个浮窗**;想在左栏看到官方路由,看顶部只读的「官方(内置)」分组
|
|
88
|
+
- 浮窗里排出的供应商顺序会**镜像**到官方模型页的卡片上;官方卡片(DeepSeek 官方等)被刻意保持在最前面
|
|
89
|
+
- 供应商顺序、浮窗位置只存在当前浏览器;模型顺序存在 DSH 的用户配置里,同一份 DSH 配置的所有设备共用——两台机器各装一份 DSH 则互不相通
|
|
90
|
+
- 不修改 DSH 本体,只通过官方提供的扩展点接入
|
|
91
|
+
|
|
92
|
+
## 许可
|
|
93
|
+
|
|
94
|
+
MIT
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
想自己改这个插件、或者想了解它内部怎么实现的,见 [DEVELOPMENT.md](./DEVELOPMENT.md)。
|
package/cordis.patch.yml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# @nimoxie/dsh-model-organizer bundle patch: one host row over the web profile.
|
|
2
|
-
# The row name resolves from the profile's own node_modules where
|
|
3
|
-
# `dsh plugin --profile web add <path>` installed this package.
|
|
4
|
-
- insert:
|
|
5
|
-
- id: model-organizer
|
|
1
|
+
# @nimoxie/dsh-model-organizer bundle patch: one host row over the web profile.
|
|
2
|
+
# The row name resolves from the profile's own node_modules where
|
|
3
|
+
# `dsh plugin --profile web add <path>` installed this package.
|
|
4
|
+
- insert:
|
|
5
|
+
- id: model-organizer
|
|
6
6
|
name: "@nimoxie/dsh-model-organizer"
|