{"_id":"@domitor-syh/dsh-ui-skin-switcher","_rev":"5-153d6bd652b207b6c85c8156f6a67d98","name":"@domitor-syh/dsh-ui-skin-switcher","dist-tags":{"latest":"0.2.3"},"versions":{"0.1.0":{"name":"@domitor-syh/dsh-ui-skin-switcher","version":"0.1.0","license":"MIT","_id":"@domitor-syh/dsh-ui-skin-switcher@0.1.0","maintainers":[{"name":"domitor-syh","email":"syh2846579@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"8bec2620a67266aefd023539aa876bad88dbe1e4","tarball":"https://registry.npmjs.org/@domitor-syh/dsh-ui-skin-switcher/-/dsh-ui-skin-switcher-0.1.0.tgz","fileCount":10,"integrity":"sha512-+P6Z0zRiwrF9t4mY1lqPm9VopyAL3w/jUj/9RhNuiGrJd8aM7afQPYH20839IjGat4fhh9kf0g5QfJxQwvEwoA==","signatures":[{"sig":"MEUCIQD+9iFWiFopuE0RKxm5qE99yT304OCPtSGL2psrZcKRXwIgTDj0OqKpUJqj+A05D0OUEdOEmTtl2NzW3tEFE7H3AGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32472},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"scripts":{"watch":"tsdown --watch","bundle":"tsdown"},"_npmUser":{"name":"domitor-syh","email":"syh2846579@gmail.com"},"repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"packages/client/ui-skin-switcher"},"description":"Model and reasoning-effort switcher: composer seat with an Off/Max effort slider over session.models / session.selectModel","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","@types/react":"~18.3.1","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-invariants":"^0.1.1-rc.2","@deepseek-ai/dsh-api-remotes":"^0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"^0.1.1-rc.2","@deepseek-ai/dsh-client-connection":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-conversation":"^0.1.1-rc.2"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-invariants":"^0.1.1-rc.2","@deepseek-ai/dsh-api-remotes":"^0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"^0.1.1-rc.2","@deepseek-ai/dsh-client-connection":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-conversation":"^0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-ui-skin-switcher_0.1.0_1787843493558_0.9953588174732726","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@domitor-syh/dsh-ui-skin-switcher","version":"0.2.0","license":"MIT","_id":"@domitor-syh/dsh-ui-skin-switcher@0.2.0","maintainers":[{"name":"domitor-syh","email":"syh2846579@gmail.com"}],"homepage":"https://github.com/domitor-syh/dsh-ui-skin-switcher#readme","bugs":{"url":"https://github.com/domitor-syh/dsh-ui-skin-switcher/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-model-selection"],"platform":"web"}},"dist":{"shasum":"91ba892c6a11fab5ecd685287745b9d91dadfac1","tarball":"https://registry.npmjs.org/@domitor-syh/dsh-ui-skin-switcher/-/dsh-ui-skin-switcher-0.2.0.tgz","fileCount":8,"integrity":"sha512-5HQjO76nXY5qBqCDjgntu7IYYZM5sqHLUjpbzZcOZU7sYdMw4ARYDnyFY7Jh2F9nRhmVqrVmJFp7Dr3ksWUnDQ==","signatures":[{"sig":"MEUCIEXCSFavn+MWZGYPVZXVjiMnWy1G1BLX9L0i681oOtlNAiEAkmq9K2X2LnhH7+NVWFyPzmLyHZSp8CpLXRsKtv9v2lQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCEP4dYYlTIHQhFd7OQGS81dKDKrAkRASlwRPD70ulOdAIgRoU3Z0bENxUixsz9B4CeoU12ki1HV5rNCv1yuMFWp9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51746},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./client":"./lib/client.js","./invariant":"./lib/invariant.js","./package.json":"./package.json"},"gitHead":"ffda729799c72970e50ab2f726e44309c544f746","scripts":{"build":"tsdown"},"_npmUser":{"name":"domitor-syh","email":"syh2846579@gmail.com"},"repository":{"url":"git+https://github.com/domitor-syh/dsh-ui-skin-switcher.git","type":"git"},"_npmVersion":"10.9.8","description":"Model and reasoning-effort switcher: composer seat with an Off/Max effort slider over session.models / session.selectModel","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.2"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-ui-skin-switcher_0.2.0_1790163667647_0.0936787641293968","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@domitor-syh/dsh-ui-skin-switcher","version":"0.2.1","license":"MIT","_id":"@domitor-syh/dsh-ui-skin-switcher@0.2.1","maintainers":[{"name":"domitor-syh","email":"syh2846579@gmail.com"}],"homepage":"https://github.com/domitor-syh/dsh-ui-skin-switcher#readme","bugs":{"url":"https://github.com/domitor-syh/dsh-ui-skin-switcher/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-model-selection"],"platform":"web"}},"dist":{"shasum":"f0495089a406d966c35ee0754d8238e8b84494c0","tarball":"https://registry.npmjs.org/@domitor-syh/dsh-ui-skin-switcher/-/dsh-ui-skin-switcher-0.2.1.tgz","fileCount":8,"integrity":"sha512-h4a+tQUTM6fk1Nembb7Dq7vvozHI3M/rv1hzebhXHjn589NkpwpdeY1oA0l3NQIoTz1PB7UYFboDlIB8nN3qOA==","signatures":[{"sig":"MEUCIA5Gq3XZcxEX5bx0r9Abq0j+PRUc5lKNvTMamStBQ0B/AiEAr2QM8ZkL3XAjxTsLE8gzKQDzGrREOZ6oJM5Mo57Euv0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIB5IpC6vzwCInVKOAsk8aqf7ALMcYG9NClKasz4EUhkKAiBH4DxIFeSZVE5WOXBmYEUf7GJgah6STMVB4R8AHWTlYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51746},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./client":"./lib/client.js","./invariant":"./lib/invariant.js","./package.json":"./package.json"},"gitHead":"ffda729799c72970e50ab2f726e44309c544f746","scripts":{"build":"tsdown"},"_npmUser":{"name":"domitor-syh","email":"syh2846579@gmail.com"},"repository":{"url":"git+https://github.com/domitor-syh/dsh-ui-skin-switcher.git","type":"git"},"_npmVersion":"10.9.8","description":"Model and reasoning-effort switcher: composer seat with an Off/Max effort slider over session.models / session.selectModel","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.2"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-ui-skin-switcher_0.2.1_1790164724646_0.09444577849397007","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@domitor-syh/dsh-ui-skin-switcher","version":"0.2.2","license":"MIT","_id":"@domitor-syh/dsh-ui-skin-switcher@0.2.2","maintainers":[{"name":"domitor-syh","email":"syh2846579@gmail.com"}],"homepage":"https://github.com/domitor-syh/dsh-ui-skin-switcher#readme","bugs":{"url":"https://github.com/domitor-syh/dsh-ui-skin-switcher/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-model-selection"],"platform":"web"},"engines":{"dsh":">=0.1.5-alpha.1"}},"dist":{"shasum":"88822b4c95742b83682082f6adeba1d5dce1621d","tarball":"https://registry.npmjs.org/@domitor-syh/dsh-ui-skin-switcher/-/dsh-ui-skin-switcher-0.2.2.tgz","fileCount":8,"integrity":"sha512-nGMJMdfMvmVIPUoB1hUHu9RKDTbZsKwhfozBVpPox4Jt8nnbbJ2kkjP6bo5L5gMFRSksEVJDWjsT69TJFtpIkQ==","signatures":[{"sig":"MEUCIAcQ4+l2ARRUft+KX6xiAGfKjEgHU/rhiYl9gATgKSsrAiEA/Ps3SynJtRVR3eHSRG/aEnmeCm7TR0wspipHPYW73wE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDhhVH3jySl/wJ1jISqEWRz7zBqlXUZ5lldSqzVIT5ytwIhAIXduOE1WjIMyX+ukLs5LqJwA4sNmME76wLugIvCjcdL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86427},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./client":"./lib/client.js","./invariant":"./lib/invariant.js","./package.json":"./package.json"},"gitHead":"36eac3e744166a7e54d7d73ea57044baf6eb10b2","scripts":{"build":"tsdown"},"_npmUser":{"name":"domitor-syh","email":"syh2846579@gmail.com"},"repository":{"url":"git+https://github.com/domitor-syh/dsh-ui-skin-switcher.git","type":"git"},"_npmVersion":"10.9.8","description":"Model and reasoning-effort switcher: composer seat with an Off/Max effort slider over session.models / session.selectModel","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"unrun":"^0.3.1","tsdown":"^0.22.2"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-ui-skin-switcher_0.2.2_1790430552093_0.9385555715917577","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"_id":"@domitor-syh/dsh-ui-skin-switcher@0.2.3","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-model-selection"],"platform":"web"},"engines":{"dsh":">=0.1.5-alpha.1"}},"bugs":{"url":"https://github.com/domitor-syh/dsh-ui-skin-switcher/issues"},"dist":{"shasum":"544868105fd974d51811af188699db210a48553d","tarball":"https://registry.npmjs.org/@domitor-syh/dsh-ui-skin-switcher/-/dsh-ui-skin-switcher-0.2.3.tgz","fileCount":8,"integrity":"sha512-rF1bm3vNl9Uk+Ljc1jTDDF9PhlyECWuIxFPha89G3acHX7I1Sgtw06xE7RlJkQwpjg4Je6Dx0X57D8ytr5iNSA==","signatures":[{"sig":"MEQCIFKenyQjnTS2qJEzBNKO/o2AjonGEAaxxfqb0TIp/7ouAiBA3oz8Xq9rQt6DvYj2vqDp6wcomUlAwMOETAOHE5K0yA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIA/w2jfvFwgOFdBqO46paIq4pzD9eVXeY3qlvqZ+kPHuAiEAiIbZ7Dp7MfOUnvsqFBVJIyF8c/nxXS2nqZ7X/rO1f3A="}],"unpackedSize":89258},"main":"lib/index.js","name":"@domitor-syh/dsh-ui-skin-switcher","type":"module","exports":{".":"./lib/index.js","./client":"./lib/client.js","./invariant":"./lib/invariant.js","./package.json":"./package.json"},"gitHead":"4a2317d041aa66bd7db021a775d190e9cb030727","license":"MIT","scripts":{"build":"tsdown"},"version":"0.2.3","_npmUser":{"name":"domitor-syh","email":"syh2846579@gmail.com"},"homepage":"https://github.com/domitor-syh/dsh-ui-skin-switcher#readme","repository":{"url":"git+https://github.com/domitor-syh/dsh-ui-skin-switcher.git","type":"git"},"_npmVersion":"10.9.8","description":"Model and reasoning-effort switcher: composer seat with an Off/Max effort slider over session.models / session.selectModel","directories":{},"maintainers":[{"name":"domitor-syh","email":"syh2846579@gmail.com"}],"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"unrun":"^0.3.1","tsdown":"^0.22.2"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-ui-skin-switcher_0.2.3_1790928979663_0.11699297303062206"}}},"time":{"created":"2026-08-27T15:11:33.355Z","modified":"2026-10-02T08:16:19.992Z","0.1.0":"2026-08-27T15:11:33.696Z","0.2.0":"2026-09-23T11:41:07.731Z","0.2.1":"2026-09-23T11:58:44.739Z","0.2.2":"2026-09-26T13:49:12.188Z","0.2.3":"2026-10-02T08:16:19.746Z"},"bugs":{"url":"https://github.com/domitor-syh/dsh-ui-skin-switcher/issues"},"license":"MIT","homepage":"https://github.com/domitor-syh/dsh-ui-skin-switcher#readme","repository":{"url":"git+https://github.com/domitor-syh/dsh-ui-skin-switcher.git","type":"git"},"description":"Model and reasoning-effort switcher: composer seat with an Off/Max effort slider over session.models / session.selectModel","maintainers":[{"name":"domitor-syh","email":"syh2846579@gmail.com"}],"readme":"<h1 align=\"center\">dsh-ui-skin-switcher · DeepSeek Harness（DSH）模型与思考强度切换器</h1>\r\n\r\n<p align=\"center\">\r\n  <img src=\"docs/README-Banner.jpeg\" alt=\"dsh-ui-skin-switcher\" width=\"100%\">\r\n</p>\r\n\r\n<p align=\"center\">中文 | <a href=\"README.en.md\">English</a></p>\r\n\r\n<p align=\"center\">\r\n  <a href=\"https://awesome-dsh-plugin.com\"><img src=\"https://awesome-dsh-plugin.com/badge.svg\" alt=\"Awesome DSH Plugin\"></a>\r\n  <a href=\"https://awesome-dsh-plugin.com\"><img src=\"https://img.shields.io/endpoint?url=https://awesome-dsh-plugin.com/count.json\" alt=\"listed plugins\"></a>\r\n  <a href=\"https://www.npmjs.com/package/@domitor-syh/dsh-ui-skin-switcher\"><img src=\"https://img.shields.io/npm/v/@domitor-syh/dsh-ui-skin-switcher\" alt=\"npm\"></a>\r\n  <a href=\"https://www.npmjs.com/package/@domitor-syh/dsh-ui-skin-switcher\"><img src=\"https://img.shields.io/npm/dt/@domitor-syh/dsh-ui-skin-switcher\" alt=\"downloads\"></a>\r\n  <a href=\"./LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-green\" alt=\"MIT License\"></a>\r\n  <a href=\"https://github.com/domitor-syh/dsh-ui-skin-switcher/actions/workflows/ci.yml\"><img src=\"https://img.shields.io/github/actions/workflow/status/domitor-syh/dsh-ui-skin-switcher/ci.yml?branch=main\" alt=\"CI\"></a>\r\n</p>\r\n\r\n一个为 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)（DSH）Web 端打造的、**Claude Desktop 同款风格的切换器**插件：把模型选择与思考强度（推理力度）切换做成输入框旁的一枚悬浮「座位」，下拉选模型、滑动调强度，一键到位。\r\n\r\n> **兼容性**：仅支持 **DSH 0.1.5 及以上版本**。\r\n\r\n<div align=\"center\">\r\n\r\n[是什么](#是什么) · [功能特性](#功能特性) · [视频预览](#视频预览) · [兼容性](#兼容性) · [快速上手](#快速上手) · [使用方法](#使用方法) · [为什么没有思考强度？](#为什么接入模型之后没有思考强度) · [常见问题](#常见问题) · [许可证](#许可证)\r\n\r\n</div>\r\n\r\n## 是什么\r\n\r\n`dsh-ui-skin-switcher` 是 DeepSeek Harness 的 Web 端插件，注册 `conversation.input.model` 插件槽，在输入框旁渲染一枚模型 + 思考强度的切换器「座位」。\r\n\r\n它与官方第一方模型选择器走**同一条通道**：通过 `ctx.modelDirectories` 读取按 provider 分组的模型目录与当前选择（与 `/model` 面板同源），再经同一条选择接口提交——在这里切换后的结果，就是 `/model` 面板里看到的结果，并立即作用于当前会话。\r\n\r\n样式致敬 Claude Desktop 的切换器：滑动手感、圆角轨道、悬停高亮，都是熟悉的味道。\r\n\r\n## 功能特性\r\n\r\n| 能力 | 说明 |\r\n| --- | --- |\r\n| 模型切换 | 点击模型入口将展开按厂商依次排列的模型列表，选定模型后立即生效，对应的思考强度也会同步变更。 |\r\n| 思考强度滑块 | 思考强度滑块支持点击与拖动双操作方式，设有多个强度节点；不同模型适配的强度档位存在差异，调节后立即生效。 |\r\n| 最高强度点阵动画 | 达到最高思考强度时，轨道内浮现从右向左扫过的点阵动画，且滑块伴随着发光 |\r\n| 逐模型记忆 | 记住每个模型最后一次选择的思考强度，切走再切回，强度不丢 |\r\n| 主题自适应 | 全部颜色绑定 DSH 主题变量，深浅主题、透明背景皮肤下都清晰可读 |\r\n\r\n## 视频预览\r\n\r\n<p align=\"center\">\r\n  <video src=\"https://github.com/user-attachments/assets/e2905bda-0e42-4f56-a3a0-7a545b958b03\" controls muted loop playsinline width=\"100%\"></video>\r\n</p>\r\n\r\n> **页面内播放器需要已登录 GitHub**，未登录时无法播放；此时请点击**下方链接**，在新标签页中直接观看。\r\n\r\n**▶︎ [点击观看完整演示视频](https://cdn.jsdelivr.net/gh/domitor-syh/dsh-ui-skin-switcher@main/docs/dsh-ui-skin-switcher-demo.mp4)** —— 模型切换、思考强度滑块、最高档点阵动画的完整演示。\r\n\r\n## 兼容性\r\n\r\n仅支持 **DSH 0.1.5 及以上版本**。\r\n| DSH 版本 | 可用 | 说明 |\r\n| --- | :---: | --- |\r\n| 0.1.5-alpha.1 ～ 0.1.5-rc.3 | ✅ | 0.1.5 系列全系可用；已抽点校验 alpha.1、rc.2（端到端实测）、rc.3 |\r\n| 0.1.6-alpha.1 / alpha.2 | ✅ | 与 0.1.5 同代接口 |\r\n| 0.1.7-alpha.1 / alpha.2 | ✅ | 当前最新发布线；已抽点校验 alpha.2 |\r\n| 0.1.3-alpha.2 及更早 | ❌ | 旧一代接口，只有 `connection.api`，没有 `remote.session` |\r\n\r\n分界线是 **0.1.5**：从这一版起，DSH 用 `ctx.remote.session` / `ctx.modelDirectories` 取代了旧的 `connection.api` 接口，并移除了 `dsh-client-ui-slots` 依赖。本插件基于新接口实现，因此在更早的 DSH 上无法加载。\r\n\r\n> 上表依据：对相应版本的 `dsh-client-ui-model-selection` 包逐一解包，校验 `modelDirectories` / `modelCatalog` / `selectModel` 接口是否存在；并在 0.1.5-rc.2 上完成端到端实测。\r\n本插件通过 DSH 0.1.5 引入的 `ctx.remote.session` / `ctx.modelDirectories` 接口读取模型目录与当前选择（与官方 `/model` 面板同源），在更早的 DSH 上无法加载。\r\n\r\n## 快速上手\r\n\r\n### 系统要求\r\n\r\n- DSH **0.1.5 及以上版本**。\r\n- 已安装 DeepSeek Harness，`dsh web` 可正常启动。\r\n- npm 安装无额外要求；从源码运行需要 Node.js >= 22 与 pnpm。\r\n\r\n### 安装（npm，推荐）\r\n\r\n```sh\r\ndsh plugin --profile web add @domitor-syh/dsh-ui-skin-switcher\r\n```\r\n\r\n然后重启 `dsh web`，输入框旁即出现切换器按钮。\r\n\r\n从源码运行 DSH？在仓库根目录，用「启动命令 + `dsh plugin --profile web add @domitor-syh/dsh-ui-skin-switcher`」即可，例如：\r\n\r\n```sh\r\n# 平时启动\r\npnpm dsh web\r\n# 添加插件\r\npnpm dsh plugin --profile web add @domitor-syh/dsh-ui-skin-switcher\r\n```\r\n\r\n### 验证与卸载\r\n\r\n装好重启 `dsh web`，输入框旁出现切换器按钮即刻生效；也可以用 `dsh --profile web --dump-config` 确认插件配置层已挂载。\r\n\r\n卸载(如从源码启动，请用同安装的方式去卸载)：`dsh plugin --profile web remove @domitor-syh/dsh-ui-skin-switcher`，然后重启 `dsh web`。\r\n\r\n## 使用方法\r\n\r\n1. **切模型**：点击输入框旁的按钮，在列表里选一个模型；列表按厂商分组，当前模型带勾选标记。\r\n2. **调强度**：对声明了 `reasoningEfforts` 的模型，模型右侧会出现思考强度按钮，点击之后——拖动滑块或在轨道上点按即可切换档位。\r\n\r\n### 为什么接入模型之后没有思考强度？\r\n\r\n这是因为当前模型没有声明思考强度（`reasoningEfforts`）或识图能力。为了确保声明的准确，我们没有为所有模型设定统一的思考强度档位——请自行前往该模型所属厂商的官方文档查阅，并修改底层配置文件补上声明；或者直接把厂商的深度思考文档（或文档链接）发给大模型，让它替你直接修改。\r\n\r\n> 生效方式：你修改的是 DSH 主目录（`~/.dsh`）下的 `settings.yaml`，**不是本插件的文件**；DSH 会监听该文件并**热加载，立即生效，无需重启**，下次启动依然有效。\r\n\r\n为什么要由你自己适配？是为了确保声明的准确——**声明准确 > 声明齐全**。思考强度是每档一个厂商私有线级值，填错会让请求静默失效，所以我们不代填统一档位。\r\n\r\n## 常见问题\r\n\r\n<details>\r\n<summary><strong>为什么我的模型没有出现思考强度滑块？</strong></summary>\r\n\r\n滑块只为声明了 `reasoningEfforts` 的模型显示。模型目录里没有该声明说明这台模型不支持（或未配置）推理力度切换，此时只显示模型列表。\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>切换主题后切换器颜色不对？</strong></summary>\r\n\r\n插件颜色全部绑定 DSH 主题变量（`--dsw-alias-*`），随深浅主题自动翻转。若你用了把背景设成透明的皮肤，浮层会自动启用毛玻璃（backdrop-filter）保住可读性。\r\n\r\n</details>\r\n\r\n## 许可证\r\n\r\n[MIT](./LICENSE)","readmeFilename":"README.md"}