@nimoxie/dsh-model-organizer 0.5.11 → 0.5.12

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/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
@@ -8,49 +8,52 @@
8
8
 
9
9
  ## 功能
10
10
 
11
- **输入框的模型菜单**
12
- - 根层与官方一致:「模型」「推理等级」两个入口——「推理等级」**常驻**,未配置等级的模型上置灰、不可点
13
- - 「模型」里保留本插件的改进:按供应商分组、可折叠,顺序与设置页浮窗一致,当前模型字体加粗高亮
14
- - 模型多于 4 个时,「模型」层顶部有官方同款的「搜索模型」框(0.2.0-rc.2 起官方才有此样式,旧版自动隐藏)
15
- - 外观完全沿用官方样式(同一个菜单表面、同一套图标,含官方的毛玻璃背景)
16
-
17
- **排序**
18
- - 在「设置 → 模型」右下角的浮窗里,**直接拖动**供应商行或模型行
19
- - 模型顺序通过官方设置接口持久化(跟着 DSH 的配置走,不存浏览器);供应商顺序只记在当前浏览器里
20
-
21
- **设置页:本插件自己的页面(接管「模型」这一行)**
22
- - 「设置 → 模型」这一行被本插件接管,点开就是本插件自己的页面(导航里仍然只有「模型」一行,本插件不会多占一格)。左栏最上是**只读的「官方(内置)」分组**——DeepSeek 官方那几条路由:悬停提示「官方路由 · 请到官方模型页编辑(点击前往)」,点一下会切回官方模型页(导航仍然是「模型」一行,配置不动)。下面是自己添加的供应商,按「官方目录 / 自定义供应商」分组,**都能拖动排序**(顺序只记在本机),行的悬停与抓握光标与设置页浮窗完全一致
23
- - 右栏编辑选中供应商:API 地址、API 格式(三种协议)即时保存;密钥粘贴后写入凭据库(页面读不回明文,可清除)
24
- - 模型列表的每一行是和供应商行同构的**一整行**(绿点 + 名称 + 参数摘要):**按住整行就能拖动排序**(手感和官方模型页右下角浮窗里的供应商行一致),**单击打开「模型详情」弹窗**,在里面改这个模型的全部配置——模型 ID、显示名、上下文窗口、最大输出 token、输入模态(文本 / 图片)、推理等级(继承 / 不支持 / 自定义)、是否启用,也可以删除该模型;**保存后立即写回 DSH 配置**(保存按钮只在弹窗里;页面底部那个旧按钮和行内输入框都没了)
25
- - 模型列表右上角有「**获取可用模型**」:调用官方发现接口(DSH 目录里已有的供应商不发网络请求;自己加的网关才会去问 `GET {baseURL}/models`),弹出「选择要添加的模型」——可搜索、可全选,**勾选后点「添加所选」才写回配置**,取消或关闭不影响现有配置
26
- - 左栏列表末尾有虚线框「**+ 添加模型提供商**」(与官方模型页同一形态):填路由 ID、显示名称、API 地址、API 格式、密钥、**至少一个模型 ID** 即可新建一条供应商路由;路由 ID 会做非空 / 字符集 / 重名校验,配置与密钥引用在**同一次写入**里落地
27
- - 模型 ID 是**必填**的:自己添加的路由不在 DSH 的目录里,配置里没有模型它就解析不出来(DSH 会直接报 "resolves no models")。填好 API 地址与密钥后可以点「**从网关获取**」,它会按你填的地址去问一次网关,把模型 ID 自动填进来;也可以手动输入,多个用逗号或空格分隔
28
- - 供应商详情右上角(启用开关左边)有一个**垃圾桶图标按钮**(和界面其它图标同一套素材,悬停/读屏为「删除供应商」):先弹确认,确认后移除这条自建路由的配置,并清理本页为它派生的密钥引用(别处配置的密钥不动);官方路由不提供这个按钮
29
- - 每条模型行右侧有两个**带圆角边框的图标按钮**:**🔗 测试连接** = 让宿主去问该供应商的模型列表,并检查这个模型 ID 在不在其中(自建路由会真的访问网关、用已保存的密钥;目录已描述的路由直接读目录)。点击后图标变成**转圈**,结果换成 **✓**(可达且在列表)/ **⚠**(可达但不在列表)/ **✗**(失败),颜色区分、悬停看原因,**图标与按钮尺寸始终不变**;**🗑** = 从配置里删掉这个模型(每条路由至少保留一个)
30
- - 每行左侧的**绿点就是启用开关**:亮=启用,暗=停用。**启用 = 这一项出现在本插件的模型菜单里**;停用只是把它从**本插件的模型选择菜单**里移除(聊天框的模型菜单不再列出),**DSH 配置原样保留、随时可以点回来**。供应商行和模型行是同一个语义;状态与拖拽顺序一样存在本机
31
- - **默认接管官方「模型」页**:设置里**永远只有「模型」一行**(我们那格在两种状态下都隐藏),点它打开的就是被接管的那一页。**没有开关,按钮即状态**:本页标题右侧的「官方模型页」= 把这一行交还官方页;官方页浮窗里的「模型管理页」= 重新接替。两个方向都不改变菜单,只切换这一行背后的页
32
- - **每次打开「模型」都是我们的页**:接管状态不写盘(装了插件就以本插件的页为准);「交还官方页」**只对这一次打开设置有效** —— 关掉设置再进来,又是本插件的页(重载/重启同理)。判定照官方条目的优先级**相对计算**(官方 −1 赢 / 官方 +1 交还),不写死数值
33
- - 两页互相能到:本页头部有「官方模型页」,官方模型页右下角的浮窗里有「模型管理页」(实现见 DEVELOPMENT.md 的 B3 一节)。浮窗的头部**始终渲染**:本插件能排序的供应商少于 2 个时只收起列表,返回本页的按钮不会跟着消失
34
- - 本插件不删改官方页面,只接管「模型」这一行的落点;导航里始终只有「模型」一行(做法见 [DEVELOPMENT.md](./DEVELOPMENT.md) 的 B2 / B3 两节)
11
+ ### 聊天框的模型菜单
12
+ - 根层与官方一致:「模型」「推理等级」两个入口(「推理等级」常驻,模型未声明等级时置灰)
13
+ - 「模型」按供应商分组、可折叠,顺序与设置页浮窗一致;当前模型加粗
14
+ - 模型多于 4 个时出现官方同款的「搜索模型」框
15
+ - 外观完全沿用官方菜单(同一表面、同一套图标、同一毛玻璃背景)
16
+
17
+ ### 设置页「模型」:本插件接管
18
+ - 设置里**始终只有「模型」一行**,点开就是本插件的页;每次打开设置都默认回到本页
19
+ - 交还官方页:本页标题右侧的「官方模型页」= 这一次打开期间交还;官方页右下角浮窗里的「模型管理页」= 再接管回来
20
+ - 左栏:置顶只读的「官方(内置)」路由(点击切回官方页)+ 自建供应商(分「官方目录 / 自定义供应商」,可拖动排序,顺序只记本机)
21
+ - 右栏:API 地址、API 格式(三种协议)改动即时保存;密钥写入凭据库(读不回明文,可清除)
22
+ - 模型列表一行一个:**整行可拖动排序**,**单击打开「模型详情」**——ID、显示名、上下文窗口、最大输出、输入模态、推理等级、启用/删除;保存立即写回 DSH 配置
23
+ - 「获取可用模型」:调官方发现接口(目录里已有的供应商不联网,自己加的网关才问 `GET {baseURL}/models`),弹窗可搜索、全选,**勾选后点「添加所选」才写回**
24
+ - 左栏末尾虚线框「**+ 添加模型提供商**」:路由 ID、显示名、API 地址、格式、密钥、**至少一个模型 ID**;ID 校验非空/字符集/重名,配置与密钥引用一次写入
25
+ - 删除供应商:详情右上角垃圾桶,先确认;删配置并清理本页派生的密钥引用(别处配置的密钥不动),官方路由没有这个按钮
26
+ - 每行的**绿点就是启用开关**:亮=出现在本插件菜单,暗=从本插件菜单移除;**DSH 配置原样保留**,状态存本机
27
+
28
+ ### 排序、按钮与细节
29
+ - 设置页右下角浮窗:**直接拖动**供应商行/模型行排序;模型顺序写进 DSH 配置(同一份配置的所有设备共用),供应商顺序与浮窗位置只记在当前浏览器
30
+ - 页面上所有按钮(含所有弹窗)都有**悬停反馈**:普通按钮提亮、主要操作保持强调色、危险操作泛红、开关用光环(不改开/关底色,避免被误读为状态变化)
31
+ - 模型行两颗图标键:🔗 **测速**(问网关该模型在不在列表里,结论 ✓/⚠/✗ 变色)、🗑 **删除**;两者同尺寸,测速键是普通按钮的浅底,删除键是红框
32
+ - 悬停文案只说明「这个按钮做什么 / 现在什么状态」,不写实现细节
35
33
 
36
34
  ## 安装
37
35
 
38
- `<profile>` 是你的目标环境:浏览器版用 `web`,桌面客户端用 `desktop`。
36
+ 装到哪个环境,就用对应的方法:
37
+
38
+ **浏览器版(`web`,CLI 管理)**
39
39
 
40
40
  ```sh
41
- dsh plugin --profile <profile> add @nimoxie/dsh-model-organizer
41
+ dsh plugin --profile web add @nimoxie/dsh-model-organizer
42
42
  ```
43
43
 
44
- - 浏览器版(`web`):装完重启服务(关掉再 `dsh web`)。
45
- - 桌面客户端(`desktop`):桌面 profile 由客户端独占管理,请在客户端的「插件管理」页添加本包(包名 `@nimoxie/dsh-model-organizer`)。
44
+ 装完重启服务(关掉再 `dsh web`)。`--profile` 后面是目标 profile 名:浏览器版是 `web`,你自己另外创建的 profile 填对应的名字。
45
+
46
+ **桌面客户端**
47
+
48
+ 桌面 profile 由客户端独占管理,**不要用上面的 CLI 命令**。请在客户端的「插件管理」页添加本包(包名 `@nimoxie/dsh-model-organizer`)。
46
49
 
47
- 卸载(CLI 可管理的环境):
50
+ 卸载(CLI 环境):
48
51
 
49
52
  ```sh
50
53
  dsh plugin --profile <profile> remove @nimoxie/dsh-model-organizer
51
54
  ```
52
55
 
53
- 也可以从 GitHub 或本地目录装(开发用):
56
+ 开发用:从 GitHub 或本地目录装
54
57
 
55
58
  ```sh
56
59
  dsh plugin --profile <profile> add github:NimoXie15/dsh-model-organizer
@@ -79,10 +82,10 @@ dsh plugin --profile <profile> add link:/absolute/path/to/dsh-model-organizer
79
82
 
80
83
  ## 已知限制
81
84
 
82
- - 「测试连接」验证的是**地址 / 密钥 / 网关可达性,以及这个模型 ID 是否在网关返回的列表里** —— 它不会真的发一条消息给模型(DSH 的远程接口没有这个能力,客户端也读不回密钥)。所以「✓」只代表这条路由和这个 ID 是通的,不等于这个模型一定能补全
85
+ - 「测试连接」验证的是**地址 / 密钥 / 网关可达性,以及这个模型 ID 是否在网关返回的列表里** —— 它不会真的发一条消息给模型(DSH 的远程接口没有这个能力,客户端也读不回密钥)。所以「✓」只代表这条路由和这个 ID 是通的,不等于这个模型一定能补全
83
86
  - 设置页右下角的排序浮窗**只列你自己添加的供应商**(写进配置的那些),官方路由**根本不进这个浮窗**;想在左栏看到官方路由,看顶部只读的「官方(内置)」分组
84
87
  - 浮窗里排出的供应商顺序会**镜像**到官方模型页的卡片上;官方卡片(DeepSeek 官方等)被刻意保持在最前面
85
- - 供应商顺序、浮窗位置只存在当前浏览器;模型顺序存在 DSH 的用户配置里,同一份 DSH 的所有设备共用——两台机器各装一份 DSH 则互不相通
88
+ - 供应商顺序、浮窗位置只存在当前浏览器;模型顺序存在 DSH 的用户配置里,同一份 DSH 配置的所有设备共用——两台机器各装一份 DSH 则互不相通
86
89
  - 不修改 DSH 本体,只通过官方提供的扩展点接入
87
90
 
88
91
  ## 许可
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"