dsh-model-groups 0.3.3 → 0.3.5
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 +68 -103
- package/lib/client.js +308 -86
- package/native/pi-ai.patch.json +12 -0
- package/native/settings-models.patch.json +189 -1
- package/package.json +5 -2
- package/scripts/build.mjs +5 -1
- package/scripts/doctor.mjs +39 -0
- package/scripts/native-patches.mjs +18 -6
- package/scripts/setup.mjs +40 -0
- package/src/auto-patch.js +48 -0
- package/src/client.js +20 -0
- package/src/groups.css +20 -0
- package/src/index.js +37 -4
- package/src/maintenance-fallback.js +160 -0
- package/src/maintenance-host.js +250 -0
- package/src/maintenance-state.js +171 -0
- package/src/maintenance.js +164 -0
- package/src/model-select.js +46 -85
- package/src/settings-page.css +21 -0
- package/src/settings-page.js +56 -0
package/README.md
CHANGED
|
@@ -1,160 +1,125 @@
|
|
|
1
1
|
# DSH Model Groups
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
为 DeepSeek Harness 网页端提供分层模型菜单与多密钥管理。同一供应商共用 Provider ID、API 地址和协议,各配置分别设置名称、密钥与模型列表。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- 同一供应商的多份配置可以使用相同的模型 ID,选择时分别使用对应密钥。
|
|
7
|
-
- 支持名称搜索、全部展开、全部收起,以及折叠状态记忆。
|
|
8
|
-
- 模型和密钥由用户手动选择,不自动轮换或切换配置。
|
|
5
|
+
## 功能
|
|
9
6
|
|
|
10
|
-
|
|
7
|
+
- 按“供应商 → 密钥配置 → 模型”浏览和选择。
|
|
8
|
+
- 支持原地折叠、侧边面板、名称搜索、全部展开与收起。
|
|
9
|
+
- 记住各级折叠状态;搜索时临时展开匹配项。
|
|
10
|
+
- 不同密钥配置可使用相同模型 ID,选择时使用对应配置的密钥。
|
|
11
|
+
- 手动选择配置,不自动轮换密钥或切换到其他配置。
|
|
12
|
+
- 模型设置中已保存的密钥项默认折叠,名称和原密钥栏仍可见;展开编辑模型,新建和错误项保持展开,折叠不丢失草稿。
|
|
13
|
+
- 实际修改补丁才提示重启;普通检查不要求重启,关闭状态标记不再被误当成待重启。
|
|
11
14
|
|
|
12
|
-
|
|
15
|
+
## 环境要求
|
|
13
16
|
|
|
14
|
-
|
|
17
|
+
- DeepSeek Harness **0.2.2-rc.1**。
|
|
18
|
+
- Node.js **22 或以上**。
|
|
19
|
+
- Harness 网页界面;在 dsh-go 中使用时,功能出现在对应网页,不影响 App 原生模型菜单。
|
|
20
|
+
- DSH 安装目录可写,且目标程序文件符合支持的版本与哈希。
|
|
15
21
|
|
|
16
|
-
|
|
22
|
+
**本版本不会自动打补丁。** 请在网页设置 → 模型分组明确选择安装。安装会校验、备份并修改五个宿主文件,之后须重启引擎。普通卸载插件不会撤销宿主修改。未知版本/文件不强制覆盖。
|
|
17
23
|
|
|
18
|
-
##
|
|
24
|
+
## 安装
|
|
19
25
|
|
|
20
|
-
|
|
26
|
+
在目标设备的 DSH 环境中执行:
|
|
21
27
|
|
|
22
|
-
```
|
|
23
|
-
|
|
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
|
-
不要把下载成功或插件注册成功当成整项安装已完成。
|
|
28
|
+
```bash
|
|
29
|
+
dsh plugin --profile web add https://github.com/betsunninda9-lgtm/dsh-model-groups/releases/download/v0.3.5/dsh-model-groups-0.3.5.tgz
|
|
46
30
|
```
|
|
47
31
|
|
|
48
|
-
|
|
32
|
+
此包只用于 DSH 0.2.2-rc.1 网页端。安装或更新插件后需重启原引擎使新后端生效,再刷新页面。已有 beta.3~beta.5 的磁盘补丁会保留,不会自动重打或还原。需要新折叠界面时,在模型分组设置页点击“更新多密钥补丁”,完成后重启原引擎并刷新网页;旧补丁可直接更新或还原,不需要先关闭多密钥。未打补丁时仍可使用普通模型;多密钥需在本页安装补丁并再次重启后启用。
|
|
49
33
|
|
|
50
|
-
|
|
34
|
+
## 使用
|
|
51
35
|
|
|
52
|
-
|
|
36
|
+
1. 打开 **设置 → 模型**,新增或编辑自定义模型 API。
|
|
37
|
+
2. 填写供应商公共的 Provider ID、API 地址和协议。
|
|
38
|
+
3. 开启 **多密钥配置**,为每份配置填写名称、密钥和模型列表,点击“应用”。
|
|
39
|
+
4. 在会话模型菜单中展开供应商和配置,选择需要的模型。
|
|
53
40
|
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
41
|
+
```text
|
|
42
|
+
示例供应商 A
|
|
43
|
+
配置 A
|
|
44
|
+
示例模型
|
|
45
|
+
配置 B
|
|
46
|
+
示例模型
|
|
47
|
+
示例供应商 B
|
|
48
|
+
示例模型
|
|
60
49
|
```
|
|
61
50
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
### 2. 确认 DSH 目录并检查补丁
|
|
65
|
-
|
|
66
|
-
`DSH_ROOT` 是正在使用的 DSH 安装目录:该目录本身或其 `node_modules/@deepseek-ai/dsh` 下的包应为 `@deepseek-ai/dsh@0.2.2-rc.1`,且该目录下包含补丁要修改的 `node_modules/@deepseek-ai/` 文件。它不是插件目录、profile 目录或项目工作目录。
|
|
51
|
+
已有单密钥配置与旧会话选择会保留。开启多密钥后,可在模型菜单手动选择新配置;插件不会自动合并已有供应商或迁移会话选择。
|
|
67
52
|
|
|
68
|
-
|
|
53
|
+
关闭多密钥配置会保留已保存的配置与凭据,删除配置也不会同时删除凭据。有尚未保存的密钥输入时,需要先保存或清空,才能确认关闭。
|
|
69
54
|
|
|
70
|
-
|
|
71
|
-
read -r -p '请输入实际 DSH 安装目录:' DSH_ROOT
|
|
72
|
-
node scripts/native-patches.mjs --dsh-root "$DSH_ROOT" --check
|
|
73
|
-
```
|
|
55
|
+
窄屏侧边面板会根据可用空间调整各级宽度;三级并列时,较长名称可能截断。
|
|
74
56
|
|
|
75
|
-
|
|
57
|
+
## 更新
|
|
76
58
|
|
|
77
|
-
|
|
59
|
+
使用对应发布版本的安装命令更新,随后按加载日志提示重启引擎并刷新网页。兼容补丁已经存在且未变化时,不会重复应用。
|
|
78
60
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
dsh plugin --profile web add "$PLUGIN_DIR"
|
|
83
|
-
```
|
|
61
|
+
DSH 升级前请确认插件兼容范围。新版本或未知文件会被拒绝,需要等待对应适配,不能强制套用旧补丁。
|
|
84
62
|
|
|
85
|
-
|
|
63
|
+
DSHMarket 的收录需经过社区审核。普通插件的市场更新跟随 npm `latest`,不会自动跟随 GitHub 发布包或 npm `beta` 标签。
|
|
86
64
|
|
|
87
|
-
|
|
65
|
+
## 安装诊断
|
|
88
66
|
|
|
89
|
-
|
|
67
|
+
没有出现“多密钥配置”开关时,先确认原引擎已在启用多密钥后重启,并刷新原网页。仍未恢复,可在已安装插件目录执行:
|
|
90
68
|
|
|
91
69
|
```bash
|
|
92
|
-
|
|
93
|
-
node scripts/native-patches.mjs --dsh-root "$DSH_ROOT" --apply
|
|
70
|
+
node scripts/doctor.mjs --dsh-root /opt/dsh --json
|
|
94
71
|
```
|
|
95
72
|
|
|
96
|
-
|
|
73
|
+
`/opt/dsh` 请替换为实际 DSH 安装目录。五项文件应为 `patched`。该命令只读检查程序文件,不读取密钥;磁盘状态正常不代表运行中的模块已刷新。
|
|
97
74
|
|
|
98
|
-
|
|
75
|
+
自动安装日志位于原引擎日志中。遇到文件不受支持、目录布局不兼容或权限不足时,请提供程序包版本与文件 SHA-256,勿提供密钥。
|
|
99
76
|
|
|
100
|
-
|
|
77
|
+
原文件备份保存在 `DSH_HOME/dsh-model-groups/<安装目录指纹>/backups`,不会随插件包更新丢失。安装意外中断可能留下 `patch.lock`;确认没有安装进程后再处理,不要并发重试。
|
|
101
78
|
|
|
102
|
-
|
|
103
|
-
- 在“设置 → 模型”编辑支持的自定义模型 API,可以看到“多密钥配置”开关。
|
|
104
|
-
- 开启并保存多份配置后,模型菜单出现对应的配置层级。
|
|
79
|
+
## 独立补丁管理页(0.3.5)
|
|
105
80
|
|
|
106
|
-
|
|
81
|
+
网页设置 → 模型分组,提供:**启用多密钥 / 关闭多密钥**,以及次要操作 **关闭并卸载插件**。点操作后只确认一次,无需勾选或输入英文。首次安装不会修改宿主,点击刷新也只读检查。详细检查折叠显示,可以复制脱敏诊断。
|
|
107
82
|
|
|
108
|
-
|
|
83
|
+
普通卸载保留宿主修改,后续引擎升级、其他插件修改同一文件可能冲突;补丁被覆盖后旧多密钥选择可能失效。页面会持续警告,而非只弹一次。磁盘校验不等于运行中模块已刷新;操作完成需重启原引擎。无法证明运行中版本时不显示虚假生效结论。
|
|
109
84
|
|
|
110
|
-
|
|
85
|
+
本阶段已实现手动补丁生命周期与诊断细分。**备用模型批量切换、私有配置归档和清理尚未接入页面,不声称已完成上一轮设计的全部迁移功能。** 多密钥配置、别名选择、历史子智能体策略及未能完成的检查改为风险提示,不再锁死操作。确认关闭意味着接受旧选择可能失效、旧配置可能影响原版引擎重启的风险;不声称无损迁移。文件冲突、已确认运行任务或共用安装的其他引擎仍阻止操作。没有修改凭据或聊天历史,不会自动请求模型、偷偷切换 DeepSeek 或拆分供应商。
|
|
111
86
|
|
|
112
|
-
|
|
87
|
+
安装和移除都要求已认证的 owner、短期一次性票据、完整文件校验和互斥锁。未知文件不覆盖。移除只操作本插件已知补丁;卸载必须在还原验证成功后才执行。断连、卸载失败、仅要求重启不算成功。恢复标记与备份保留;重新安装补丁时仅在明确确认应用并验证成功后清理自身恢复标记。
|
|
113
88
|
|
|
114
|
-
|
|
115
|
-
示例供应商 A
|
|
116
|
-
配置 A
|
|
117
|
-
示例模型
|
|
118
|
-
配置 B
|
|
119
|
-
示例模型
|
|
120
|
-
示例供应商 B
|
|
121
|
-
示例模型
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
选择哪个配置,就使用哪份配置的密钥。搜索供应商、配置或模型名称时,匹配路径会临时展开;清空搜索后恢复原来的折叠状态。
|
|
89
|
+
检查范围限当前 home/安装,维护时先停止任务、保存草稿,不要在其他页变更选择或配置;插件锁不是全局请求屏障。未验证的依赖或活动状态会明确提示但不冒充已发现危险;请自行确保所有任务已停止。依赖检查不是无损卸载证明。诊断只展示固定错误类别,不展示秘密、表达式正文或原始路径。
|
|
125
90
|
|
|
126
|
-
|
|
91
|
+
## 卸载与还原(手工备用路径)
|
|
127
92
|
|
|
128
|
-
|
|
93
|
+
普通插件列表移除仍不会自动还原宿主补丁或删除凭据;更新/HMR 也不会触发还原。开发预览版可优先用上述专用入口。手工完整还原前,请先:
|
|
129
94
|
|
|
130
|
-
|
|
95
|
+
1. 将相关会话和子代理切换回普通单密钥模型。
|
|
96
|
+
2. 关闭多密钥配置,备份配置并清理原版 DSH 不支持的 `multiKey`、`keyEntries` 字段,保留仍需使用的凭据。
|
|
97
|
+
3. 在独立维护目录保留插件包,确保卸载后仍能运行还原脚本。
|
|
131
98
|
|
|
132
|
-
|
|
99
|
+
普通卸载不还原补丁。以下为高级手工备用路径(本预览启动不再自动应用):
|
|
133
100
|
|
|
134
|
-
|
|
101
|
+
```bash
|
|
102
|
+
dsh plugin --profile web remove dsh-model-groups
|
|
103
|
+
```
|
|
135
104
|
|
|
136
|
-
|
|
137
|
-
2. 关闭各供应商的多密钥配置并应用。备份 DSH 配置后,清理原版 DSH 不支持的 `multiKey`、`keyEntries` 配置字段;保留仍需使用的单密钥配置和凭据。
|
|
138
|
-
3. 停止 DSH,在保留的插件目录中执行下面命令,再启动原服务。
|
|
105
|
+
随后安排维护窗口,停止原服务,在保留的插件目录执行:
|
|
139
106
|
|
|
140
107
|
```bash
|
|
141
|
-
|
|
142
|
-
node scripts/native-patches.mjs --dsh-root "$DSH_ROOT" --revert
|
|
143
|
-
dsh plugin --profile web remove dsh-model-groups
|
|
108
|
+
node scripts/native-patches.mjs --dsh-root /opt/dsh --revert
|
|
144
109
|
```
|
|
145
110
|
|
|
146
|
-
|
|
111
|
+
完成后启动原服务并刷新网页。还原脚本按校验过的文件版本恢复代码,不修改会话或凭据。仍引用 `@dsh-key/` 模型的会话在还原后无法继续使用该选择。
|
|
147
112
|
|
|
148
113
|
## 开发
|
|
149
114
|
|
|
150
|
-
从 GitHub 获取源码后,运行:
|
|
151
|
-
|
|
152
115
|
```bash
|
|
153
116
|
npm run build
|
|
154
117
|
npm test
|
|
155
118
|
npm run check:build
|
|
156
119
|
```
|
|
157
120
|
|
|
158
|
-
|
|
121
|
+
设置 `DSH_ROOT` 可启用依赖对应 DSH 程序文件的回归测试。源码包含层级、选择器交互、面板布局及补丁安装与恢复测试。
|
|
122
|
+
|
|
123
|
+
## 许可证
|
|
159
124
|
|
|
160
|
-
|
|
125
|
+
[MIT](LICENSE)。包含改编自 DeepSeek Harness 的代码,保留原版权声明。
|