dsh-model-groups 0.3.2 → 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 +109 -76
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,127 +1,160 @@
|
|
|
1
|
-
#
|
|
1
|
+
# DSH Model Groups
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
给 DeepSeek Harness 的模型选择菜单增加分层折叠,并在自定义模型 API 中管理多份密钥配置。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
- 按“供应商 → 密钥配置 → 模型”展开和选择。
|
|
6
|
+
- 同一供应商的多份配置可以使用相同的模型 ID,选择时分别使用对应密钥。
|
|
7
|
+
- 支持名称搜索、全部展开、全部收起,以及折叠状态记忆。
|
|
8
|
+
- 模型和密钥由用户手动选择,不自动轮换或切换配置。
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
## 适用范围
|
|
11
|
+
|
|
12
|
+
**当前版本仅支持 DSH `0.2.2-rc.1` 的 Harness 网页界面,安装脚本需要 Node.js 22 或更新版本。**
|
|
13
|
+
|
|
14
|
+
在 dsh-go 手机上使用时,功能出现在对应的 Harness 网页中。dsh-go 原生聊天界面的模型菜单不在本插件的修改范围内。
|
|
15
|
+
|
|
16
|
+
完整安装包括两部分:**注册客户端插件**,以及**应用五项 DSH 兼容补丁**。只安装 npm 包不会自动应用补丁。补丁用于让模型设置、模型发现和请求发送共同识别每份密钥配置。
|
|
17
|
+
|
|
18
|
+
## 交给 AI 安装
|
|
19
|
+
|
|
20
|
+
把下面整段复制给能够访问 DSH 安装环境的 AI。这是一项安装任务,不是文档审阅任务。
|
|
11
21
|
|
|
12
22
|
```text
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
23
|
+
请帮我安装 dsh-model-groups,并完成安装后的验证。
|
|
24
|
+
|
|
25
|
+
官方说明:
|
|
26
|
+
https://github.com/betsunninda9-lgtm/dsh-model-groups
|
|
27
|
+
|
|
28
|
+
请实际执行安装,不要只评价文档或给出命令建议:
|
|
29
|
+
1. 确认当前使用的 DSH 主机、profile 和界面。该插件仅支持
|
|
30
|
+
DSH 0.2.2-rc.1 的 Harness 网页界面;版本不符就停止并说明。
|
|
31
|
+
2. 阅读仓库当前 README,使用 npm 官方源下载当前版本,
|
|
32
|
+
解压到长期保留的插件目录。不要修改供应商、密钥或模型配置。
|
|
33
|
+
3. 找到正在使用的 DSH 实际安装目录,核对包名与版本。
|
|
34
|
+
不要把插件目录当成 DSH 目录,也不要猜测安装路径。
|
|
35
|
+
4. 在解压后的插件目录执行 native-patches.mjs 的 --check,
|
|
36
|
+
显式传入 --dsh-root。遇到哈希或版本不符就停止,不强制覆盖。
|
|
37
|
+
5. 用 dsh plugin --profile <当前profile> add <插件绝对路径>
|
|
38
|
+
注册插件。只有当前实例使用 web profile 时才填写 web。
|
|
39
|
+
6. 在合适的停机窗口应用兼容补丁;如果当前对话依赖这个引擎,
|
|
40
|
+
先完成可在线执行的步骤,再告诉我如何停止、应用补丁和重启。
|
|
41
|
+
不要直接中断正在进行的对话。
|
|
42
|
+
7. 重启原来使用的 DSH 服务并刷新原网页,核对模型菜单分组和
|
|
43
|
+
设置页“多密钥配置”开关。不要启动另一个服务代替原服务。
|
|
44
|
+
8. 报告安装版本、插件目录、补丁检查结果,以及是否仍需我重启。
|
|
45
|
+
不要把下载成功或插件注册成功当成整项安装已完成。
|
|
20
46
|
```
|
|
21
47
|
|
|
22
|
-
|
|
23
|
-
- 供应商和密钥配置独立折叠;收起父级不清除子级折叠状态。
|
|
24
|
-
- 配置数量按需增删,不设置固定的数量上限。名称去除首尾空格,长度为 1–120 个字符;保存时每个配置至少包含一个模型。
|
|
25
|
-
- 相同模型 ID 可以同时出现在不同配置中;选择保留精确配置身份,不因同名而合并。
|
|
26
|
-
- 只使用手动选中的配置。密钥缺失、配置移除或多密钥配置关闭时,旧配置选择会失败或从菜单移除,**不会改用其他密钥、轮换或自动故障切换**。
|
|
27
|
-
- 保存前可用输入的 API 密钥获取模型;已保存的配置按其精确标识在宿主查询。不会默默改用供应商原来的密钥。
|
|
28
|
-
- API 密钥使用原生的只写输入与凭据服务,不会回显已保存的明文。留空保留原凭据;替换共享引用的密钥需要明确确认。
|
|
48
|
+
## 手动安装
|
|
29
49
|
|
|
30
|
-
|
|
50
|
+
以下命令适用于 Bash 环境。先确认 DSH 版本,再执行。
|
|
31
51
|
|
|
32
|
-
|
|
33
|
-
- 配置名称位于卡片内部的标题栏,移除按钮在标题栏右侧;不再使用挂在边框上的图例标题。长名称与凭据引用允许换行。
|
|
34
|
-
- 支持多密钥的已有自定义供应商先显示「公共设置」,再显示密钥配置;其他供应商保持原有表单顺序与折叠状态。
|
|
35
|
-
- 点击关闭不会立即停用,先显示原生确认弹窗。取消、关闭按钮、Escape 或遮罩关闭只取消确认,不会改变开关或丢弃输入;确认后仍须点击「应用」才改变运行配置。
|
|
36
|
-
- **有尚未保存的 API 密钥输入时禁止确认关闭**,只提供「返回密钥配置」。输入仅为空格也触发保护;凭据保存失败留下的输入同样受保护。先保存成功,或明确清空不需要的输入,再关闭。
|
|
52
|
+
### 1. 下载并解压
|
|
37
53
|
|
|
38
|
-
|
|
54
|
+
```bash
|
|
55
|
+
PLUGIN_DIR="${DSH_HOME:-$HOME/.dsh}/local-plugins/dsh-model-groups-0.3.3"
|
|
56
|
+
mkdir -p "$PLUGIN_DIR"
|
|
57
|
+
cd "$PLUGIN_DIR"
|
|
58
|
+
npm pack dsh-model-groups@0.3.3 --registry=https://registry.npmjs.org/
|
|
59
|
+
tar -xzf dsh-model-groups-0.3.3.tgz --strip-components=1
|
|
60
|
+
```
|
|
39
61
|
|
|
40
|
-
|
|
62
|
+
这一步只准备插件文件。请保留该目录,后续注册与补丁回退都需要使用它。
|
|
41
63
|
|
|
42
|
-
|
|
64
|
+
### 2. 确认 DSH 目录并检查补丁
|
|
43
65
|
|
|
44
|
-
|
|
66
|
+
`DSH_ROOT` 是正在使用的 DSH 安装目录:该目录本身或其 `node_modules/@deepseek-ai/dsh` 下的包应为 `@deepseek-ai/dsh@0.2.2-rc.1`,且该目录下包含补丁要修改的 `node_modules/@deepseek-ai/` 文件。它不是插件目录、profile 目录或项目工作目录。
|
|
45
67
|
|
|
46
|
-
|
|
68
|
+
下面会询问实际路径,不要直接填写示例路径:
|
|
47
69
|
|
|
48
|
-
|
|
70
|
+
```bash
|
|
71
|
+
read -r -p '请输入实际 DSH 安装目录:' DSH_ROOT
|
|
72
|
+
node scripts/native-patches.mjs --dsh-root "$DSH_ROOT" --check
|
|
73
|
+
```
|
|
49
74
|
|
|
50
|
-
|
|
75
|
+
成功时会列出五个目标文件。`pristine` 表示尚未应用,`patched` 表示已应用本插件对应的补丁。版本、内容或路径不匹配时,脚本报错并停止;请先解决原因。
|
|
51
76
|
|
|
52
|
-
|
|
53
|
-
- 全部展开 / 全部收起同时作用于供应商和密钥配置。
|
|
54
|
-
- `↑` / `↓` 在工具条、标题和可见模型间移动;标题上的 `←` / `→` 收起 / 展开,`Enter` / 空格切换。
|
|
55
|
-
- 搜索框内 `↑` / `↓` 移动高亮,`Enter` / `Tab` 选择;`Esc` 返回上一层或关闭菜单。
|
|
56
|
-
- 保留官方模型目录、推理等级、加载重试、标签插槽、锁定和错误提示。渲染异常时使用同样校验配置有效性的简化菜单。
|
|
77
|
+
### 3. 注册插件
|
|
57
78
|
|
|
58
|
-
|
|
79
|
+
以下以 `web` profile 为例;其他实例请填写其实际 profile 名称:
|
|
59
80
|
|
|
60
|
-
|
|
81
|
+
```bash
|
|
82
|
+
dsh plugin --profile web add "$PLUGIN_DIR"
|
|
83
|
+
```
|
|
61
84
|
|
|
62
|
-
|
|
85
|
+
注册成功仍不代表兼容补丁已经生效。
|
|
63
86
|
|
|
64
|
-
|
|
87
|
+
### 4. 应用补丁并重启
|
|
65
88
|
|
|
66
|
-
|
|
89
|
+
保存正在编辑的内容,停止正在使用的 DSH 服务。在外部终端回到步骤 1 的插件目录,使用步骤 2 确认的 DSH 路径执行:
|
|
67
90
|
|
|
68
91
|
```bash
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
tar -xzf dsh-model-groups-0.3.2.tgz -C dsh-model-groups --strip-components=1
|
|
72
|
-
cd dsh-model-groups
|
|
92
|
+
read -r -p '请输入实际 DSH 安装目录:' DSH_ROOT
|
|
93
|
+
node scripts/native-patches.mjs --dsh-root "$DSH_ROOT" --apply
|
|
73
94
|
```
|
|
74
95
|
|
|
75
|
-
|
|
96
|
+
补丁脚本会校验版本与文件哈希,备份原文件后写入变更。已经应用的补丁会跳过;脚本不会启动或停止 DSH。
|
|
76
97
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
98
|
+
用原来的方式启动 DSH,然后刷新原网页。dsh-go 本机环境中,先准备好外部终端的执行方式,再停止引擎;停止后当前 AI 对话无法继续替你执行命令。
|
|
99
|
+
|
|
100
|
+
### 5. 确认安装结果
|
|
101
|
+
|
|
102
|
+
- 会话中的模型菜单按供应商分组,能够展开和收起。
|
|
103
|
+
- 在“设置 → 模型”编辑支持的自定义模型 API,可以看到“多密钥配置”开关。
|
|
104
|
+
- 开启并保存多份配置后,模型菜单出现对应的配置层级。
|
|
105
|
+
|
|
106
|
+
只有客户端分组出现、设置页没有新开关时,请检查五项补丁是否全部应用,以及原 DSH 服务是否已重启。
|
|
107
|
+
|
|
108
|
+
## 使用方法
|
|
109
|
+
|
|
110
|
+
在“设置 → 模型”新增或编辑自定义模型 API,填写公共的 Provider ID、API 地址和协议。开启“多密钥配置”,为每份配置填写名称、密钥和模型列表,点击“应用”保存。
|
|
80
111
|
|
|
81
|
-
|
|
82
|
-
node scripts/native-patches.mjs --dsh-root /实际安装的DSH根目录 --apply
|
|
112
|
+
例如,两个配置都提供同一模型时,菜单中会分别显示:
|
|
83
113
|
|
|
84
|
-
|
|
85
|
-
|
|
114
|
+
```text
|
|
115
|
+
示例供应商 A
|
|
116
|
+
配置 A
|
|
117
|
+
示例模型
|
|
118
|
+
配置 B
|
|
119
|
+
示例模型
|
|
120
|
+
示例供应商 B
|
|
121
|
+
示例模型
|
|
86
122
|
```
|
|
87
123
|
|
|
88
|
-
|
|
124
|
+
选择哪个配置,就使用哪份配置的密钥。搜索供应商、配置或模型名称时,匹配路径会临时展开;清空搜索后恢复原来的折叠状态。
|
|
125
|
+
|
|
126
|
+
已有的单密钥配置会保留。旧会话仍使用原来的选择,需要时可手动切换到新配置。关闭多密钥配置会保留已保存的配置和凭据;删除某份配置也不会同时删除凭据。存在未保存的密钥输入时,需要先保存或清空输入,才能确认关闭。
|
|
89
127
|
|
|
90
|
-
|
|
128
|
+
插件不会自动合并已有供应商,也不会替用户迁移密钥。API 地址不同的服务应分别配置。
|
|
91
129
|
|
|
92
|
-
|
|
130
|
+
## 升级与卸载
|
|
93
131
|
|
|
94
|
-
DSH
|
|
132
|
+
**DSH 升级后,请先确认插件支持的新版本,不能把本版补丁强行应用到其他 DSH 版本。**
|
|
95
133
|
|
|
96
|
-
|
|
134
|
+
仅停用或移除客户端插件不会还原 DSH 兼容补丁。完整卸载前:
|
|
97
135
|
|
|
98
|
-
|
|
136
|
+
1. 在相关会话和子代理配置中切换回普通单密钥模型,确认不再使用带 `@dsh-key/` 前缀的选择。
|
|
137
|
+
2. 关闭各供应商的多密钥配置并应用。备份 DSH 配置后,清理原版 DSH 不支持的 `multiKey`、`keyEntries` 配置字段;保留仍需使用的单密钥配置和凭据。
|
|
138
|
+
3. 停止 DSH,在保留的插件目录中执行下面命令,再启动原服务。
|
|
99
139
|
|
|
100
140
|
```bash
|
|
101
|
-
|
|
141
|
+
read -r -p '请输入实际 DSH 安装目录:' DSH_ROOT
|
|
142
|
+
node scripts/native-patches.mjs --dsh-root "$DSH_ROOT" --revert
|
|
102
143
|
dsh plugin --profile web remove dsh-model-groups
|
|
103
144
|
```
|
|
104
145
|
|
|
105
|
-
|
|
146
|
+
其他 profile 请替换 `web`。还原脚本只恢复代码,不会替用户修改会话、配置或凭据;仍引用多密钥模型的会话在还原后将无法继续使用该选择。
|
|
106
147
|
|
|
107
|
-
##
|
|
148
|
+
## 开发
|
|
108
149
|
|
|
109
|
-
|
|
150
|
+
从 GitHub 获取源码后,运行:
|
|
110
151
|
|
|
111
152
|
```bash
|
|
112
153
|
npm run build
|
|
113
154
|
npm test
|
|
114
|
-
npm run test:ui
|
|
115
155
|
npm run check:build
|
|
116
|
-
npm run native:check -- --dsh-root /实际安装的DSH根目录
|
|
117
156
|
```
|
|
118
157
|
|
|
119
|
-
|
|
120
|
-
- [原生补丁管理器](scripts/native-patches.mjs)提供版本 / 哈希检查、应用与还原;[补丁目录](native/)存放可重放变更。
|
|
121
|
-
- 仓库内的测试覆盖层级、折叠状态、样式生命周期、客户端注册与[选择器交互](test/picker-ui.test.mjs),不读取真实凭据。
|
|
122
|
-
- 公开仓库不包含本机的宿主备份、配置、会话或依赖手机目录的历史测试。适配器与原生设置页的完整集成验收需要单独准备对应版本的 DSH 环境。
|
|
123
|
-
- [补丁安装器回归](test/native-patches.test.mjs)在临时目录实际应用 / 回退,并模拟写入失败、原子替换失败和并发修改;不重装或重启真实服务。
|
|
124
|
-
|
|
125
|
-
这些自动化检查不等于真实浏览器端到端验收。手机窄屏布局、中文输入法、原生菜单 portal 和刷新后的实际卡片,仍须在原页面检查。未获得重启授权时,不会为了验收中断当前会话。
|
|
158
|
+
需要检查真实 DSH 目标文件时,可设置 `DSH_ROOT` 后运行测试。测试覆盖层级、折叠状态、选择器交互和补丁安装器;真实网页中的安装验收仍需按上文完成。
|
|
126
159
|
|
|
127
|
-
|
|
160
|
+
本项目采用 MIT 许可证。客户端选择器包含改编自 DeepSeek Harness 的代码,保留原版权声明。
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-model-groups",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.3.3",
|
|
4
|
+
"description": "DSH 网页模型选择器:供应商与密钥配置分层折叠、多密钥手动选择。支持 DSH 0.2.2-rc.1。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|