dshbase

插件目录 / Developer / dsh-better-model-picker

dsh-better-model-picker

已验证 · 实测可装 taot

✓ 持续维护

查看 GitHub ↗ ← 返回插件目录

0Stars
0Forks
0未关闭 issue
—语言
2026-08-19最近推送
跨平台平台

功能简介

A better model picker for Deepseek Harness

✅
我们的评价
可用 — 实测通过,早期项目

A better model picker for Deepseek Harness 实测能干净安装、正常启动。早期项目,但功能可用。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

README

dsh-better-model-picker

An installable bundle for the DeepSeek Harness (DSH) Web GUI that replaces
the composer's model selector with an upgraded version. It shares the session's
model directory, so models picked here stay in sync with the /model popup.

Features

  • Filter — a text box that narrows the model list as you type, using
    space-separated terms.
  • Star-pin — an ☆/★ toggle on each model. Starred models stay pinned to the
    top under a "Starred" section with their provider headings, and persist
    across refresh and restart.

Install

pnpm install && pnpm run build      # produces lib/index.js + lib/client.js
dsh plugin --profile web add /path/to/dsh-better-model-picker

Then restart Deepseek Harness. dsh plugin add does both halves of the job because
this package declares dsh.bundle.patch: pnpm links it into the profile, and
the CLI appends it to that profile's dsh.profile.bundles layer stack. It is
the bundle's own cordis.patch.yml that inserts the plugin row.

Adding or removing the plugin only takes effect after restarting DeepSeek
Harness. The bundle layer is read at boot, so any change to the profile's
plugin set requires the harness process to be restarted before the new
configuration is reflected in the Web GUI.

Verify it landed without booting:

dsh --profile web --dump-config | grep -A2 better-model-picker

Uninstall

dsh plugin --profile web remove dsh-better-model-picker

As with installation, removal only takes effect after restarting DeepSeek
Harness.

Publish

prepare is intentionally omitted; run pnpm pack after pnpm run build to
ship prebuilt artifacts, or publish to a registry with lib/ built. Consumers
then need no build step:

dsh plugin --profile web add dsh-better-model-picker              # registry
dsh plugin --profile web add ./dsh-better-model-picker-0.1.0.tgz  # tarball

How it works

  • A bundle ships a configuration layer (dsh.bundle.patch →
    cordis.patch.yml). A profile listing this package in dsh.profile.bundles
    applies that layer.
  • One row serves as both halves. The loader mounts main (lib/index.js) as
    the host half (a no-op: selection rides the shipped session RPCs). The
    client-modules node half scans loader entries for packages declaring
    dsh.client and serves this one's browser bundle at
    /plugins/dsh-better-model-picker/client.js.
  • The client half registers as the occupant of the conversation.input.model
    slot at priority: -1, shadowing the shipped ui-model-selection entry
    without disabling it. The shipped plugin keeps owning the /model popup
    and the model locale namespace, and both surfaces share one directory
    service (ctx.modelDirectories).

No web-shell rebuild is needed: plugin bundles are served per package from
lib/client.js and reach the page through window.__DSH_BOOT__ at boot.

Build

pnpm run build        # tsdown -> lib/index.js (ESM) + lib/client.js (CJS browser)
pnpm run typecheck    # optional; see tsconfig.json paths (needs a harness checkout)

The browser artifact is a CJS body wrapped in the
window.__ModuleLoader__.load({ id, factory }) closure the client module
system expects. react and the other shell-owned platform modules stay
external so the plugin shares the page's single React instance; everything else
is bundled. CSS Modules are inlined by lightningcss and inject a
<style data-plugin> tag at factory execution.

Layout

dsh-better-model-picker/
├── package.json                    # dsh.bundle (layer) + dsh.client (browser roster)
├── cordis.patch.yml                # the layer: inserts the plugin row
├── tsdown.config.ts                # both build faces
├── tsconfig.json                   # opt-in typecheck only
└── src/
    ├── index.ts                    # host half (no-op)
    └── client/
        ├── index.ts                # plugin body + slot registration
        ├── slots.ts                # ModelSelectInjected face
        ├── FilteredModelSelect.tsx # the component
        ├── FilteredModelSelect.module.css
        └── css-modules.d.ts

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-better-model-picker」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:taot/dsh-better-model-picker

Headless(CLI)profile:

dsh plugin --profile headless add github:taot/dsh-better-model-picker

实测报告

验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

Developer 里更多

浏览全部 7819 个插件 →