DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Model Select Collapse — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
M

@dsh-external/dsh-model-select-collapse

Model Select Collapse

DSH (DeepSeek Harness) Web UI 插件:为模型选择器添加可折叠的按提供商分组标题。折叠状态按提供商保存在 localStorage 中;新导入的提供商默认展开。重新实现官方 ModelSelect 视图,同时复用官方模型目录数据层。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:banana770/dsh-model-select-collapse#15a9d6862ced0ddaeaf749f0520b8ea4b715c052
README兼容性版本

说明

DSH (DeepSeek Harness) Web UI 插件:为模型选择器添加可折叠的按提供商分组标题。折叠状态按提供商保存在 localStorage 中;新导入的提供商默认展开。重新实现官方 ModelSelect 视图,同时复用官方模型目录数据层。中文文档:README.zh-CN.md。

兼容性与来源证明

Model Select Collapse 以 @dsh-external/dsh-model-select-collapse 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/23

版本

0.1.0stable
2026/9/23

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
BSD-3-Clause
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/9/23
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Codex Ui@michengai/dsh-codex-uiDSH Codex UI — 为 DeepSeek Harness Web 提供 Codex 风格侧栏、工作区会话树、全局搜索和轮次导航Deepseek Idesigndeepseek-idesign作为原生 DeepSeek Harness 对话视图的 iPolloWork Design Studio 及其精选设计模板。Deepseek Ipptdeepseek-ipptiPolloWork PPT Studio 及其精选幻灯片模板,作为原生 DeepSeek Harness 对话视图。Dream Skindsh-dream-skinDeepSeek Harness 换肤插件(Dream Skin for DSH):8 套 iOS / Linear 式清透冷调的高质感主题 + 弥散光壁纸 + 每款皮肤智能背景 + 强调色 + 主题包分享,把换肤做成材质与配色克制的高级感工艺,而非贴图。在原生 DSH Web 和第三方桌面客户端(DSH Desktop)中运行:8 款原创高端主题、玻璃材质、壁纸 2.0

README

dsh-model-select-collapse

A DSH (DeepSeek Harness) web UI plugin that makes every provider group in the model selector collapsible — so a long model list stops being one endless scroll.

English · 简体中文


What this plugin does

Once installed, the model selector in the DSH composer gets clickable group headers:

BeforeAfter
Every provider's models are listed at full length, one long scrollEach provider is a group with a header row that can be folded away
No way to hide providers you are not usingClick a header to collapse / expand that provider
State is lost every time the menu closesCollapsed state is remembered per provider

Concretely:

  • Every provider group gets a header row with the provider name and the number of models in that group.
  • Clicking the header collapses or expands that group, and the chevron beside it rotates to show the state.
  • The state is stored per provider id in localStorage under the key dsh.modelSelect.collapsed, so it survives closing and reopening the menu and survives a page reload.
  • A provider with no stored record starts expanded, so providers you import later need no configuration.

Everything else about the picker behaves as before: the two-level menu (model list and reasoning effort), keyboard navigation, the loading / error / warning states, the retry action when a directory fails to load, and the toast shown when a selection fails.

The problem it solves

DSH lists every provider's models in one flat menu. With five or six providers that is already a long scroll; with a dozen it becomes a wall of entries, and the two or three you actually switch between are buried in the middle. This plugin keeps the same layout and ordering but lets you fold away the providers you are not using right now.

Behaviour details

BehaviourDetail
ToggleClick a provider group header
DefaultExpanded; only groups you collapsed are recorded as collapsed
Storage keydsh.modelSelect.collapsed in localStorage (a { providerId: true } map)
ScopePer browser profile — local state, never synced anywhere
Newly imported providersStart expanded (no stored record)
KeyboardThe header is a real button, so it is reachable with Tab and activated with Enter / Space
AccessibilityEach group is a role="group" section labelled by its header, and the header exposes aria-expanded

DSH 0.1.7-alpha.2 compatibility

DSH 0.1.7-alpha.2 renamed every icon export in @deepseek-ai/dsh-client-ui-primitives:

Name before 0.1.7-alpha.2Name in 0.1.7-alpha.2 and later
IconChevronDownOutline14IconChevronDownOutlineRegular
IconChevronRightOutline14IconChevronRightOutlineRegular
IconCheckOutline16IconCheckOutlineRegular
IconWarningOutline16IconWarningOutlineRegular

The old names resolve to undefined on the new version, and using undefined as a React element type throws Element type is invalid. DSH's slot system then abdicates the crashed entry and the official model selector silently takes its place — which looks exactly like "the collapse button disappeared", not like a broken plugin.

lib/client.js therefore probes both namings when it loads and keeps whichever is present, falling back to a no-op component if an icon is missing entirely. The result is one release that runs on both older and newer DSH versions. Toast exists in both versions with a compatible signature and is treated as optional the same way.

Installation

From GitHub (recommended)

dsh plugin --profile web add github:banana770/dsh-model-select-collapse

From a local checkout

dsh plugin --profile web add /path/to/dsh-model-select-collapse

After installing, reload the DSH web UI (restart DSH, or hard-refresh the page) and open the model selector from the composer.

Manual installation

Four files matter:

package.json       manifest: declares the client entry (dsh.client) and the bundle patch
cordis.patch.yml   mounts the plugin into the profile's bundle roster (insert: model-select-collapse)
lib/index.js       host half: an empty no-op that keeps the loader entry alive
lib/client.js      the real logic: shadows the model selector seat and adds group collapsing

Drop the directory into the profile's install location and make sure the insert entry in cordis.patch.yml (id: model-select-collapse, name: @dsh-external/dsh-model-select-collapse) is active. There is no build step.

Uninstalling

Remove dsh-model-select-collapse from the Installed list on the sidebar Plugins page, then reload the UI. For a manual install, delete the matching insert entry from cordis.patch.yml and restart DSH.

How it works

  • Seat shadowing. DSH's composer model picker is the conversation.input.model slot. The official plugin registers it at the default priority 0; this plugin registers at -1, and the rule for a single slot is "lowest priority wins". The plugin's view therefore replaces the official one.
  • No forked data layer. All provider and model data comes from DSH's own modelDirectories service (directoryFor(sessionId) returns a SnapshotStore, consumed here through useSyncExternalStore) — the same source the official view uses. The plugin only re-renders it.
  • Isolated styles. One stylesheet is injected into document.head behind a data-plugin-css marker, and every class name is namespaced with an mse_ prefix, so nothing can collide with official DSH class names.
  • No dictionary registration. The official model-selection plugin already registers the zh / en dictionaries for the model namespace, and this plugin declares that same namespace when registering its seat so it reuses them — registering a duplicate namespace throws.

Customizing

What you want to changeWhere
Default state for providers with no stored recordloadCollapsed() in lib/client.js
Storage keySTORAGE_KEY in lib/client.js
Chevron direction when collapsed.mse_groupChevronCollapsed in the css block
Width, spacing, coloursthe css block in lib/client.js (built on --dsw-* theme variables)

Privacy

  • Nothing leaves the machine. The plugin makes no network requests of its own and contacts no third-party service; it reads and writes the same DSH model directory service that the official selector uses.
  • No telemetry, no analytics, no accounts.
  • No API keys are included in or requested by this plugin. Provider credentials stay wherever DSH already keeps them.
  • One piece of local state is written: the dsh.modelSelect.collapsed map in localStorage, which records which provider groups you folded away. It holds provider ids and booleans and nothing else; deleting it simply resets every group to expanded.
  • No access to conversation content and no file access.

Compatibility

  • Targets the DSH web profile (platform: "web").
  • Verified on DSH 0.1.7-alpha.2. Because the icon lookup probes both namings, it also runs on releases that still use the older icon names.
  • Uses the react that DSH itself provides (peerDependencies: >=18 <19), so a second copy is never installed.
  • No build step: lib/client.js is the final, directly mountable bundle.

License

BSD-3-Clause — use, modify and redistribute freely.