Bundle
dsh-liang-calibrator
DeepSeek Harness 前端插件:滑动变祖器 31 档 —— 用 -15..+15 滑杆替换输入框的模型与推理等级控件,芯片显示提供商,控件做成滑动变阻器外观(铜线密绕瓷管 + 端板 + 接线柱 + 滑片),折叠式悬浮面板,设置支持按状态(6)与按档位(31)两层粒度、可手填 provider / 模型 / 思考强度,滑动时把档位图铺成 DSH 背景并在停手 5 秒后淡出;支持 31 档自定义名字(相邻同名合并)与逐档自定义背图(IndexedDB 存储)
- Source
- TerryYu12
- License
- MIT-0
- Updated
- Updated 8 days ago
Readme
# dsh-liang-calibrator **滑动变祖器 31 档** —— 把 [DeepSeek Harness](https://github.com/deepseek-ai) 输入框里的「模型选择 + 推理等级」控件,换成一台物理课本里的**滑动变阻器**。 拖滑片 = 同时切换模型与思考强度;滑动时对应档位的形象图会铺在 DSH 背景上,**停手 5 秒后自动淡出**。 档位图可以逐档换成本机自定义图片,31 档的名字也都能改。 [](https://github.com/TerryYu12/dsh-liang-calibrator/actions/workflows/ci.yml)  --- ## 界面 ### 1. 折叠态:直接写清当前路由 输入框里只占一个小胶囊,显示 **提供商 · 模型 · 思考强度**(过长省略,悬停看完整内容)。 模型目录还没就绪、或会话被锁定时,旁边会直接说明原因并给出「重试」。 ### 2. 点三角展开:滑动变阻器 铜线密绕瓷管 + 金属导轨 + 端板接线柱(C/D)+ 瓷管两端红色接线柱(A/B)+ 压板楔子滑片, 左侧到滑片的那段铜线微微发亮表示"接入电路"的长度。  第一行是**模型名**(最大最亮),右侧是「梁名 + 带符号分值」,第二行是 `提供商 · 思考强度`。 点面板外、按 `Esc`、或点右上角 `✕` 都能收起。 ### 3. 设置:四页 —— 路由 / 名字 / 背图     - **按状态 6**:小难梁 / 牢梁 / 梁子 / 梁圣 / 梁神 / 梁祖,各一条路由,整段生效; - **按档位 31**:`-15` … `00` … `+15` 逐档一行,只覆盖你想改的那一档; - **名字 31**:给 31 档各起一个名字;**相邻档位写成同一个名字就合并成一段**(跨段同名不合并), 滑杆下方的站名行跟着变;留空用默认梁名; - **背图 31**:31 档各可指定一张自定义图片,滑动到该档时铺满窗口;留空用内置档位图, 同一张图给多个档位只存一份; - 路由三列**都能手填**(provider / 模型 id / 思考强度),带自动补全但允许任意值 —— 接自己的 API 直接写进去即可; - 灰色占位符显示**自动分档会选什么**,所以不改也能一眼看出每档接的是哪条路由; - 优先级:**逐档 > 按状态 > 自动**;provider 不在当前目录时整行描琥珀色提示(仍会提交,由平台裁决); - 右上角一键清空,按钮随页变:**全部自动 / 全部默认 / 全部内置**;设置只存在本机浏览器。 ### 4. 滑动时的背景:不影响你原来的壁纸  档位图只做**临时叠加**: - 这一张图默认是内置档位图,也可以是你给这一档指定过的**自定义图**(见上节「背图 31」); - 它挂在 `body` 的第一个子节点、`z-index: -1`,位置在**你原来的壁纸之上、DSH 界面之下**; - 显示期间把控件到 `body` 之间的面板**临时置为透明**,配合图层自带的压暗层保证文字可读; - **停手 5 秒后自动淡出**(淡出 320ms),随后**原样还原**所有被改过的样式; - 不修改、不替换你设置的壁纸,也不写入任何持久状态 —— 关掉插件后界面与原来完全一致。 ### 本机数据都存哪 - 路由设置:`localStorage` 的 `liang-calibrator:stages`; - 名字:`localStorage` 的 `liang-calibrator:names`(31 项,读入时去首尾空格、截 24 字符); - 背图:图片先压到长边 ≤ 1920 的 WebP,按内容哈希存进 **IndexedDB**(库 `liang-calibrator` / store `images`); 档位 → 图片 的映射在 `localStorage` 的 `liang-calibrator:images`;不再被任何档位引用的图片会自动回收; - 排查现场:最近 8 条插件错误落在 `localStorage` 的 `liang-calibrator:errors`; - 以上都只在本机浏览器里,不上传、不随插件分发。 --- ## 档位语义 31 档由 `buildLadder()` **按当前模型目录动态生成**: 1. **模型分档**:按 `MODEL_TIERS` 顺序(由弱到强)把六个状态带平均切给目录里**实际存在**的模型。 某个 provider 没配置或掉线时它的段会被跳过,帧区间自动重新平均给剩下的模型 —— 梯子只会变短, 滑杆不会失效。改顺序或增删模型只改 `MODEL_TIERS` 一个数组。 2. **思考强度**:每个模型覆盖的那段帧,按该模型在目录里公布的等级**均分**,从弱到强单调递增; 模型明确不提供等级时(例如 `dsh-llm-pi-ai` 对没声明 `reasoningEfforts` 的模型返回 `reasoning: false`), 这一段只提交模型本身,**不带 `reasoningEffort`**。 本机 DSH `0.2.0-rc.2`、三个模型都在时(flash / pro 各有 `off/low/high/max`,cmd 不分等级): | 帧 index | 分值 | 状态 | 模型 | 思考强度 | |---|---|---|---|---| | 0-4 | -15..-11 | 小难梁 | deepseek-flash | off | | 5-8 | -10..-7 | 小难梁/牢梁 | deepseek-flash | low | | 9-13 | -6..-2 | 牢梁/梁子 | deepseek-flash | high | | 14-17 | -1..+2 | 梁子 | deepseek-flash | max | | 18-23 | +3..+8 | 梁圣 | `deepseek/deepseek-v4.1-flash`(cmd) | 不设置 | | 24-25 | +9..+10 | 梁神 | deepseek-v4-pro | off | | 26-27 | +11..+12 | 梁神 | deepseek-v4-pro | low | | 28-29 | +13..+14 | 梁神 | deepseek-v4-pro | high | | 30 | +15 | 梁祖 | deepseek-v4-pro | max | 同一组合占据连续若干档:**区间内拖动只换画面、不重复发请求**;外部改变模型(`/model` 命令、设置页)时, 滑杆会回位到对应区间的代表档位。当前选择不在梯子上时,芯片回退显示真实路由,滑杆仍可跳到任意档位。 名字(31 档可改名、相邻同名合并成段)与背图(逐档自定义)都只是**显示层**,不改变上面这张映射表。 --- ## 安装 ```sh # 从 Release 安装 dsh plugin --profile <profile> add https://github.com/TerryYu12/dsh-liang-calibrator/releases/latest/download/dsh-liang-calibrator-0.9.0.tgz # 或本地 tarball dsh plugin --profile <profile> add /path/to/dsh-liang-calibrator-0.9.0.tgz ``` `<profile>` 是你要装的 profile(通常是 `desktop`;用 `dsh plugin --profile desktop add …`)。 装好后 DSH 会把这个 bundle 追加进 profile 的 `dsh.profile.bundles`,客户端半部由 `dsh-client-modules` 作为 `/plugins/dsh-liang-calibrator/client.js` 提供。多数情况下无需重启即会热挂载; 若界面没变化,刷新页面或重启 Harness。 卸载: ```sh dsh plugin --profile <profile> remove dsh-liang-calibrator ``` --- ## 从源码构建 / 测试 / 截图 ```sh npm install node scripts/fetch-frames.mjs # 可选:素材缺失时从上游补抓(仓库里已带) npm run build # 生成 lib/index.js 与 lib/client.js(内嵌 31 帧,约 2 MB) node verify-levels.mjs # 31 档 / 6 状态边界与梯子生成、名字分段与背图映射的纯逻辑 node render-test.mjs # jsdom + React 真渲染:21 个场景 node tools/screenshot.mjs # 重新生成 docs/ 里的 7 张界面截图(需要本机 Chrome/Edge) npm pack ``` `render-test.mjs` 覆盖的 21 个场景包括:档位提交、段内不重复提交、目录未就绪与自愈重试、 锁定态、错误边界、背景图 5 秒淡出、注入面绝不抛错、折叠/展开/关闭、按状态与按档位两层设置、 逐档改名与同名合并、全梯同名、逐档自定义背图(含清除回退)、名字过多时站名行自动省略。 > 实现上有三条**不能破坏**的约束,改动前请先读 README 的对应注释: > ① 客户端 `inject` 必须包含 `remote` / `remote.session`(Cordis 服务代理把 `this.ctx` 绑到调用方, > `directoryFor()` 内部会读它,漏了目录永远取不到);② 目录加载不能依赖注入函数的引用(否则渲染循环); > ③ 插槽注入面绝不能抛异常(会被渲染器把整个入口退役,界面静默退回官方控件)。 --- ## 素材与授权 本插件是对 [Lichtspektrum/liang-intensity-calibrator](https://github.com/Lichtspektrum/liang-intensity-calibrator) (滑动变祖器)的 DSH 化改造;控件结构参考了 [HansLin911/dsh-liang-slider](https://github.com/HansLin911/dsh-liang-slider)(MIT-0)。 `assets/frame-00..30.webp` 取自上游仓库的 `public/frames/`。依照上游仓库的处理方式,这些素材**随仓库分发**, 但——正如上游 README 所述——**素材不随 MIT 协议共享**: > `media` 与 `public/frames` 里的人像素材用于趣味演示,**素材不随 MIT 协议共享**。 > 复用或二次发布前,请确认你拥有相关肖像与素材的使用权。 本项目维护者不拥有这些图像中人物的肖像权,也不通过本项目授予任何与肖像、姓名、身份、公开权、隐私权、 商标、版权或其他第三方权利有关的许可。若需商业使用、再分发或制作衍生版本,请自行确认所在司法管辖区的 适用法律、素材来源及所需授权。如你是相关权利人并希望移除素材,请提 Issue 联系。 ## 许可证 **代码**以 [MIT-0](LICENSE) 发布(不含 `assets/` 中的第三方图像素材,见上节)。
Install
dsh plugin --profile web add github:TerryYu12/dsh-liang-calibrator
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-liang-calibrator from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.