Preface

DeepSeek Harness (dsh) is an agent framework open-sourced by DeepSeek AI, powered by Cordis under the hood. Its official positioning is “Everything is a plugin”: model adapters, tools, sessions, sandboxes and interfaces can all be replaced or extended via plugins. It is currently in developer preview, and the interfaces will continue to change.

When actually using the Web UI, most people will not connect only one official interface. OpenAI-compatible gateways, OpenRouter, and custom中转 (proxies) often require connecting multiple providers at the same time. For each provider, you also need to fill in fields such as context window, maximum output, whether it supports image input, and how inference levels map to request parameters. These fields are scattered in the settings of llm-pi-ai, which is easy to miss when copying manually, and even easier to make mistakes when copying from the built-in directory.

dsh-provider-model-configurator does a very specific thing: it adds a “Model Pro” settings page, centrally lists the model entries of configured providers, supports viewing, creating, editing and deleting, and can also fill context parameters from pi-ai presets or other providers into the form, then write them back to the target provider.

Below is a collation after cross-checking the community directory page, GitHub repository README, package.json and source code: what it is, which fields can be modified, how to install it, and how to operate on the page.

What It Is

dsh-provider-model-configurator is a UI enhancement plugin for DSH Web UI, maintained by LiangYin233 under the MIT license. The repository is mainly written in JavaScript, with TypeScript client source code. As of 2026-08-17, it has 11 GitHub stars. The current release tag is v0.3.9, which is consistent with the version numbers in package.json and dsh.plugin.json.

The plugin is divided into two parts:
- Host: Mounts a remote service named modelConfigurator, reads model metadata from the built-in directory / configured providers, and writes explicit model entries into the llm-pi-ai settings namespace.
- Client: Registers the settings page as “Model Pro”, which appears after the Models page. The client platform declared in package.json is web.

It does not replace the provider creation process in the Models page. Providers must first be configured on the Models page before there is a writable target route for this page.

The DeepSeek Harness Plugin Repository that hosts this plugin is an independent community directory. The About page of the site clearly states that it has no official affiliation, endorsement or sponsorship relationship with DeepSeek or FunFound (幻方), and does not host plugin code. You can find the discovery channel through the directory, but you should still go back to GitHub to check the source code before installing.

Core Features

The repository README summarizes the capabilities into four sections, which are consistent with the settings page copy and Host writing logic in the source code.

List Model Entries by Provider

After opening “Model Pro”, first select a target provider. The page will list the explicitly created model entries under this route, with a one-line summary such as context window, maximum output, input modality, and inference level. Each entry can be clicked “Edit” to load the form, or “Delete” to immediately write the change to settings.

If the provider does not yet have an explicit model list, the page will prompt that it is still using the built-in directory, and list the model IDs from the directory in read-only mode. At this point, fill in the model ID below and click “Apply Configuration” to take a snapshot of the directory as an editable list.

If there are no configured providers, the page will prompt you to first create one on the Models page. Writing is not allowed when the settings are read-only.

Create and Edit Fields

At minimum, a model ID is required when creating a new entry. The remaining fields can be filled manually, or pre-filled from a preset before editing:
- Display Name
- Context Window, Maximum Output (both in tokens, must be positive integers to be written)
- Input Modality: text / image. You can also select “Inherit Directory (Unset)” to avoid writing unconfigured fields as explicit default values
- Inference Level: Three modes
- Unset (Inherit Directory)
- Non-reasoning model (set reasoningEfforts to false)
- Enable reasoning (fill in according to the level). The level names come from constants in the plugin: off, minimal, low, medium, high, xhigh, max. Each level corresponds to a wire value sent to the gateway; off leaves the field blank to not send the parameter

The README specifically notes: if the level name does not match the gateway’s expected values, you should modify the wire value according to the source model. For example, the minimal / low / medium levels of the DeepSeek series are often left blank. The source code will validate before applying: when enabling reasoning, there must be at least one non-off level, levels cannot be duplicated, and non-off levels must have a wire value filled in.

Quick Fill with Model Presets

Clicking “Use Model Preset” will open a source selector. The source can be the built-in llm-pi-ai directory, or another configured provider. After selecting a model, the page will read the model’s context window, maximum output, input modality and inference level, and confirm before filling them into the form.

This is the “one-click application” mentioned in the directory introduction: it does not modify the gateway account, but copies a known model configuration to the explicit entry of the target provider. Both the directory page and the README state that you no longer need to look up context length or maximum tokens elsewhere.

If the preset contains inference level IDs that the plugin does not recognize, the client will discard these levels instead of writing entries that the Host will reject. Modalities not supported by the current form, such as audio, will also remain “Unset” to avoid overwriting the original input field with a one-time application.

Compatibility Switches (compat)

For models that use openai-completions inference distribution, the form also provides two compatibility options:
- thinkingFormat: openai, deepseek, openrouter, together, zai, qwen, string-thinking, ant-ling
- supportsReasoningEffort: true / false / Unset

When unset, it inherits the directory entry, and then automatically detects based on baseURL. The Chinese copy clearly states: only the openai-completions path will read these two switches.

Directory Snapshot

This is the easiest behavior to overlook during use, and the README separately writes it in a blockquote:
- For directory providers that have not yet explicitly configured a model list, the first time you create or apply, the plugin will write the entire current model list from the built-in directory as explicit entries for the provider (existing IDs are updated in place, new IDs are appended). All subsequent edits will be based on this snapshot.
- Subsequent updates to the directory will not be automatically merged into the already snapshotted list.
- If a directory provider deletes all its explicit entries, it will revert to the built-in directory (unsnapshotted) state.
- For custom providers not in the built-in directory, you must keep at least one explicit model; the Host will reject writing if you delete all entries, to avoid setting schema validation failures.

If there is modelOverrides on the provider, it will be merged into the explicit list when applying, and the override items will not be lost.

Installation and Activation

The installation command given on the community directory page is as follows, run it in the DeepSeek Harness terminal:

dsh plugin add github:LiangYin233/dsh-provider-model-configurator

The directory page also reminds that for reproducible installation, you should fix the commit hash by adding #commit after the repository name. The commit corresponding to the current v0.3.9 tag of the repository is 70f88112c7d92fadeb93e46f5dcb8b1f3ae6eba3.

The GitHub README has more complete instructions for Web configuration, specifying the web profile and pinning to v0.3.9:

# Install from GitHub (recommended by README)
dsh plugin --profile web add github:LiangYin233/dsh-provider-model-configurator#v0.3.9

# Or install from GitHub tarball
dsh plugin --profile web add https://github.com/LiangYin233/dsh-provider-model-configurator/archive/refs/tags/v0.3.9.tar.gz

The client platform is declared as web, so installing it on the headless profile will not have a corresponding interface. package.json requires Node.js ^22.19 || >=24, which is consistent with the current DSH runtime environment.

After installation, you need to restart the Web server and refresh the page, then open Settings → “Model Pro” in the left navigation bar (after the Models page).

Both the directory page and the official plugin security note state: the plugin runs with the permissions of the current dsh process, and may execute code during installation. You should check the source code repository and license before installing.

Typical Usage

Below is a reproducible walkthrough based on the README and settings page copy. The premise is that you can already open the DSH Web UI locally (the official repository’s startup method is npx @deepseek-ai/dsh web, defaulting to http://127.0.0.1:3080), and have configured at least one llm-pi-ai provider on the Models page.

  1. Open Settings and enter “Model Pro”.
  2. Select a configured route from the “Target Provider” dropdown. If the route still shows “Using Built-in Directory”, first check the read-only directory model list; the first application will turn the entire directory into explicit entries.
  3. If you only need to modify an existing entry: click “Edit” in the list, modify the context window, maximum output, modality or inference level, then click “Apply Configuration”. When overwriting an existing model ID, a confirmation box will pop up.
  4. If you want to copy parameters from the directory: click “Use Model Preset”, select the preset provider and model, check the context / maximum output / modality / inference level, click “Use This Source”, modify the model ID or wire value as needed, and finally apply.
  5. If you are using openai-completions and the inference parameter format does not match the directory, open the compatibility options and set thinkingFormat or supportsReasoningEffort. Keep “Unset” if you do not need to modify them.
  6. Deleting an explicit entry will write the change immediately. Deleting all entries for a directory provider will revert it to the built-in directory; do not delete the last remaining entry for a custom provider.

After a successful application, the page will prompt that the Models page will refresh automatically. Afterwards, when selecting a model in a session, the explicit configuration written to llm-pi-ai will be used.

Applicable Scenarios and Notes

It is suitable for these situations:
- The same set of models needs to appear on multiple compatible providers, and you do not want to manually fill in context and maximum output item by item
- The model ID of a custom proxy does not match the directory, but the context and inference level can reuse a preset
- You need to explicitly turn off reasoning, or map high / max to the wire values actually accepted by the gateway
- You want to centrally view the落地 model entries of each provider in the Web UI, instead of directly modifying the configuration file

Before using it, you need to accept these boundaries:
- This is a Web UI plugin, not a command-line model manager, and it does not help you apply for an API Key.
- The first write to a directory provider is equivalent to taking a snapshot. After the official directory updates new models later, they will not automatically appear in this list, and you need to add them yourself or wait until it reverts to the directory state before taking a new snapshot.
- The compatibility switches only work for openai-completions inference distribution; modifying these two fields on other protocol paths will not have the effect described in the README.
- Input modalities currently only support editing text and image.
- DeepSeek Harness is still in developer preview, and the setting schemas and TypeScript services that the plugin depends on may also change. For reproducible installation, pin the tag or commit, instead of long-tracking the floating default branch.
- The plugin runs with the permissions of the current dsh process. The MIT license allows free use and modification, but does not equal exemption from inspection; you should read the repository source code and LICENSE before installing.

Summary

dsh-provider-model-configurator collects those easy-to-mistake model fields in llm-pi-ai into the “Model Pro” settings page: the list can be viewed and modified, presets can be copied, and inference levels and compatibility switches can also be clearly configured. It solves repetitive configuration work, not replacing models with stronger ones.

Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-provider-model-configurator/

GitHub: https://github.com/LiangYin233/dsh-provider-model-configurator