In the agent development workflow, in addition to configuring the model list and context window, controlling reasoning behavior (reasoningEfforts) and adapting compatibility for different gateways often require extra configuration steps. The official settings page has gaps when handling these fine-grained controls. This plugin mounts itself into DSH’s official extension slot and provides an independent settings page for llm-pi-ai providers, used to configure per-model thinking effort levels, request headers, and gateway compatibility switches.
Plugin Positioning¶
This is a DeepSeek Harness (DSH) web plugin, mainly solving the following problems:
- Fine-grained reasoning control: Set reasoning effort (
reasoningEfforts) individually for each model, supporting unset, disabled, standard levels, or custom levels. - Batch configuration: Support provider-level one-click “standard level” deployment, uniformly adjusting all models under a provider.
- Request header management: Allow adding static custom HTTP request headers for a specific provider.
- Gateway adaptation: Provide compatibility switches (
compat) to resolve gateway errors or field mismatch issues.
The plugin does not store persistent data by itself. All configurations are written through the official settings.mutate into the profile’s cordis.patch.yml, with the data owner being the llm-pi-ai namespace.
Installation and Enabling¶
Installing this plugin requires specifying a 40-character commit hash (it is recommended to use git ls-remote to obtain the hash of the default branch).
dsh plugin --profile web add github:fuzz1og/dsh-model-capabilities#<40位commit>
After installation, you must restart the web profile for the configuration to take effect. The plugin supports installation in headless or tui profiles, but only provides a UI for the web profile.
Usage Steps¶
-
Enter the configuration page
After installation and restart, a new “Model Capabilities” page appears belowModelsin the DSH settings sidebar. This page is mounted at the official extension slotid: model-capabilities, order: 16. -
Configure providers and models
The left list displays allllm-pi-aiproviders. Click the “standard level” button on the right side of a provider name to uniformly set the thinking effort of all models under that provider to the standard level and save it. -
Set model-level reasoning effort
Expand the specific model row and select the reasoning effort from the dropdown menu:- Unset: Do not interfere with the default behavior.
- Disabled: Explicitly mark it as not supporting reasoning.
- Standard level: Apply the preset standard level (
off,low,medium,high,max). - Custom: Manually specify the parameter value (for example, map
maxtoultra).
-
Add custom request headers
Expand the model’s “request headers” area, click add, and enter the name and fixed value. For example, some gateways require thex-opencode-sessionheader; a fixed value must be entered here (the plugin does not support dynamic placeholders). -
Adjust compatibility settings
In the provider configuration, expand “compatibility settings” and adjust boolean switches or enum values according to the gateway documentation. For example, changemaxTokensFieldtomax_tokens, or change thedeveloperrole tosystemto resolve a 400 error.
Notes¶
- DSH version requirement: The plugin depends on DSH
>= 0.1.7-alpha.1. - Data ownership: The plugin has no persistent data of its own. All read and write operations are performed under the
llm-pi-ainamespace, using the official revision fence to prevent conflicts. - Modality editing limitations: The plugin does not edit supported modalities (
input), which are managed by the official Models page. The plugin only reads the relevant fields. - Session header limitations: Custom headers such as
x-opencode-sessionmust have fixed values and do not support dynamic rotation. - Write mechanism: Per-model saving uses path-level operations (
providers.<route>.models[i].reasoningEfforts) and does not replace the entire model list, so it will not overwrite the modality settings maintained by the official page.