Skip to content
dsh.fish
Bundle

dsh-model-search

Adds a search box to the DSH Web GUI model switcher (the composer model seat), filtering the provider-grouped model list by model name / id / provider while preserving the official selection behavior and reasoning-effort picker.

Source
HeathHe
License
MIT
Updated
Updated 2 days ago

Readme

# dsh-model-search

<p align="center">
  <a href="https://www.npmjs.com/package/dsh-model-search"><img alt="npm version" src="https://img.shields.io/npm/v/dsh-model-search?label=npm&color=blue"></a>
  <a href="https://www.npmjs.com/package/dsh-model-search"><img alt="monthly downloads" src="https://img.shields.io/npm/dm/dsh-model-search?label=%E6%9C%88%E4%B8%8B%E8%BD%BD&color=brightgreen"></a>
  <a href="https://github.com/HeathHe/dsh-model-search"><img alt="stars" src="https://img.shields.io/github/stars/HeathHe/dsh-model-search?style=social"></a>
  <a href="https://github.com/HeathHe/dsh-model-search/blob/main/LICENSE"><img alt="license" src="https://img.shields.io/github/license/HeathHe/dsh-model-search?color=orange"></a>
  <img alt="platform" src="https://img.shields.io/badge/platform-DeepSeek%20Harness%20Web-8A2BE2">
</p>

为 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) Web 界面的「模型切换」下拉(输入框右侧的模型座位)增加一个搜索框:在 provider 分组之上,按 **模型名 / 模型 id / provider 名** 即时过滤模型列表,其余官方交互全部保留。

Adds a search box to the [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) Web GUI model switcher (the composer model seat): filters the provider-grouped model list by **model name / id / provider** while preserving every official interaction.

---

## 使用 / Usage

### 安装 / Install

```sh
dsh plugin --profile web add dsh-model-search
```

装完重启 `dsh web`,输入框右侧的模型座位打开后顶部即出现搜索框。/ Restart `dsh web` afterwards; the search box appears at the top of the model panel.

安装指定版本 / Install a specific version:

```sh
dsh plugin --profile web add dsh-model-search@latest
```

### 升级 / Upgrade

```sh
dsh plugin --profile web add dsh-model-search@<新版本>
# 然后重启 dsh web
```

### 源码开发 / Development

```sh
dsh plugin --profile web add link:/绝对路径/到/dsh-model-search
```

### 重新构建 / Rebuild

`lib/client.js` 由 `lib/build.mjs` 从官方 `@deepseek-ai/dsh-client-ui-model-selection` 浏览器产物打补丁生成:

```sh
npm run build   # 即 node lib/build.mjs
```

打补丁锚点全部做了「唯一性 + 恰好出现一次」校验,官方包升级导致锚点漂移时构建会报错而不是静默失效。

---

## 功能 / Features

- **顶部搜索框** — 打开模型面板即出现,按空格分词、大小写不敏感,同时匹配模型名 / 模型 id / provider 名
- **分组收起** — 没有命中的 provider 分组自动隐藏
- **空结果区分** — 无匹配显示「没有匹配的模型」,真正无模型时才显示「没有可用的模型」
- **键盘导航** — 搜索框内 ↑↓ 直接跳到过滤结果首/末项;选择后自动清空搜索词
- **交互保留** — 推理等级选择、当前项勾选、加载/错误状态、toast 全部沿用官方实现

> ⚠️ **重要说明**:本插件通过 `cordis.patch.yml` **替换**官方模型选择组件(`@deepseek-ai/dsh-client-ui-model-selection`),而非叠加增强。DeepSeek Harness 升级后若官方组件发生变化,可能导致本插件失效——届时需重新构建(`npm run build`)并更新插件。

### 已知局限 / Known Limitations

- **依赖上游版本**:`lib/client.js` 从 `@deepseek-ai/dsh-client-ui-model-selection` 的特定版本打补丁生成。上游升级后,构建脚本的锚点可能漂移,需人工适配。
- **键盘覆盖**:搜索框内的 `↑`/`↓` 跳转到过滤结果首/末项,可能覆盖官方原有的某些键盘行为。
- **空格分词**:模型名或 provider 名中若含空格,以空格分词搜索时可能产生意外匹配。

---

## 许可 / License

MIT · `lib/client.js` 衍生自 `@deepseek-ai/dsh-client-ui-model-selection`,详见 `NOTICE` / `LICENSE`。

Install

dsh plugin --profile web add github:HeathHe/dsh-model-search

Profile: web

  • 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.
Source