- Accueil
- Plugins
- Améliorations UI
- dsh-effort-slider
dsh-effort-slider
smailpang/dsh-effort-slider
Remplace la liste native des niveaux de raisonnement DSH par un curseur déplaçable Off, Low, High et Max, tout en conservant le parcours officiel de sélection des modèles.
Installer
dsh plugin --profile web add github:smailpang/dsh-effort-sliderREADME
dsh-effort-slider
给 DeepSeek Harness Web 界面就地替换思考强度控件:DSH 原生在「模型座位 → 弹层 →
推理等级/Effort」面板里用一组单选行(Default / Off / Low / High / Max)选择思考强度;
本插件监视该面板,面板一打开就把原生单选行替换成参考 Claude Effort 卡片 /
claude-range-slider 项目的美观滑块:
- DSH 原生菜单字号、间距、圆角和主题变量 + 状态字动画 + 更快/更强发光轨道;
- 拖到最右 Max,轨道内燃起 DeepSeek 蓝 WebGL 火焰(参考项目 4-pass 火焰模拟的 vanilla 移植;无 WebGL 时自动回退为 CSS 辉光);
- 选择仍走 DSH 官方链路:点击隐藏的原生档位行,执行会话级
selectModel、默认保存 和座位标签更新,但只抑制chooseEffort()成功结算时的强制关窗;保存前后面板保持 原位,不闪烁、不回弹。 - 自动适配 DSH 深色/浅色主题,并提供「返回」按钮回到模型与思考强度主菜单。
档位含义与官方一致(
off | low | high | max)。原生的 Default 档会被标出 「Default · 跟随模型」,并提供「恢复默认」按钮。
效果预览
High 档

Max 档

它做了什么
| 层 | 实现 |
|---|---|
| 宿主插件(Node) | lib/index.js:提供 /dsh-effort-slider/state.json(档位元数据)和应用接口 |
| 浏览器端 | src/client/index.js:通过 DSH 官方 dsh.client 插件接口加载;web/widget.js 监视「模型座位」弹层并替换推理面板 |
| 写入语义 | 不另发请求 —— 点击原生档位行,保留会话级 selectModel、默认保存和事件投影,只跳过成功后的 close 回调 |
| 兜底 | 面板结构识别不到、无推理能力模型、或 WebGL 不可用时,原生 UI 原样保留,绝不破坏界面 |
安装
需要已安装 DSH(dsh 命令可用)。推荐安装已发布的预构建包:
dsh plugin --profile web add https://github.com/SmailPang/dsh-effort-slider/releases/download/v0.1.1/dsh-effort-slider-0.1.1.tgz
该命令会把插件安装进 profile 的 node_modules,并把它追加到 dsh.profile.bundles
(插件自带 cordis.patch.yml,无需手改 profile)。
也可以直接从 GitHub 源码安装:
dsh plugin --profile web add github:SmailPang/dsh-effort-slider
如果出现
ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION,请查看错误中列出的包名。 这是当前 DSH profile 的供应链策略拒绝了发布时间过近的依赖,并不表示本插件损坏。 等这些依赖超过策略等待时间后重试即可;不要为了安装本插件随意放宽全局供应链策略。
可选校验:
dsh --profile web --dump-config(只组合配置树,不启动服务),应能看到effort-slider行。
最后重启 dsh web(Ctrl+C 后重新 dsh web),刷新浏览器后生效:
打开任意会话 → 点击输入框上方的「模型座位」→ 点「推理等级/Effort」,即可看到被替换后的滑块。
本插件不修改 DSH 本体代码。浏览器界面由 DSH 官方 Client Module 加载,支持 Web 页面和官方桌面客户端。
使用
- 点击输入区模型座位(显示当前模型与档位)→ 弹层里选择「推理等级 / Effort」;
- 原生的单选行会被我们的滑块卡片替代,显示当前档位(若为 Default 会标注「跟随模型」);
- 拖动滑块到目标档位 → 松手即应用(本会话生效,并同步为默认),面板保持打开;
- 想回到跟随模型默认,点卡片右下「恢复默认」;
- 点「返回」可回到模型与思考强度主菜单;拖到最右 Max 可以看到轨道里的蓝色火焰。
卸载
dsh plugin --profile web remove dsh-effort-slider
或删除 package.json 依赖与 dsh.profile.bundles 里的条目、移除 cordis.patch.yml
中的 insert 行,然后重启 dsh web。
开发 / 测试
node --check lib\index.js
node --check web\widget.js
node build-client.mjs
node test\smoke.mjs # 宿主逻辑冒烟测试(stub 掉 cordis 服务)
node test\detect-sanity.mjs # 推理等级面板识别逻辑的独立校验
实现细节
- 识别:用
MutationObserver+ 兜底轮询监听弹层;只有出现role=menuitemradio且含 ≥2 个标准档位行(Off/Low/High/Max),或「Default 行 + 位于 composer 卡片内」 的菜单才被当作推理等级面板,避免误伤其它菜单。 - 替换:隐藏原生单选行,在弹层同一位置挂入滑块卡片;React 关闭/重开弹层时自动 清理/重建,不残留。
- 顺序:标准档位按
Off → Low → High → Max的语义顺序排列,不依赖供应商或 模型目录返回的 DOM 顺序,保证滑块始终是从 Faster 到 Smarter。 - 提交:触发原生选项的 React
onClick,官方链路完整执行;仅在这一次同步点击期间 跳过settleSelection(true)里的close。因此「下一轮生效」「保存默认」和 「座位标签/事件投影」仍与原生一致,滑块面板则保持打开。 - 视觉:移植自
claude-range-slider(状态字翻转、刻度圆点、WebGL 火焰 4-pass 的 vanilla 版,配色改为 DeepSeek 蓝);引擎 180 帧空闲自动停止、ResizeObserver防抖 重建 FBO、webglcontextrestored自动恢复。 - 所有服务访问与 DOM 探测均 try/catch + 静默降级,插件不阻塞、不破坏 Web 界面。
兼容性
- DSH
>= 0.2.0-rc.2(官方 Web 与桌面客户端)。 - Node >= 20(宿主侧);浏览器需支持 WebGL2(无则自动回退 CSS 辉光)。
Plugins associés
dsh-web (dsh-task-board)
zhu1090093659/dsh-web
dsh-web (dsh-web-all)
zhu1090093659/dsh-web
dsh-TUI
ccch1mneyyy/dsh-tui
dsh-web-ui (dsh-task-board)
zhu1090093659/dsh-web-ui