@lynn123411/dsh-model-submenu 0.2.1 → 0.2.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/DETAILS.md +46 -0
- package/README.md +12 -9
- package/package.json +18 -17
package/DETAILS.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# @lynn123411/dsh-model-submenu 详情
|
|
2
|
+
|
|
3
|
+
> 本文档是 [README.md](./README.md) 的补充:装配形态、开发副本与验证。
|
|
4
|
+
|
|
5
|
+
## 装配形态
|
|
6
|
+
|
|
7
|
+
装进 profile 一条命令即可,profile 侧不用手写任何补丁:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
dsh plugin --profile web add @lynn123411/dsh-model-submenu
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
这条命令把包名写进 profile 的 `dependencies`,并登记进 `dsh.profile.bundles`;包内 `cordis.patch.yml` 随之插入一条根层行:
|
|
14
|
+
|
|
15
|
+
```yaml
|
|
16
|
+
- insert:
|
|
17
|
+
- id: lynn-model-submenu
|
|
18
|
+
name: '@lynn123411/dsh-model-submenu'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
这条行同时承载两个半边:宿主半边在那条行下注册插件本体,浏览器半边由 Web shell 按 root loader 的 enabled entry 依据 `dsh.client` 声明服务 `lib/client.js`。行不写 `config`——写了当场抛,免得拼错的行静默什么都不注册。
|
|
22
|
+
|
|
23
|
+
客户端半边声明的服务(`dsh.client.inject`):`@deepseek-ai/dsh-client-ui-slots`、`@deepseek-ai/dsh-client-locale`、`@deepseek-ai/dsh-client-ui-model-selection`。少声明一个不会报错,只会让插件在页面里消失。
|
|
24
|
+
|
|
25
|
+
## 开发副本
|
|
26
|
+
|
|
27
|
+
运行副本用 `link:` 连到本仓库目录,改完即生效(细则见仓库 `docs/rules/dev-copy.md`):
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
cd ~/.dsh/profiles/web && pnpm add "link:<my-dsh 绝对路径>/plugins/dsh-model-submenu" --offline
|
|
31
|
+
cd <my-dsh 绝对路径>/plugins/dsh-model-submenu && pnpm install && pnpm build
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
客户端半边改完刷新页面即生效,必要时硬刷新一次;宿主半边要重启 DSH 实例(loader 只在启动时装载)。
|
|
35
|
+
|
|
36
|
+
## 验证
|
|
37
|
+
|
|
38
|
+
在包目录跑一条链:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
cd plugins/dsh-model-submenu && pnpm check
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`check` = `typecheck` + `build`(tsdown)+ `smoke` + `assert:lib-untracked`。`scripts/smoke-client.mjs` 按 Web shell 的方式装载构建产物 `lib/client.js`(`window.__ModuleLoader__.load` 桩件),喂假 cordis 服务,断言导出身份、`inject` 表、以 `priority: -100` 接管 `conversation.input.model` 座位,以及各供应商与模型的注册项齐全;`lib/` 是构建镜像,`assert:lib-untracked` 判它没被 git 跟踪。
|
|
45
|
+
|
|
46
|
+
要肉眼确认页面上的形态,用仓库的 `node tools/verify-client.mjs dsh-model-submenu --needle '<你新写的类名或文案>'`。
|
package/README.md
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
# @lynn123411/dsh-model-submenu
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
给输入框里的模型选择器加上供应商层级:先在供应商里挑,再挑这个供应商的模型,模型列表与推理等级都留在同一张原生弹层里。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 功能
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- **推理等级照原生**:根面板的「推理等级」行进入当前模型的等级列表,选中即提交,「Default」行表示跟随供应商默认;当前模型没有推理等级时不显示该行。
|
|
11
|
-
- **失败与加载态照旧**:目录加载中显示刷新提示,加载失败与供应商加载失败都在供应商列表顶部给出提示与「重新加载」;提交被拒时弹出与内置同款的提示气泡。
|
|
7
|
+
- **按供应商挑模型**:点「供应商」进入供应商列表,当前供应商那行显示它正在使用的模型名并带勾选,其余行显示它有多少个模型;再点某个供应商,同一面板内换成它的模型列表,点模型立即提交并关闭。
|
|
8
|
+
- **推理等级照原生**:根面板的「推理等级」行进入当前模型的等级列表,选中即提交,「Default」行表示跟随供应商默认;当前模型没有推理等级时不显示这一行。
|
|
9
|
+
- **加载与失败有提示**:目录加载中显示刷新提示,加载失败与供应商加载失败都在列表顶部给出提示与「重新加载」,提交被拒时弹出与内置同款的提示气泡。
|
|
12
10
|
- **键鼠行为照旧**:方向键在行间移动、Tab 等同回车、Escape 与 Shift+Tab 先退回上一层、在根层才关闭;输入框过窄时触发器只显示图标。
|
|
11
|
+
|
|
12
|
+
## 特性
|
|
13
|
+
|
|
14
|
+
- **一级仍是原生两行**:根面板保持内置弹层的两行结构,「供应商」取代原来的「模型」,右侧显示当前供应商名,「推理等级」行原样保留。
|
|
13
15
|
- **接管内置座位**:以 `priority: -100` 占据 `conversation.input.model`,外观沿用内置弹层与 `--dsw-*` 主题变量;`/model` 命令面板与设置页不受影响。
|
|
16
|
+
- **形态与装配**:bundle 型插件,客户端半边随包内 `cordis.patch.yml` 的根层行服务,profile 侧不用手写补丁;装法、开发副本与验证见 [DETAILS.md](./DETAILS.md)。
|
|
14
17
|
|
|
15
18
|
## 安装
|
|
16
19
|
|
|
17
|
-
```
|
|
20
|
+
```bash
|
|
18
21
|
dsh plugin --profile web add @lynn123411/dsh-model-submenu
|
|
19
|
-
```
|
|
22
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lynn123411/dsh-model-submenu",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "给输入框的模型选择器加上供应商层级:先选供应商,再选它下面的模型。",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"type": "module",
|
|
10
10
|
"engines": {
|
|
11
11
|
"node": "^22.19.0 || >=24.0.0",
|
|
12
|
-
"dsh": ">=0.2.1-alpha.
|
|
12
|
+
"dsh": ">=0.2.1-alpha.3"
|
|
13
13
|
},
|
|
14
14
|
"main": "lib/index.js",
|
|
15
15
|
"exports": {
|
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
"cordis.patch.yml",
|
|
36
36
|
"README.md",
|
|
37
37
|
"locale",
|
|
38
|
-
"assets"
|
|
38
|
+
"assets",
|
|
39
|
+
"DETAILS.md"
|
|
39
40
|
],
|
|
40
41
|
"dsh": {
|
|
41
42
|
"bundle": {
|
|
@@ -58,8 +59,8 @@
|
|
|
58
59
|
"check": "pnpm typecheck && pnpm build && pnpm smoke && pnpm assert:lib-untracked"
|
|
59
60
|
},
|
|
60
61
|
"peerDependencies": {
|
|
61
|
-
"@deepseek-ai/cordis": "^4.0.5-alpha.
|
|
62
|
-
"@deepseek-ai/dsh-client-ui-primitives": ">=0.2.1-alpha.
|
|
62
|
+
"@deepseek-ai/cordis": "^4.0.5-alpha.2",
|
|
63
|
+
"@deepseek-ai/dsh-client-ui-primitives": ">=0.2.1-alpha.3",
|
|
63
64
|
"react": "^18.2.0"
|
|
64
65
|
},
|
|
65
66
|
"peerDependenciesMeta": {
|
|
@@ -68,18 +69,18 @@
|
|
|
68
69
|
}
|
|
69
70
|
},
|
|
70
71
|
"devDependencies": {
|
|
71
|
-
"@deepseek-ai/cordis": "^4.0.5-alpha.
|
|
72
|
-
"@deepseek-ai/dsh-api-remotes": ">=0.2.1-alpha.
|
|
73
|
-
"@deepseek-ai/dsh-api-session-controller": ">=0.2.1-alpha.
|
|
74
|
-
"@deepseek-ai/dsh-client-locale": ">=0.2.1-alpha.
|
|
75
|
-
"@deepseek-ai/dsh-client-store": ">=0.2.1-alpha.
|
|
76
|
-
"@deepseek-ai/dsh-client-ui-conversation": ">=0.2.1-alpha.
|
|
77
|
-
"@deepseek-ai/dsh-client-ui-model-selection": ">=0.2.1-alpha.
|
|
78
|
-
"@deepseek-ai/dsh-client-ui-primitives": ">=0.2.1-alpha.
|
|
79
|
-
"@deepseek-ai/dsh-client-ui-renderer": ">=0.2.1-alpha.
|
|
80
|
-
"@deepseek-ai/dsh-client-ui-slots": ">=0.2.1-alpha.
|
|
81
|
-
"@deepseek-ai/dsh-session": ">=0.2.1-alpha.
|
|
82
|
-
"@deepseek-ai/dsh-typert-protocol": ">=0.2.1-alpha.
|
|
72
|
+
"@deepseek-ai/cordis": "^4.0.5-alpha.2",
|
|
73
|
+
"@deepseek-ai/dsh-api-remotes": ">=0.2.1-alpha.3",
|
|
74
|
+
"@deepseek-ai/dsh-api-session-controller": ">=0.2.1-alpha.3",
|
|
75
|
+
"@deepseek-ai/dsh-client-locale": ">=0.2.1-alpha.3",
|
|
76
|
+
"@deepseek-ai/dsh-client-store": ">=0.2.1-alpha.3",
|
|
77
|
+
"@deepseek-ai/dsh-client-ui-conversation": ">=0.2.1-alpha.3",
|
|
78
|
+
"@deepseek-ai/dsh-client-ui-model-selection": ">=0.2.1-alpha.3",
|
|
79
|
+
"@deepseek-ai/dsh-client-ui-primitives": ">=0.2.1-alpha.3",
|
|
80
|
+
"@deepseek-ai/dsh-client-ui-renderer": ">=0.2.1-alpha.3",
|
|
81
|
+
"@deepseek-ai/dsh-client-ui-slots": ">=0.2.1-alpha.3",
|
|
82
|
+
"@deepseek-ai/dsh-session": ">=0.2.1-alpha.3",
|
|
83
|
+
"@deepseek-ai/dsh-typert-protocol": ">=0.2.1-alpha.3",
|
|
83
84
|
"@types/node": "^22.20.0",
|
|
84
85
|
"@types/react": "~18.3.1",
|
|
85
86
|
"@types/react-dom": "~18.3.0",
|