Back to home

u9521

dsh-subagent-custom-model

Subagent custom model configuration plugin for DeepSeek Harness

Stars
0
Language
TypeScript
Created
Aug 17, 2026
Updated
Aug 17, 2026

Introduction

dsh-subagent-custom-model

English | 中文

Dynamic subagent model and reasoning effort configuration plugin for DeepSeek Harness (DSH) Web GUI.

Configure language models (Provider / Model) and reasoning effort levels used by subagents (subagent, subagent_fork, workflow, etc.) per-session or globally directly from the Web GUI with immediate effect.


Table of Contents


Features

  • Sidebar Quick Access: Located directly above "Settings" in the sidebar footer; displays real-time status badges (Default, Inherit, or <model-name>) and opens the config modal with one click.
  • Three Flexible Modes:
    • Use Global Default: Apply the global subagent rules without per-session overrides.
    • Follow Parent Session: Subagents inherit the exact model and reasoning effort from the current session.
    • Specify Custom Model: Independently assign Provider, Model, and Reasoning Effort for subagents in the current session.
  • Instant Effect: Applies immediately to new subagent requests without restarting DSH or reloading the page.

Usage Guide

1. Opening the Configuration Dialog

In the DeepSeek Harness Web GUI, locate the "Subagent Models" button at the bottom of the left sidebar (directly above "Settings"). Click it to open the configuration dialog for the active session.

The top of the dialog displays:

  • Scope: The title of the session currently being configured (or Global Default).
  • Effective Configuration: The exact model, provider, and reasoning effort currently in effect.
  • Status Badge: Default (inheriting global default), Inherit (following parent session), or Custom (custom model selected).

2. Configuration Modes Explained

ModeRecommended Use CaseDescription
Use Global Default ConfigStandard sessionsAdopts the global default rule; automatically syncs whenever the global default is updated.
Follow Current Parent Session ModelMain model changes frequentlySubagents unconditionally mirror the parent session's Provider, Model, and reasoning effort.
Specify Custom Subagent ModelFine-tuned sub-task routingManually specify a Model Provider, Model Name, and optional Reasoning Effort.

Steps for Custom Model Configuration:

  1. Select the "Specify Custom Subagent Model" radio option.
  2. In the Model Provider dropdown, select your desired provider (e.g. deepseek, openai, anthropic, google, etc.).
  3. In the Model Name dropdown, select the specific model.
  4. If the selected model supports reasoning effort adjustments, a Reasoning Effort dropdown will appear. Choose your preferred effort level (e.g., high, medium, low, etc.).

3. Saving & Setting as Global Default

  • Save for Session:
    • Click "Save Configuration / Save for Session".
    • The configuration applies immediately to the current session and takes effect on any upcoming subagent or workflow delegations.
  • Set as Global Default:
    • If you wish to make the current selection the default for all future sessions, click "Set as Global Default".
    • This updates the global default configuration and automatically clears the session's individual override.

4. Resetting Session Overrides

If a session has a custom override configured, a "Clear Override (Use Global Default)" button will be displayed. Clicking this reverts the session back to following the global default settings.


Installation

🚀 One-Line Quick Install (Recommended)

This repository includes a GitHub Actions workflow that automatically builds and deploys a minimal release to the dist branch (containing built artifacts and manifests without raw source bloat).

You can install this plugin with a single command without any local build step:

dsh plugin --profile web add github:u9521/dsh-subagent-custom-model#dist

Note: After installation, start or restart the Web service:

dsh web

Installation from Source (For Developers)

Follow the step-by-step instructions below to build and install this plugin from source into your DeepSeek Harness environment.

Prerequisites

Ensure the following tools are installed on your system:

  • Node.js: ^22.19.0 or >=24.0.0
  • pnpm: pnpm >= 9.x
  • DeepSeek Harness: dsh CLI (>= 0.1.0-rc.6)

Verify your environment:

node -v
pnpm -v
dsh --version

Step 1: Obtain the Source Code

Clone or download the plugin repository to your local machine (recommended location: ~/.dsh/plugins/):

# Create and navigate to the plugin directory
mkdir -p ~/.dsh/plugins
cd ~/.dsh/plugins

# Clone the repository (or copy the source code)
git clone https://github.com/u9521/dsh-subagent-custom-model.git
cd dsh-subagent-custom-model

Step 2: Install Dependencies

Install required build and runtime dependencies using pnpm:

pnpm install

Note: The official DSH client bundling preset is vendored directly under external/deepseek-harness/packages/client/. No external DSH checkout is required.

Step 3: Build the Plugin

Compile the TypeScript source code and bundle the Host plugin and Web Client artifacts:

pnpm run build

Upon a successful build, the lib/ directory will be generated:

  • lib/index.js: Host plugin runtime entry (ESM)
  • lib/client.js: Web client UI bundle (CJS)
  • lib/types/: TypeScript type declarations

To run a type check without emitting files:

pnpm run check

Step 4: Register to DSH Web Profile

Use the dsh plugin CLI command to add the plugin to the web profile:

# Run from within the plugin directory:
dsh plugin --profile web add .

Alternatively, register using an absolute path:

dsh plugin --profile web add ~/.dsh/plugins/dsh-subagent-custom-model

Verify Installation

List the plugins in the web profile to verify that @local/dsh-subagent-custom-model is registered:

dsh plugin --profile web list

Step 5: Start and Verify

Start (or restart) the DSH Web service:

dsh web

Open your browser and navigate to the Web GUI (typically http://localhost:3080). You should see the "Subagent Models" button and status badge in the sidebar footer.


Development & Maintenance Commands

CommandDescription
pnpm run buildFull build (runs tsc type check + generates lib/ bundles)
pnpm run checkType check only (tsc --noEmit) without emitting files
pnpm run fmtFormat source code and configuration files with Prettier
pnpm run fmt:checkCheck code formatting compliance
pnpm run syncSync vendored DSH client bundle preset from upstream (--check or --yes)

Configuration Storage Format

Configuration is stored in ~/.dsh/storages/subagent_model.json. Example structure:

{
  "default": {
    "mode": "custom",
    "provider": "deepseek",
    "model": "deepseek-chat"
  },
  "sessions": {
    "session-uuid-1": {
      "mode": "inherit"
    },
    "session-uuid-2": {
      "mode": "custom",
      "provider": "openai",
      "model": "gpt-4o-mini",
      "reasoningEffort": "medium"
    }
  }
}
  • default: The global fallback configuration (inherit or custom).
  • sessions: Map of per-session overrides by session ID. Sessions set to default or unlisted will follow the global default.

Frequently Asked Questions (FAQ)

Q1: Why is the Reasoning Effort selector not showing for certain models?

A: The Reasoning Effort selector only renders when the chosen model explicitly exposes reasoning capability options in its metadata (reasoning.efforts). For standard chat-only models without reasoning configurations, this selector remains hidden.

Q2: Do I need to restart dsh web after updating model settings?

A: No. The host plugin intercepts requests dynamically at runtime. As soon as you save the settings in the Web GUI, they take effect on the very next subagent invocation.

Q3: How do I uninstall or remove the plugin?

A: Remove it anytime using the DSH CLI:

dsh plugin --profile web remove @local/dsh-subagent-custom-model

License

This project is licensed under the MIT License.