dsh-effort-menu 0.0.0-stage → 1.0.1

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 LYLMagui
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,3 +1,106 @@
1
- # Temporary Holding Version
1
+ # dsh-effort-menu
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ A replacement model menu for the [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) composer: pick a model and set its reasoning effort in the same popup.
4
+
5
+ [![MIT license](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
6
+ [![DSH >=0.2.2-rc.1](https://img.shields.io/badge/DSH-%3E%3D0.2.2--rc.1-4d6bfe)](#compatibility)
7
+
8
+ English | [简体中文](./README.zh-CN.md)
9
+
10
+ In the shipped menu, effort lives in a submenu: after switching models, the "Effort" row opens a second list with Default, Low, High and Max. Following zcode's approach, this plugin puts the levels on a slider at the bottom of the menu instead. The slider has one node per level the current model supports, so the effort can be dragged right after picking a model.
11
+
12
+ The three most recent models sit at the top, and hovering the provider row opens every model in a flyout. Reads and writes go through the shipped per-session model directory, so the native selector and the `/model` popup share the same state.
13
+
14
+ ## Screenshots
15
+
16
+ The model menu, with the reasoning-effort slider at the bottom.
17
+
18
+ | Light | Dark |
19
+ | --- | --- |
20
+ | <img src="docs/screenshots/menu-light.png" alt="Model menu with the reasoning-effort slider, light theme" width="400"> | <img src="docs/screenshots/menu-dark.png" alt="Model menu with the reasoning-effort slider, dark theme" width="400"> |
21
+
22
+ Hovering the provider row opens a flyout with every provider's models.
23
+
24
+ <img src="docs/screenshots/flyout-light.png" alt="Model menu with the all-models flyout, light theme" width="620">
25
+
26
+ <img src="docs/screenshots/flyout-dark.png" alt="Model menu with the all-models flyout, dark theme" width="620">
27
+
28
+ ## Features
29
+
30
+ - The current level carries over on a model switch; if the new model lacks it, its highest level is used.
31
+ - A model without its own default gets a leading "Default" node that leaves the choice to the provider.
32
+ - A model list that fails to load is reported in the menu with a retry button.
33
+ - Keyboard support. Arrow keys move between items and adjust the slider, `Esc` closes the menu.
34
+ - Follows the app's light and dark themes; interface text in English and Chinese.
35
+
36
+ ## Install
37
+
38
+ Requires DSH `0.2.2-rc.1` or newer, with a build that ships the `dsh-client-ui-conversation`, `dsh-client-ui-model-selection` and `dsh-client-locale` client packages (see [Compatibility](#compatibility)).
39
+
40
+ ### Web
41
+
42
+ With a CLI-managed profile, one command installs it into `web`.
43
+
44
+ ```sh
45
+ dsh plugin --profile web add dsh-effort-menu
46
+ ```
47
+
48
+ There is no build step. The browser half is the committed `client.js`. Restart `dsh web`, or reload the page.
49
+
50
+ ### Desktop
51
+
52
+ The `desktop` profile is managed by the app. Fully quit the app before using the CLI, or keep it running and install the checkout directory through **Plugin Manager**.
53
+
54
+ ```sh
55
+ # CLI install, with the desktop app fully quit
56
+ dsh plugin --profile desktop add dsh-effort-menu
57
+
58
+ # Or clone it and point Plugin Manager at the directory
59
+ git clone https://github.com/xuanfenglajiao/dsh-effort-menu.git
60
+ ```
61
+
62
+ Restart the app after installing.
63
+
64
+ ### Manual
65
+
66
+ If you would rather not use the CLI, edit the profile's own `package.json`.
67
+
68
+ **Web profile.** Edit `~/.dsh/profiles/web/package.json` and add the package to `dependencies`.
69
+
70
+ ```json
71
+ "dependencies": {
72
+ "dsh-effort-menu": "^1.0.0"
73
+ }
74
+ ```
75
+
76
+ Then append it to the `dsh.profile.bundles` array.
77
+
78
+ ```json
79
+ "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-effort-menu"]
80
+ ```
81
+
82
+ Run `pnpm install` in that directory and restart `dsh web`.
83
+
84
+ **Desktop profile.** Edit `~/.dsh/profiles/desktop/package.json` and add the same entry to `dependencies` only. The desktop profile does not list plugins in `bundles`.
85
+
86
+ ```json
87
+ "dependencies": {
88
+ "dsh-effort-menu": "^1.0.0"
89
+ }
90
+ ```
91
+
92
+ Run `pnpm install` and restart the app.
93
+
94
+ **Uninstall** with `dsh plugin --profile web remove dsh-effort-menu`, or remove it in Plugin Manager on the desktop app.
95
+
96
+ ## Compatibility
97
+
98
+ - Supports DSH `0.2.2-rc.1` and newer. Developed and tested on DeepSeek Harness Desktop 44.7.0 (DSH `0.2.2-rc.1`) on Windows 11; earlier DSH versions are not supported.
99
+ - The current model must expose `reasoning.efforts` for the slider to have anything to show. Otherwise the menu says the model provides no levels.
100
+ - Renders nothing in subagent sessions.
101
+
102
+ ## Known limitations
103
+
104
+ - **One occupant of the model slot.** The plugin takes over the single slot `conversation.input.model` at priority `-1`, shadowing the shipped selector. Another plugin that replaces the same slot competes for it, so install only one. Plugins that restyle the shipped selector from outside may not apply to this menu.
105
+ - **The model label sub-slot is not extensible.** `conversation.input.model.label` is declared by the shipped model-selection package, and a second declaration makes the whole client entry fail to load. This plugin therefore renders model names itself, and labels that other plugins contribute to that sub-slot do not appear here.
106
+ - **No automated tests yet.** Changes are checked by hand in a running app.
@@ -0,0 +1,106 @@
1
+ # dsh-effort-menu
2
+
3
+ 给 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 输入框换一个模型菜单,选模型和调思考强度在同一个弹层里完成。
4
+
5
+ [![MIT license](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
6
+ [![DSH >=0.2.2-rc.1](https://img.shields.io/badge/DSH-%3E%3D0.2.2--rc.1-4d6bfe)](#兼容性)
7
+
8
+ [English](./README.md) | 简体中文
9
+
10
+ 官方菜单把思考强度放在二级菜单「推理等级」里,换完模型还要再点进去,从 Default、Low、High、Max 里挑。本插件参考 zcode 的做法,把档位做成菜单底部的一条滑杆。当前模型有几档,滑杆上就有几个点,选完模型直接拖。
11
+
12
+ 顶部列着最近用过的三个模型,悬停提供商行会在右侧展开全部模型。读写走的是官方的会话模型目录,和原生选择器、`/model` 弹窗共用一份状态。
13
+
14
+ ## 截图
15
+
16
+ 模型菜单,底部是当前模型的思考强度滑杆。
17
+
18
+ | 浅色 | 深色 |
19
+ | --- | --- |
20
+ | <img src="docs/screenshots/menu-light.png" alt="带思考强度滑杆的模型菜单(浅色主题)" width="400"> | <img src="docs/screenshots/menu-dark.png" alt="带思考强度滑杆的模型菜单(深色主题)" width="400"> |
21
+
22
+ 悬停提供商行,会在右侧展开全部提供商的模型。
23
+
24
+ <img src="docs/screenshots/flyout-light.png" alt="模型菜单与全部模型列表(浅色主题)" width="620">
25
+
26
+ <img src="docs/screenshots/flyout-dark.png" alt="模型菜单与全部模型列表(深色主题)" width="620">
27
+
28
+ ## 功能
29
+
30
+ - 切换模型时沿用当前档位,新模型没有这一档就用它的最高档。
31
+ - 模型没有自带默认值时,滑杆最左侧多一个「默认」档,交给提供商决定。
32
+ - 模型列表加载失败会在菜单里提示,可以直接重试。
33
+ - 支持键盘操作。方向键切换菜单项、调节滑杆,`Esc` 关闭菜单。
34
+ - 跟随应用的浅色和深色主题,界面提供中文和英文。
35
+
36
+ ## 安装
37
+
38
+ 需要 DSH `0.2.2-rc.1` 或更新版本,并自带 `dsh-client-ui-conversation`、`dsh-client-ui-model-selection` 和 `dsh-client-locale` 三个客户端包(见[兼容性](#兼容性))。
39
+
40
+ ### Web 端
41
+
42
+ 用 CLI 管理 profile 时,一条命令装进 `web`。
43
+
44
+ ```sh
45
+ dsh plugin --profile web add dsh-effort-menu
46
+ ```
47
+
48
+ 本插件没有构建步骤,浏览器端就是仓库里提交的 `client.js`。装完重启 `dsh web`,或者刷新页面。
49
+
50
+ ### 桌面端
51
+
52
+ `desktop` profile 由应用管理。先完全退出桌面应用,再用 CLI 安装;或者不退出,打开应用内的 **Plugin Manager** 选择安装这个目录。
53
+
54
+ ```sh
55
+ # CLI 安装,需要先完全退出桌面应用
56
+ dsh plugin --profile desktop add dsh-effort-menu
57
+
58
+ # 或者克隆下来,在 Plugin Manager 里选择这个目录
59
+ git clone https://github.com/xuanfenglajiao/dsh-effort-menu.git
60
+ ```
61
+
62
+ 装完重启应用。
63
+
64
+ ### 手动安装
65
+
66
+ 不想动 CLI 时,可以直接改 profile 自己的 `package.json`。
67
+
68
+ **Web profile。** 编辑 `~/.dsh/profiles/web/package.json`,在 `dependencies` 里加上本插件。
69
+
70
+ ```json
71
+ "dependencies": {
72
+ "dsh-effort-menu": "^1.0.0"
73
+ }
74
+ ```
75
+
76
+ 再把它追加到 `dsh.profile.bundles` 数组里。
77
+
78
+ ```json
79
+ "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-effort-menu"]
80
+ ```
81
+
82
+ 然后在同一目录执行 `pnpm install`,重启 `dsh web`。
83
+
84
+ **桌面端 profile。** 编辑 `~/.dsh/profiles/desktop/package.json`,只在 `dependencies` 里加同样的条目。桌面端不把插件写进 `bundles` 列表。
85
+
86
+ ```json
87
+ "dependencies": {
88
+ "dsh-effort-menu": "^1.0.0"
89
+ }
90
+ ```
91
+
92
+ 执行 `pnpm install`,重启应用。
93
+
94
+ **卸载**时执行 `dsh plugin --profile web remove dsh-effort-menu`,桌面端在 Plugin Manager 里移除即可。
95
+
96
+ ## 兼容性
97
+
98
+ - 支持 DSH `0.2.2-rc.1` 及更新版本。开发和测试用的是 DeepSeek Harness Desktop 44.7.0(DSH `0.2.2-rc.1`),Windows 11;更早的 DSH 版本不受支持。
99
+ - 当前模型必须公布 `reasoning.efforts`,滑杆才有内容可显示。否则菜单会提示该模型没有可选档位。
100
+ - 在子代理会话中不渲染任何内容。
101
+
102
+ ## 已知限制
103
+
104
+ - **模型槽位只能有一个占用者。** 本插件以优先级 `-1` 接管单占位槽 `conversation.input.model`,遮住官方选择器。其他同样替换该槽位的插件会与它竞争,请只安装其中一个。从外部给官方选择器改样式的插件,可能对这个菜单不生效。
105
+ - **模型标签子槽无法扩展。** `conversation.input.model.label` 由官方 model-selection 包声明,重复声明会让整个客户端条目加载失败。因此本插件自己渲染模型名称,其他插件贡献到该子槽的标签不会显示在这里。
106
+ - **暂无自动化测试。** 目前靠在运行中的应用里手工验证。