In the DeepSeek Harness workflow, subagents typically inherit routing from the parent agent. Without explicit configuration, this can lead to unpredictable model usage. This plugin provides a minimal, opinionated approach by enforcing the selected model and reasoning effort at the next step rather than after the turn ends, ensuring subagents always run with the chosen configuration.

Core Features

  1. Enforced model selection: Subagents must specify the model parameter. Agent Teams’ spawn_teammate has no model parameter, so it uses the first concrete route in the allow list. Whether or not enforcement is configured, subagents do not silently inherit the conversation model.
  2. Enforced reasoning effort: Reasoning effort is set per route and is determined by you, not by the delegating agent. The delegating agent has no effort parameter and cannot inherit your setting.
  3. Reject invalid effort: Before making any provider call, the configured effort is validated against the set supported by the model, avoiding resource waste on invalid configurations.
  4. Steer running subagents: It joins the current in-progress turn rather than waiting for the next turn. This means corrections to running tasks can arrive at the next step instead of being delayed until the turn ends.
  5. Display routes in the log: Every subagent invocation renders the model it ran on, making it easier to audit in session logs.
  6. UI-configurable: In Settings -> Plugins, you can configure routes and dropdown lists, whose options come from the actual supported range of each model.

Installation

Install the plugin via command line. This mounts the settings namespace for the managed allow list, but does not register tools.

dsh plugin --profile web add /path/to/dsh-subagent-model

After installation, plugin behavior is identical to the built-in tools until you edit the allow list.

Configuration

Configure via UI

Go to Settings → Plugins → Subagent model in DeepSeek Harness. The card lists allowed routes, and each route has a dropdown for selecting reasoning effort. Click “Add a route…” to choose from the model catalog.

Note: Edits are staged locally and take effect after clicking Save.

Configure via YAML

Define in ~/.dsh/settings.yaml:

dsh-subagent-model:
  routes:
    - kiro/claude-opus-5
    - deepseek/deepseek-chat
    # - inherit/current  # 移除此行以禁止继承对话的模型
  efforts:
    kiro/claude-opus-5: high
    deepseek/deepseek-chat: provider/default
  • routes: allow list, format provider/model-id, including an optional inherit/current entry.
  • efforts: specify the reasoning effort for each route.

Typical Usage

This plugin replaces tool lines in agent presets. You need to create a local copy for editing; do not modify the installed preset directly (it will be overwritten during upgrades).

Edit ~/.dsh/.agent-presets/<your-id>/agent.cordis.yml and replace the following two delegation lines (for example, preset name ptc):

    - id: tool-subagent
      name: dsh-subagent-model/spawn
      config:
        provider: spawn
        toolName: subagent
        backgroundMode: continuable
        maxDepth: 1
        toolFilter:
          deny: [subagent, subagent_fork]

    - id: tool-subagent-fork
      name: dsh-subagent-model/spawn
      config:
        provider: fork
        toolName: subagent_fork
        backgroundMode: continuable
        maxDepth: 1
        toolFilter:
          deny: [subagent, subagent_fork]

Select the local preset to start a new session. Verify that the tool schema now requires model and enumerates the configured routes.

Notes

  • Default behavior: On installation, the seeded allow list includes inherit/current, so brand-new installations behave identically to the built-in tools. Routing is enforced only after removing this entry.
  • maxDepth limit: maxDepth is an absolute cap per spawn (root depth is 0), not inherited ceilings. A subagent can bypass the parent’s limit through a different front end with a larger maxDepth.
  • Prevent bypass: Use toolFilter in each subagent to deny subagent and subagent_fork, preventing subagents from creating deeper delegations.
  • Edit mechanics: Configuration edits are staged locally and committed after saving under a revision-fenced settings scope, without affecting running agents.

Ecosystem Context

The ecosystem philosophy of DeepSeek Harness is “everything is a plugin.” This plugin is maintained by community developer dat-lequoc and follows the MIT license. The plugin catalog and GitHub repository are available here: Catalog | GitHub